LinkedIn Godmode
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LinkedIn GodmodeOpen my LinkedIn feed and capture the first 10 posts as text"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LinkedIn Godmode is a Codex plugin, npm CLI, and MCP stdio server that gives an agent broad generic browser and HTTP primitives for operating a personal LinkedIn session. The caller supplies URLs, locators, JavaScript, HTTP endpoints, payloads, and explicit task prompts—the package does not encode LinkedIn business actions or mutable private endpoints.
The same TypeScript core powers MCP, one-shot CLI commands, JSON runs, and JSONL batches. Deterministic browser and HTTP operations do not call an AI model. browser_task is the only AI-capable operation and runs only when explicitly invoked.
See the MCP workflow
Related MCP server: LinkedIn Buddy
Requirements
Node.js 20.11 or newer
Playwright Chromium, installed explicitly with the package-owned
install-browsercommandFor cloud providers, the corresponding environment variables
A LinkedIn account you are authorized to operate
Quick start
Install from npm and run the environment doctor:
npm install --global linkedin-godmode@0.1.1
linkedin-godmode install-browser
linkedin-godmode doctorFrom this source checkout:
npm ci
npm run build
npm link
linkedin-godmode install-browser
linkedin-godmode doctorRun without a global install:
npx -y linkedin-godmode@0.1.1 install-browser
npx -y linkedin-godmode@0.1.1 doctorinstall-browser runs the Chromium installer bundled with this exact package version. Optional upstream flags must follow --, for example linkedin-godmode install-browser -- --dry-run.
Codex MCP installation
The packaged Codex plugin declares .mcp.json and five skills. For direct Codex CLI use, install the npm MCP server:
npx -y linkedin-godmode@0.1.1 install-browser
codex mcp add linkedin-godmode -- npx -y linkedin-godmode@0.1.1 mcpFor a source checkout:
codex mcp add linkedin-godmode -- node /absolute/path/to/linkedin-godmode-plugin/dist/cli.js mcpEquivalent client configuration:
{
"mcpServers": {
"linkedin-godmode": {
"command": "npx",
"args": ["-y", "linkedin-godmode@0.1.1", "mcp"],
"env": {
"LINKEDIN_GODMODE_DEFAULT_PROVIDER": "local"
}
}
}
}Never place provider keys directly in a checked-in MCP configuration. Inherit them from the process environment or a secure secret manager.
Generic tool surface
Tool | Capability |
| Create/attach/list/status/close sessions; create/list/close pages |
| Goto, back, forward, reload |
| Generic CSS/role/text/label/placeholder/test-ID/XPath locator actions |
| Explicit caller-provided JavaScript with a JSON argument |
| Screenshot, HTML, accessibility snapshot, or visible text |
| Start/read/clear/stop bounded request/response capture; bodies opt in |
| Any valid HTTP method token with JSON/text/base64/URL-encoded/multipart bodies |
| Explicit Anchor or Browserbase hosted task call |
| Redacted runtime and provider readiness |
There are deliberately no tools named for messaging, jobs, invitations, reactions, posting, profiles, campaigns, or any other LinkedIn business action.
Providers
Provider | Best for | Connection | Persistence |
Local Chromium/Chrome | Personal, visible browser sessions | Playwright | Dedicated local profile |
Browserbase | Remote browser infrastructure | CDP | Browserbase Context |
Anchor Browser | Remote sessions and explicit web tasks | CDP + task API | Anchor profile |
Local Playwright persistent Chromium/Chrome
Local is the default and uses the package's Playwright Chromium build. Set LINKEDIN_GODMODE_CHROME_CHANNEL only when you intentionally want an installed Chrome channel. Each profile is stored under:
~/.local/state/linkedin-godmode/profiles/<profile>The directory is forced to mode 0700. It is a dedicated profile and is never your normal Chrome profile. For a manual login, start an interactive batch and leave its stdin open:
linkedin-godmode batch -Paste this line and press Enter:
{"id":"login","tool":"browser_session","arguments":{"operation":"create","sessionId":"personal","provider":"local","profile":"personal","headless":false,"initialUrl":"https://www.linkedin.com/"}}Log in in the open browser while the batch process continues waiting for another line. When finished, paste the following line, press Enter, then send EOF with Ctrl-D:
{"id":"close","tool":"browser_session","arguments":{"operation":"close","sessionId":"personal"}}A one-shot session command closes immediately after returning and therefore cannot host an interactive login. Persistent profiles retain cookies and other authenticated browser storage on disk, but the plugin does not separately export, log, or return them. Treat the entire profile directory as a credential, exclude it from sync/backups, and delete it when no longer needed.
Browserbase
export BROWSERBASE_API_KEY='...'
export BROWSERBASE_PROJECT_ID='...'The implementation pins official @browserbasehq/sdk 2.16.0, creates sessions with zero SDK retries, propagates configured allowed domains, and attaches Playwright through the returned CDP URL. keepAlive:true with no supplied context creates a Browserbase Context; supply a context ID through persistentRef or a non-secret config alias to reuse one. Closing an attached session disconnects this process without releasing the cloud session; pass terminate:true to browser_session close to terminate it explicitly. Sessions created by this process are owned and released on close.
Browserbase Agents/Runs support task, agentId, resultSchema, variables, and an optional persistent context. The current 2.16.0 run schema does not expose a caller-selected model/provider or step settings. Supplying those options returns typed UNSUPPORTED rather than silently ignoring them.
Anchor Browser
export ANCHOR_API_KEY='...'The implementation pins official anchorbrowser 1.0.0, calls Sessions.createSession/deleteSession, and connects Playwright over the provider CDP session. persistentRef is passed as the Anchor profile name with persistence enabled.
Explicit tasks call the official Tools.performWebTask endpoint. The caller may supply agent, providerName, model, maxSteps, element detection/highlighting, human intervention, a URL, and an output schema. Async calls return a workflow ID for browser_task status polling.
Anchor attachments follow the same lifecycle rule: local disconnect by default, explicit terminate:true to delete an attached cloud session, while owned sessions are deleted on close. Anchor and Browserbase code paths are covered with request-shape mocks. This release does not claim live cloud validation unless you run it with your own credentials and report the result.
Direct CLI and no-AI mode
Every one-shot command accepts one JSON object:
linkedin-godmode call doctor '{}'
linkedin-godmode session '{"operation":"list"}'
linkedin-godmode http '{"url":"https://example.com/","method":"GET","responseType":"text"}'Named aliases are session, http, navigate, act, evaluate, capture, network, and task.
Deterministic JSONL batch
batch reads one command per line and writes exactly one result per non-empty line. It processes lines sequentially in one process, so sessions and pages stay alive across steps. No AI is used unless a line explicitly names browser_task.
{"id":"open","tool":"browser_session","arguments":{"operation":"create","sessionId":"demo","provider":"local","profile":"demo","headless":true}}
{"id":"goto","tool":"browser_navigate","arguments":{"sessionId":"demo","operation":"goto","url":"https://example.com/"}}
{"id":"capture","tool":"browser_capture","arguments":{"sessionId":"demo","format":"text"}}
{"id":"close","tool":"browser_session","arguments":{"operation":"close","sessionId":"demo"}}linkedin-godmode batch commands.jsonl
# or
cat commands.jsonl | linkedin-godmode batch -run accepts the same command objects as an array or under {"steps": [...]} and emits one JSON array:
linkedin-godmode run commands.jsonBrowser examples
Create a page and use an accessible locator:
{"operation":"page_create","sessionId":"personal","url":"https://www.linkedin.com/"}{
"sessionId":"personal",
"action":"click",
"locator":{"kind":"role","value":"button","name":"Search"}
}Explicit evaluation executes the body of an async function. Use return for a result:
{"sessionId":"personal","source":"return { title: document.title, input: arg };","arg":{"source":"cli"}}Network capture omits bodies by default:
{"operation":"start","sessionId":"personal","includeBodies":false}Set includeBodies:true only for a narrow capture. Per-body, aggregate-byte, pending-work, and total-entry caps still apply; bodies with no trustworthy bounded size may be omitted, and cookie and authorization headers are removed.
HTTP and capture-first request replay
http_request uses a byte-capped streaming Node request. When sessionId is present, destination-scoped cookies are read from that browser context's cookie jar in memory and recomputed for every redirect hop. Literal Cookie headers are always rejected and raw cookies are never returned.
The optional LinkedIn preset is intentionally narrow:
{
"url":"https://www.linkedin.com/<captured-path>",
"method":"GET",
"sessionId":"personal",
"linkedinWebPreset":true,
"responseType":"json"
}It verifies a LinkedIn hostname, reads JSESSIONID from the browser context in memory, strips surrounding quotes, and adds csrf-token. It does not hardcode endpoints, query IDs, payloads, or decorations. Capture the current request in the browser, minimize it, replay it, and verify at the browser/API layer that actually matters.
Request bodies use one of:
{"type":"json","value":{"generic":"payload"}}
{"type":"text","value":"plain text"}
{"type":"base64","value":"AAEC"}
{"type":"form","fields":{"q":"value","tag":["one","two"]}}
{"type":"multipart","fields":{"title":"text"},"files":[{"field":"file","dataBase64":"AAEC","filename":"data.bin","contentType":"application/octet-stream"}]}Responses may be auto, json, text, base64, or none. Requests do not retry writes implicitly. Redirects are followed manually with host-policy checks on every hop.
Explicit provider task examples
Anchor with model selection:
{
"operation":"run",
"provider":"anchor",
"task":"Inspect the current page and return its main headings.",
"sessionId":"anchor-session",
"agent":"openai-cua",
"providerName":"openai",
"model":"gpt-5.4",
"maxSteps":20,
"resultSchema":{"type":"object","properties":{"headings":{"type":"array","items":{"type":"string"}}}}
}Browserbase managed run:
{
"operation":"run",
"provider":"browserbase",
"task":"Open the supplied public page and return its title.",
"resultSchema":{"type":"object","properties":{"title":{"type":"string"}}}
}No local model is installed or invoked. Provider tasks may consume provider credits and may perform page actions; invoke them only with an explicit reviewed prompt.
Configuration
Default config file:
~/.config/linkedin-godmode/config.jsonExample (non-secrets only):
{
"defaultProvider":"local",
"defaultSession":"personal",
"readOnly":false,
"hostAllowlist":["linkedin.com","*.linkedin.com"],
"timeoutMs":30000,
"maxOutputBytes":1000000,
"maxResponseBytes":1000000,
"aliases":{
"browserbaseContexts":{"personal":"non-secret-context-id"},
"anchorProfiles":{"personal":"linkedin-personal"}
},
"browserbase":{"projectId":"non-secret-project-id","region":"eu-central-1"},
"anchor":{"baseUrl":"https://api.anchorbrowser.io"}
}Environment overrides:
ANCHOR_API_KEY(also accepts the official SDK'sANCHORBROWSER_API_KEYfallback)BROWSERBASE_API_KEYBROWSERBASE_PROJECT_IDLINKEDIN_GODMODE_CONFIGLINKEDIN_GODMODE_STATE_DIRLINKEDIN_GODMODE_PROFILE_DIRLINKEDIN_GODMODE_DEFAULT_PROVIDERLINKEDIN_GODMODE_DEFAULT_SESSIONLINKEDIN_GODMODE_HEADLESSLINKEDIN_GODMODE_CHROME_CHANNELLINKEDIN_GODMODE_READ_ONLYLINKEDIN_GODMODE_HOST_ALLOWLIST(comma-separated)LINKEDIN_GODMODE_TIMEOUT_MSLINKEDIN_GODMODE_MAX_OUTPUT_BYTESLINKEDIN_GODMODE_MAX_RESPONSE_BYTESLINKEDIN_GODMODE_BROWSERBASE_BASE_URLLINKEDIN_GODMODE_ANCHOR_BASE_URL
Configuration files are strict and reject unknown keys. They contain aliases/defaults/IDs, never API keys, cookie values, authorization headers, or CDP URLs.
Security, safety, and Terms of Service
This tool can make account-visible changes when an agent invokes generic actions or mutating HTTP requests. LinkedIn may restrict automation and private web APIs under its Terms of Service, and automated behavior can trigger limits, challenges, account restrictions, or data-protection obligations. Use only on an account you control, at human-scale rates, with explicit intent and visible verification. Prefer supported official APIs where they meet the requirement.
This package does not provide campaign automation, schedulers, rate-evasion, challenge bypass, cookie-file import/export, or hidden autonomous loops. It does not solve CAPTCHAs locally. Cloud-provider capabilities are governed by their own services and your configuration.
Use LINKEDIN_GODMODE_READ_ONLY=1 for inspection. It blocks mutating HTTP methods, mutating locator actions, JavaScript evaluation, and hosted tasks. A host allowlist restricts browser main-frame routing (including links, popups, history/reload, initial/page creation, and redirects) plus every HTTP redirect. Read SECURITY.md and the bundled safety skill before production use.
Development and verification
npm ci
npm run build
npm test
npm audit
npm pack --dry-run
npm run test:consumerThe integration suite starts a local fixture server and a package Chromium instance, proves persistent local storage across profile reopen, and exercises navigation, actions, JavaScript, captures, network recording, HTTP, and teardown. It skips only when Playwright reports that no browser executable exists.
Publish to npm
Publish a new version only from the authoritative clean source repository. Confirm that the intended version is absent before publishing it:
npm login
npm whoami
npm view linkedin-godmode@<new-version> version
npm ci
npm run check
npm run test:package
npm run test:consumer
npm audit
npm pack --dry-run
npm publish --access publicAfter publication:
npx -y linkedin-godmode@0.1.1 install-browser
npx -y linkedin-godmode@0.1.1 doctor
npm view linkedin-godmode@0.1.1 dist.integrityDo not publish from a generated tarball, a parent monorepo, or a directory containing browser profiles or credentials.
Provider API evidence
Implementation was checked against official package source and docs on 2026-08-11:
Browserbase Node SDK 2.16.0: sessions, contexts, and Agents/Runs
Anchor Browser TypeScript SDK 1.0.0: sessions, CDP helper, and
Tools.performWebTaskModel Context Protocol TypeScript SDK 1.30.0
Playwright 1.62.1
Provider APIs evolve. The lockfile is authoritative for this release. Re-verify official SDK types and request-shape tests before upgrading.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceFully featured MCP server that provides automation tools for LinkedIn, supporting browser-based scraping and API-based operations for content management, media uploads, and reactions.63MIT
- Alicense-qualityDmaintenanceMCP server for LinkedIn automation that enables AI agents to perform LinkedIn actions (search, inbox, feed, jobs, etc.) safely with human-like evasion and two-phase commit preview.72MIT
- Alicense-qualityCmaintenanceMCP server for programmable LinkedIn automation via Playwright, offering 20 tools for profile management, messaging, feed interaction, and job searching through real browser automation.24MIT
- AlicenseBqualityCmaintenancePlaywright-powered MCP server for LinkedIn that automates jobs, profile edits, messaging, network actions, and feed posts using a real logged-in browser session.36Apache 2.0
Related MCP Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/samihalawa/linkedin-godmode-plugin'
If you have feedback or need assistance with the MCP directory API, please join our Discord server