linkedin-osint-cliCAUTION
LinkedIn CLI + MCP server: 43 platform commands plus a 13-command OSINT suite (company discovery, employee scraping, username generation, role classification, org charts). Interactive console, cookie-session auth, AI-agent native.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://github.com/gnmike57/linkedin-osint-cli/actions/workflows/ci.yml) [](./LICENSE)
Full LinkedIn platform management from your terminal. 43 platform commands (profiles, posts, messaging, connections, search, feed, engagement) plus an OSINT suite: company discovery, employee scraping, username generation, role classification, org charts, and email deanonymization — powered by cookie session auth.
Works as a CLI and an MCP server (for Claude Code, Cursor, Windsurf, and other AI agents). All 56 tools (43 platform + 13 OSINT) are exposed over MCP automatically, plus an interactive console for humans.
OSINT Suite
The osint command group ports the best of three legacy Python toolkits (legacy/python/) into the TypeScript engine — API-native, no browser needed:
46f3150a6376OBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add linkedincli --env GROQ_API_KEY=${GROQ_API_KEY} --env LINKEDIN_MS_TOKEN=${LINKEDIN_MS_TOKEN} --env LINKEDIN_PASSWORD=${LINKEDIN_PASSWORD} -- npx -y @bcharleson/[email protected]{
"mcpServers": {
"linkedincli": {
"command": "npx",
"args": [
"-y",
"@bcharleson/[email protected]"
],
"env": {
"GROQ_API_KEY": "${GROQ_API_KEY}",
"LINKEDIN_MS_TOKEN": "${LINKEDIN_MS_TOKEN}",
"LINKEDIN_PASSWORD": "${LINKEDIN_PASSWORD}"
}
}
}
}Exposed tools (1)
1 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
internal-pdf-viewer | read | Portable Document Format |
Trust audit
CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (6 observation(s))
- Network
- declared (6 observation(s))
- Shell
- declared (2 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (16)
session.verify = False
import type { CommandDefinition } from '../../core/types.js';import { saveConfig } from '../../core/config.js';import { createClient } from '../../core/client.js';import { output, outputError } from '../../core/output.js';import { resolveAuth, wantsFromChrome } from '../../core/auth.js';it('neutralizes non-http image URLs (data: exfiltration)', () => {f.write(base64.b64decode(b64_data))
selenium, webdriver-manager, python-dotenv, groq
@modelcontextprotocol/sdk, commander, zod, @types/node, tsup, tsx, typescript, vitest
legacy/python/linkedin-osint-toolkit-main/assets/logo.png
- You are a senior open-source intelligence (OSINT) analyst specializing in organizational mapping and corporate intelligence.
- You are a senior open-source intelligence (OSINT) analyst specializing in organizational mapping and corporate intelligence.
> **Note:** All scripts read `LINKEDIN_EMAIL` and `LINKEDIN_PASSWORD` from `.env` automatically. You can also pass `-e`/`-p` flags to override.
The individual scripts below can be used for more granular control. Each script that requires a browser session will start its own browser. Credentials are read from `.env` automatically; you can also
One-liner commands to test every stage of the OSINT funnel. All scripts read credentials from `.env` automatically -- no need for `-e`/`-p` flags if `LINKEDIN_EMAIL` and `LINKEDIN_PASSWORD` are set th
Gates applied: no_behavioural_pass.
46f3150a6376full audit observations/trust-audit/mcp-server/gnmike57__linkedin-osint-cli.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 46f3150a6376 | CAUTION | B | 89 | first audit |
Questions
What is the linkedin-osint-cli MCP server?
LinkedIn CLI + MCP server: 43 platform commands plus a 13-command OSINT suite (company discovery, employee scraping, username generation, role classification, org charts). Interactive console, cookie-session auth, AI-agent native.
What tools does linkedin-osint-cli expose?
1 in total: 1 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is linkedin-osint-cli safe to connect to an agent?
With care. The audit graded it B (89/100) and found 16 things worth knowing before you trust this server, listed below with the exact line each was found on.
What credentials does linkedin-osint-cli need?
It reads GROQ_API_KEY, LINKEDIN_MS_TOKEN and LINKEDIN_PASSWORD from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does linkedin-osint-cli run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as @bcharleson/linkedincli at 0.2.0.
How current is this page?
The grade is for one exact copy of the source (46f3150a6376), read on 2026-10-11. The repository is watched and re-audited when it changes.