Skip to main content
Glama
LinkedIn MCP Server

LinkedIn MCP Server

LinkedIn MCP Server

CI CodeQL PyPI Python 3.12–3.14 License: Apache-2.0 MCP Registry Glama OpenSSF Scorecard PyPI provenance Container provenance and SBOM

Disclaimer: LinkedIn is a registered trademark of LinkedIn Corporation and its affiliates. LinkedIn MCP Server is an independent, unofficial project and is not affiliated with, endorsed by, sponsored by, or associated with LinkedIn Corporation or its affiliates.

A LinkedIn MCP server to find jobs, search people, research companies, manage your network, publish and engage with posts, and read or send messages.

⚡ Quickstart

1. Connect Claude Code

claude mcp add --scope user --transport stdio linkedin-mcp -- \
  uvx --from linkedin-mcp-local linkedin-mcp serve --transport stdio

2. Sign in to LinkedIn

Restart Claude Code. A dedicated browser window opens automatically—sign in to LinkedIn and complete any required verification.

NOTE

Your session is saved locally and reused automatically.

Supported platforms

The server runs natively on Windows, macOS, and Linux. CI executes the complete offline suite on Windows, macOS, Linux x86-64, and Linux ARM64. Browser and OS version requirements follow the official Playwright Python system requirements.

3. Try your first request

Find remote software engineering jobs in India posted on LinkedIn this week.

Related MCP server: LinkedIn MCP Pro Max

🛠️ Tools

TIP

Verified means the tool passed an end-to-end live compatibility test against LinkedIn's visible web UI on the date shown.

Area

Function

MCP tool

LinkedIn UI compatibility

What it does

Jobs

Search jobs

linkedin.jobs.search

LinkedIn UI compatibilityCompatibility check date

Search by keywords, location, distance, date, workplace, experience, employment type, company, industry, function, title, benefits, Easy Apply, verification, applicant count, network, and other visible filters.

Read job details

linkedin.jobs.get

LinkedIn UI compatibilityCompatibility check date

Read the complete job description, company, application method, and visible hiring team.

People

Search people

linkedin.people.search

LinkedIn UI compatibilityCompatibility check date

Search by keywords, connection degree, hiring status, location, current or past company, title, school, industry, services, language, connections, and followers.

Read profiles

linkedin.people.get

LinkedIn UI compatibilityCompatibility check date

Read the complete visible profile or request selected sections such as About, experience, education, skills, projects, certifications, and recommendations.

Companies

Search companies

linkedin.companies.search

LinkedIn UI compatibilityCompatibility check date

Search by keywords, headquarters, industry, size, available jobs, and first-degree connections.

Read company details

linkedin.companies.get

LinkedIn UI compatibilityCompatibility check date

Read Overview and About information, including website, headquarters, size, type, founding year, and specialties.

Posts

Search posts

linkedin.posts.search

LinkedIn UI compatibilityCompatibility check date

Search by keywords, date, content type, author, company, relationship, mentions, author industry, and other visible filters.

Read posts

linkedin.posts.get

LinkedIn UI compatibilityCompatibility check date

Read complete content, media, links, mentions, hashtags, reactions, and engagement.

Read discussions

linkedin.posts.comments.list

LinkedIn UI compatibilityCompatibility check date

Read paginated comments, replies, attachments, and reactions.

Publish posts

linkedin.posts.create

LinkedIn UI compatibilityCompatibility check date

Publish supported personal text, link, image, video, document, poll, celebration, event, hiring, and expert-request posts.

Comment

linkedin.posts.comment

LinkedIn UI compatibilityCompatibility check date

Add text, links, emoji, mentions, photos, or GIFs to posts.

React

linkedin.posts.react

LinkedIn UI compatibilityCompatibility check date

Add, change, or remove reactions on posts.

Network

List connections

linkedin.connections.list

LinkedIn UI compatibilityCompatibility check date

Browse established first-degree connections with sorting and pagination.

Search connections

linkedin.connections.search

LinkedIn UI compatibilityCompatibility check date

Search existing connections using applicable People filters.

List invitations

linkedin.invitations.list

LinkedIn UI compatibilityCompatibility check date

Browse received and sent invitations using LinkedIn's visible filters.

Send invitations

linkedin.invitations.send

Not checked

Send connection requests with optional notes.

Accept invitations

linkedin.invitations.accept

Not checked

Accept incoming connection requests.

Ignore invitations

linkedin.invitations.ignore

Not checked

Ignore incoming connection requests.

Messaging

Search messages

linkedin.messaging.search

LinkedIn UI compatibilityCompatibility check date

Search by recipient or message text using inbox categories and filters.

Read conversations

linkedin.messaging.conversation.get

LinkedIn UI compatibilityCompatibility check date

Read message history, replies, edits, reactions, and attachments.

Send messages

linkedin.messaging.send

LinkedIn UI compatibilityCompatibility check date

Send or reply in one-to-one conversations with text, links, emoji, files, images, and GIFs.

Server

Check runtime

linkedin.server.status

LinkedIn UI compatibilityCompatibility check date

Inspect the shared runtime, queue, and active browser operation.

Check LinkedIn session

linkedin.session.status

LinkedIn UI compatibilityCompatibility check date

Inspect browser-profile, authentication, login, and pause state.

List capabilities

linkedin.capabilities.list

LinkedIn UI compatibilityCompatibility check date

Inspect available capabilities, versions, read/write effects, and required LinkedIn surfaces.

NOT CHECKED tools remain covered by the offline simulator on every pull request.

See the capability matrix for exact filters, supported formats, inputs, outputs, limits, and unsupported features.

📦 Installation

claude mcp add --scope user --transport stdio linkedin-mcp -- \
  uvx --from linkedin-mcp-local linkedin-mcp serve --transport stdio

Check it with claude mcp list. See the Claude Code MCP documentation.

Download for Claude Desktop

Download the .mcpb file, then open Settings → Extensions → Advanced settings → Install Extension. See Claude Desktop's extension documentation.

codex mcp add linkedin-mcp -- \
  uvx --from linkedin-mcp-local linkedin-mcp serve --transport stdio

Check it with codex mcp list. Codex CLI, the Codex IDE extension, and ChatGPT Desktop share this local configuration. Restart the client after adding it. See the Codex MCP documentation.

Install in VS Code Install in VS Code Insiders

Or add this to .vscode/mcp.json:

{
  "servers": {
    "linkedin-mcp": {
      "command": "uvx",
      "args": ["--from", "linkedin-mcp-local", "linkedin-mcp", "serve", "--transport", "stdio"]
    }
  }
}

See the VS Code MCP documentation.

Install in Cursor

For manual setup, open Cursor Settings → MCP → Add new MCP server, set the command to uvx, and set the arguments to --from linkedin-mcp-local linkedin-mcp serve --transport stdio. See the Cursor MCP documentation.

In ~/.gemini/settings.json, add a local server named linkedin-mcp under mcpServers with command uvx and arguments --from linkedin-mcp-local linkedin-mcp serve --transport stdio, then run gemini mcp list. See the Gemini CLI MCP documentation.

Open Settings → AI → Manage MCP Servers, or add a local server named linkedin-mcp to ~/.codeium/windsurf/mcp_config.json with command uvx and arguments --from linkedin-mcp-local linkedin-mcp serve --transport stdio. See the Windsurf MCP documentation.

Open MCP Servers → Configure, then add a local server named linkedin-mcp with command uvx and arguments --from linkedin-mcp-local linkedin-mcp serve --transport stdio. See the Cline MCP documentation.

Open Roo Code's MCP settings and add a local server named linkedin-mcp to the global file or .roo/mcp.json, using command uvx and arguments --from linkedin-mcp-local linkedin-mcp serve --transport stdio. See the Roo Code MCP documentation.

Add this to Zed settings:

{
  "context_servers": {
    "linkedin-mcp": {
      "command": "uvx",
      "args": ["--from", "linkedin-mcp-local", "linkedin-mcp", "serve", "--transport", "stdio"]
    }
  }
}

See the Zed MCP documentation.

Install in Goose

Or add a custom stdio extension with command uvx and arguments --from linkedin-mcp-local linkedin-mcp serve --transport stdio, or start one CLI session with:

goose session --with-extension \
  "uvx --from linkedin-mcp-local linkedin-mcp serve --transport stdio"

See the Goose documentation.

For OpenCode v2, add this to opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "servers": {
      "linkedin-mcp": {
        "type": "local",
        "command": ["uvx", "--from", "linkedin-mcp-local", "linkedin-mcp", "serve", "--transport", "stdio"]
      }
    }
  }
}

See the OpenCode MCP documentation.

Open Settings → Tools → AI Assistant → Model Context Protocol (MCP), click Add, set the command to uvx, and set the arguments to --from linkedin-mcp-local linkedin-mcp serve --transport stdio. See the JetBrains MCP documentation.

Create .continue/mcpServers/linkedin-mcp.json with a local server named linkedin-mcp, command uvx, and arguments --from linkedin-mcp-local linkedin-mcp serve --transport stdio. See the Continue MCP documentation.

Open Settings → AI → Manage MCP Servers → Add, name the server linkedin-mcp, set the command to uvx, and set the arguments to --from linkedin-mcp-local linkedin-mcp serve --transport stdio. See the Warp MCP documentation.

💡 Examples

Find jobs

Find remote software engineering jobs in India posted on LinkedIn this week with Easy Apply.

Research people

Find LinkedIn profiles for engineering managers at Stripe in India and show me their relevant experience.

Research companies

Find fintech companies in Bengaluru on LinkedIn with 51–200 employees and summarize each company.

Explore posts

Find recent LinkedIn posts about AI agents and summarize the most useful discussions.

Manage your network

Show my latest received connection requests on LinkedIn.
Send a LinkedIn connection request to <profile URL> with the note <note>.

Send messages

Send <message> on LinkedIn to <profile URL>.

🏗️ Architecture

[Claude | Codex | Cursor | ...]
               |
       stdio / loopback HTTP
               v
      [Typed MCP boundary]
               |
               v
       [Fair queue + pacing]
               |
      one operation at a time
               v
[Capability executor] ---> [Process-local calls, cursors, evidence]
               |
               v
      [Capability page objects]
               |
               v
[Browser manager: fresh page per call] <--> [Persistent auth profile]
               |
        visible web UI only
               v
           [LinkedIn]

Everything runs locally. There is no hosted backend, telemetry, database, external queue, LangGraph runtime, or credential service. Browser cookies live only in the local Playwright profile. The first client starts one shared local runtime; later clients attach to it, and fair scheduling gives each client a turn between complete tool calls. Operation state lasts only for that runtime. Read the full architecture and privacy policy.

🔒 Privacy Policy

The server has no maintainer-operated backend, analytics, advertising, or telemetry. LinkedIn receives normal visible-UI requests, and the invoking MCP client receives tool results under its own data policy; the project sends nothing to the maintainer. Read the complete privacy policy for processing, storage, sharing, retention, and deletion details.

🛡️ Safety

Use of this software is at your own risk. You are solely responsible for complying with LinkedIn's User Agreement, applicable laws, and third-party rights. LinkedIn may limit or restrict accounts that use prohibited automation. The maintainers do not authorize spam, unauthorized data collection, privacy violations, or circumvention of access controls.

  • Use only accounts and activity you are authorized to operate.

  • The server pauses on authentication expiry, checkpoints, restriction pages, permission failures, and configuration errors.

  • It does not implement CAPTCHA bypass, proxy rotation, fingerprint spoofing, credential harvesting, stealth plugins, or private LinkedIn endpoints.

  • Never commit or share the persistent browser profile or local assets.

See SECURITY.md and the security design.

📚 More documentation

❤️ Support the project

If LinkedIn MCP Server is useful to you:

🌐 Let's connect

Have feedback or an idea for LinkedIn MCP Server?

⚖️ License

Licensed under the Apache License 2.0.

Available Tools

31 tools
linkedin.capabilities.listList LinkedIn CapabilitiesA
Read-onlyIdempotent

List installed capabilities and whether runtime policy enables each one.

Inputs: no named parameters. Returns: capabilities

linkedin.companies.getRead LinkedIn Company Overview and AboutA
Read-onlyIdempotent

Read an exact visible LinkedIn Company by public slug. Always captures exactly the Company overview and About page, including identity, tagline, description, website, industry, company-size range, associated-member and follower counts, headquarters, organization type, founding year, specialties, and exact field evidence.

Inputs: context_id (required), request_id (required), company_slug (required). Returns: status, company, sources, replayed, +2 more

linkedin.companies.searchSearch LinkedIn CompaniesA
Read-onlyIdempotent

Search visible LinkedIn Company results using LinkedIn's complete current Company-search filter surface: keywords, headquarters location, industry, company-size range, visible job listings, and first-degree connection presence. Exact names are resolved only through visible filter controls; callers may alternatively provide stable facet IDs. Returns one cursor page.

Inputs: context_id (required), request_id (required), query, cursor, +3 more. Returns: status, sources, coverage, replayed, +4 more

linkedin.connections.listList LinkedIn ConnectionsA
Read-onlyIdempotent

List one cursor page of the configured account's visible first-degree connection inventory in LinkedIn's selected visible sort order. This tool does not search.

Inputs: context_id (required), request_id (required), cursor, sort_by, +2 more. Returns: status, sources, coverage, replayed, +4 more

linkedin.connections.searchSearch LinkedIn ConnectionsA
Read-onlyIdempotent

Search only the configured account's established first-degree connections through LinkedIn's current People surface. The server always enforces first degree. Supports the remaining current visible People filters: any/specific-title hiring, locations, current/past companies, connections-of, followers-of, schools, industries, profile languages, service categories, and first-name, last-name, title, company, and school keywords. Use linkedin.people.search for broader second-, third-plus-, or mixed-degree discovery.

Inputs: context_id (required), request_id (required), query, cursor, +4 more. Returns: People-shaped results from LinkedIn's broad Connections search entry point.

linkedin.invitations.accept.executeAccept Prepared LinkedIn Connection InvitationA
DestructiveIdempotent

Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Accept exactly one immutable incoming-request draft after the server verifies the preview, payload hash, draft expiry, idempotency, exact profile identity, and current request controls; then verify those controls are absent and the exact profile visibly shows a first-degree connection.

Inputs: action_id (required), context_id (required), request_id (required), payload_hash (required), +2 more. Returns: result, status, sources, replayed, +2 more

linkedin.invitations.accept.preparePrepare LinkedIn Connection AcceptanceA
Idempotent

Revalidate the exact member profile's paired visible incoming-request controls and create an immutable acceptance draft. This does not accept the request.

Inputs: context_id (required), request_id (required), profile_slug (required). Returns: draft, status, sources, replayed, +3 more

linkedin.invitations.ignore.executeIgnore Prepared LinkedIn Connection RequestA
DestructiveIdempotent

Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Ignore exactly one immutable incoming-request draft after the server verifies the preview, payload hash, draft expiry, idempotency, exact profile identity, and current request controls; then verify those controls are absent on a fresh exact-profile read.

Inputs: action_id (required), context_id (required), request_id (required), payload_hash (required), +2 more. Returns: result, status, sources, replayed, +2 more

linkedin.invitations.ignore.preparePrepare Ignoring a LinkedIn Connection RequestA
Idempotent

Revalidate the exact member profile's current visible incoming connection request and create an immutable ignore draft. This does not ignore the request.

Inputs: context_id (required), request_id (required), profile_slug (required). Returns: draft, status, sources, replayed, +3 more

linkedin.invitations.listList LinkedIn InvitationsA
Read-onlyIdempotent

Read one live cursor page from the current received or sent invitation inventory, including the deduplicated union of LinkedIn's current Focused, Other, Verified, Mutual Connections, Your Company, and Your School received views when invitation_filter is all. Continuations rescan a bounded live prefix, suppress stable identities already returned, and claim completion only after the selected visible counts reconcile.

Inputs: context_id (required), request_id (required), cursor, direction, +2 more. Returns: status, sources, coverage, replayed, +4 more

linkedin.invitations.send.executeSend Prepared LinkedIn Connection InvitationA
DestructiveIdempotent

Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Send exactly one immutable invitation draft after the server verifies the exact preview, payload hash, draft expiry, idempotency key, target identity, and actionable Send control. After the click, one fresh exact-profile read is the complete postcondition: Pending is verified success and Connect is verified LinkedIn failure. An unreadable or ambiguous fresh profile remains uncertain.

Inputs: action_id (required), context_id (required), request_id (required), payload_hash (required), +2 more. Returns: result, status, sources, replayed, +2 more

linkedin.invitations.send.preparePrepare LinkedIn Connection InvitationA
Idempotent

Inspect one exact visible profile and create an immutable invitation draft. This does not send the invitation. An optional personalized note is limited to 200 characters and returned with the exact client-approval preview.

Inputs: context_id (required), request_id (required), profile_slug (required), note. Returns: draft, status, sources, replayed, +3 more

linkedin.jobs.getRead LinkedIn JobA
Read-onlyIdempotent

Read one current visible LinkedIn job by numeric ID, including its primary header metadata, application method, hiring-team identities, and fully expanded About the job description.

Inputs: job_id (required), context_id (required), request_id (required). Returns: job, status, sources, replayed, +2 more

linkedin.jobs.searchSearch LinkedIn JobsA
Read-onlyIdempotent

Search current visible LinkedIn Jobs pages with optional keywords and typed location, Date posted, sorting, distance, workplace, experience, job type, company, industry, function, title, benefit, commitment, Easy Apply, verification, applicant-count, network, and Fair Chance filters. Hydrates LinkedIn's virtualized result cards and returns one deduplicated cursor page.

Inputs: context_id (required), request_id (required), query, cursor, +5 more. Returns: jobs, status, sources, coverage, +4 more

linkedin.messaging.conversation.getRead LinkedIn ConversationA
Idempotent

Traverse LinkedIn's reverse-virtualized visible history and read both incoming and outgoing messages, attachments, replies, edits, and reaction summaries by exact profile slug, visible conversation ID, or a conversation_ref returned by messaging.search. Returns explicit history completeness and truncation evidence. Opening a conversation may cause LinkedIn to mark it seen.

Inputs: context_id (required), request_id (required), max_messages, profile_slug, +2 more. Returns: status, sources, replayed, context_id, +2 more

linkedin.messaging.message.executeSend Prepared LinkedIn MessageA
DestructiveIdempotent

Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Send exactly one immutable text/file message or immediate-send GIF, optionally as an exact visible reply, after the server verifies the preview, payload and asset hashes, draft expiry, recipient, idempotency, and exact visible outgoing postcondition in the same conversation surface.

Inputs: action_id (required), context_id (required), request_id (required), payload_hash (required), +2 more. Returns: result, status, sources, replayed, +2 more

linkedin.messaging.message.preparePrepare LinkedIn MessageA
Idempotent

Open one visible one-to-one standard conversation, using the exact profile's Message button for profile targets and accepting its recipient-bound compact pane or following its exact visible Messaging href in the same operation page, then create an immutable message draft containing exact text/emoji, hash-locked current desktop file attachments, one exact KLIPY GIF title, and optionally an exact reply-to message_ref. This does not send the message. Group chats, message requests, and paid InMail are excluded.

Inputs: context_id (required), request_id (required), gif, message, +5 more. Returns: draft, status, sources, replayed, +3 more

linkedin.messaging.searchSearch LinkedIn MessagesA
Read-onlyIdempotent

Search the current desktop inbox by recipient or message keywords, optionally within Focused, Other, Archived, or Spam and exactly one of Jobs, Unread, Connections, InMail, or Starred. At least one search criterion is required. Results are cursor-paginated current conversation cards.

Inputs: context_id (required), request_id (required), query, cursor, +4 more. Returns: status, sources, coverage, replayed, +4 more

linkedin.people.getRead LinkedIn Member ProfileA
Read-onlyIdempotent

Read a visible LinkedIn member profile directly by validated public profile slug. Returns typed introduction, About, experience, education, every visible profile section owned by the member, full retained text, field evidence, and bounded section-page coverage.

Inputs: context_id (required), request_id (required), profile_slug (required), sections. Returns: person, status, sources, replayed, +2 more

linkedin.people.searchSearch LinkedIn PeopleA
Read-onlyIdempotent

Search visible LinkedIn People results using natural-language or Boolean keywords, connection degree, any/specific-title hiring, location, current/past company, connections-of, followers-of, school, industry, profile-language, service-category, and exact first-name, last-name, title, company, and school keyword filters. Returns one cursor page; name-to-ID resolution and traversal safety bounds remain private.

Inputs: context_id (required), request_id (required), query, cursor, +4 more. Returns: people, status, sources, coverage, +4 more

linkedin.posts.comment.executePublish Prepared LinkedIn CommentA
DestructiveIdempotent

Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Submit exactly one immutable personal-member top-level comment after the server verifies the preview, actor, target author, payload, local asset hash, expiry, and idempotency.

Inputs: action_id (required), context_id (required), request_id (required), payload_hash (required), +2 more. Returns: result, status, sources, replayed, +2 more

linkedin.posts.comment.preparePrepare LinkedIn CommentA
Idempotent

Inspect one exact visible post and prepare an immutable top-level personal-member comment. Supports text, links, emoji, exact member/company mentions, one local hash-locked photo, or one exact visible GIF result. This tool never submits.

Inputs: post_ref (required), context_id (required), request_id (required), text, +2 more. Returns: draft, status, sources, replayed, +3 more

linkedin.posts.comments.listRead LinkedIn Post DiscussionA
Read-onlyIdempotent

Read one cursor page of visible top-level comments and bounded nested replies, with relevant/recent ordering, stable comment references, exact author identities, visible text, timestamps, reaction/reply counts, and truncation coverage.

Inputs: post_ref (required), context_id (required), request_id (required), cursor, +4 more. Returns: status, sources, threads, coverage, +4 more

linkedin.posts.create.executePublish or Schedule Prepared Personal LinkedIn PostA
DestructiveIdempotent

Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Publish or schedule exactly one immutable personal-post draft after the server verifies the exact preview, payload and asset hashes, actor, expiry, options, and global idempotency key. An interrupted final action is never retried automatically.

Inputs: action_id (required), context_id (required), request_id (required), payload_hash (required), +2 more. Returns: result, status, sources, replayed, +2 more

linkedin.posts.create.preparePrepare Personal LinkedIn PostA
Idempotent

Inspect the active personal member composer and prepare one immutable post. Supports typed text/link, up to 20 edited photos with alt text and member/company tags, video with thumbnail/captions, document, poll, celebration, event, existing-job hiring, and expert-request content. Exact audience/group, comment control, brand partnership, eligible collaborators, mentions, local asset hashes, and optional schedule are captured. The content discriminator is mode, not kind. This tool never publishes and never publishes as a company Page.

Inputs: content (required), context_id (required), request_id (required), audience, +5 more. Returns: draft, status, sources, replayed, +3 more

linkedin.posts.getRead LinkedIn PostA
Read-onlyIdempotent

Read one exact visible LinkedIn post by stable activity, share, or ugc-post reference. Returns typed author/header data, fully expanded text, scoped links, mentions and hashtags, current image/video/document/link-card/poll details, viewer reaction and engagement counts, visibility, timestamps, immutable field evidence, and bounded completeness coverage. Reposts retain the wrapper and read the visibly linked original as one additional bounded page.

Inputs: post_ref (required), context_id (required), request_id (required). Returns: post, status, sources, replayed, +2 more

linkedin.posts.reaction.executeApply Prepared LinkedIn Post ReactionA
DestructiveIdempotent

Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Set, change, remove, or safely no-op one prepared exact reaction state after the server verifies the preview, actor, target author, prior state, expiry, and idempotency.

Inputs: action_id (required), context_id (required), request_id (required), payload_hash (required), +2 more. Returns: result, status, sources, replayed, +2 more

linkedin.posts.reaction.preparePrepare LinkedIn Post ReactionA
Idempotent

Inspect the exact current reaction state on one visible post and prepare an immutable target state: none, like, celebrate, support, love, insightful, or funny. This tool never changes the reaction.

Inputs: post_ref (required), context_id (required), request_id (required), desired_reaction (required). Returns: draft, status, sources, replayed, +3 more

linkedin.posts.searchSearch LinkedIn PostsA
Read-onlyIdempotent

Search visible LinkedIn content using keywords plus sort, date, content type, From-member/company, posted-by relationship, mentioning-member/company, author-industry/company, and Author Keywords filters. Content type follows LinkedIn's current single-choice Videos, Images, Job posts, Live videos, or Documents control. Names resolve only through exact visible choices. Returns one cursor page while browser traversal remains privately bounded.

Inputs: context_id (required), request_id (required), query, cursor, +3 more. Returns: posts, status, sources, coverage, +4 more

linkedin.server.statusLinkedIn MCP Server StatusA
Read-onlyIdempotent

Return non-secret server configuration and readiness metadata.

Inputs: no named parameters. Returns: name, version, transport, queue_depth, +7 more

linkedin.session.statusLinkedIn Session StatusA
Read-onlyIdempotent

Return non-secret browser-session state for the configured account.

Inputs: no named parameters. Returns: paused, account_id, pause_reason, status_message, +6 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 31 tools

    Disambiguation5/5

    Each tool targets a distinct resource/action combination. The prepare/execute pairs are clearly separated by their non-mutating vs mutating roles, and search/get/list tools have well-defined boundaries. No two tools appear to perform the same operation.

    Naming Consistency5/5

    All tools follow a consistent 'linkedin.<domain>.<action>' or 'linkedin.<domain>.<subresource>.<action>' pattern with snake_case and standard verbs (get, search, list, prepare, execute). This makes the tool surface predictable and easy to navigate.

    Tool Count4/5

    31 tools is on the heavy side, but the breadth of LinkedIn's platform (posts, jobs, people, companies, invitations, connections, messaging, plus server metadata) justifies the count. Each tool has a clear purpose, and the prepare/execute pairs account for many of the tools without redundancy.

    Completeness4/5

    The set covers the core LinkedIn workflows: reading/searching across major resources, and performing key mutations (create post, comment, react, send/accept/ignore invitations, message). Notable gaps include post deletion/editing and job application, but these are workaround-able for most agent use cases.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Fully featured MCP server that provides automation tools for LinkedIn, supporting browser-based scraping and API-based operations for content management, media uploads, and reactions.
      6
      4
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      High-performance autonomous MCP server that turns LinkedIn into an API for AI workflows, enabling profile management, job search, content posting, and document generation.
      14
      1
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Playwright-powered MCP server for LinkedIn that automates jobs, profile edits, messaging, network actions, and feed posts using a real logged-in browser session.
      36
      Apache 2.0
    • F
      license
      A
      quality
      D
      maintenance
      MCP server for automating LinkedIn actions such as reading feeds, sending messages, creating posts, and managing connections. Uses browser automation with proxy and stealth support.
      21
      -