LinkedIn MCP Server
Click on "Deploy 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 MCP Server search for data analyst jobs in Seattle"
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 MCP Server
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 stdio2. Sign in to LinkedIn
Restart Claude Code. A dedicated browser window opens automatically—sign in to LinkedIn and complete any required verification.
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
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 |
| 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 |
| Read the complete job description, company, application method, and visible hiring team. | ||
People | Search people |
| Search by keywords, connection degree, hiring status, location, current or past company, title, school, industry, services, language, connections, and followers. | |
Read profiles |
| Read the complete visible profile or request selected sections such as About, experience, education, skills, projects, certifications, and recommendations. | ||
Companies | Search companies |
| Search by keywords, headquarters, industry, size, available jobs, and first-degree connections. | |
Read company details |
| Read Overview and About information, including website, headquarters, size, type, founding year, and specialties. | ||
Posts | Search posts |
| Search by keywords, date, content type, author, company, relationship, mentions, author industry, and other visible filters. | |
Read posts |
| Read complete content, media, links, mentions, hashtags, reactions, and engagement. | ||
Read discussions |
| Read paginated comments, replies, attachments, and reactions. | ||
Publish posts |
| Publish supported personal text, link, image, video, document, poll, celebration, event, hiring, and expert-request posts. | ||
Comment |
| Add text, links, emoji, mentions, photos, or GIFs to posts. | ||
React |
| Add, change, or remove reactions on posts. | ||
Network | List connections |
| Browse established first-degree connections with sorting and pagination. | |
Search connections |
| Search existing connections using applicable People filters. | ||
List invitations |
| Browse received and sent invitations using LinkedIn's visible filters. | ||
Send invitations |
| Send connection requests with optional notes. | ||
Accept invitations |
| Accept incoming connection requests. | ||
Ignore invitations |
| Ignore incoming connection requests. | ||
Messaging | Search messages |
| Search by recipient or message text using inbox categories and filters. | |
Read conversations |
| Read message history, replies, edits, reactions, and attachments. | ||
Send messages |
| Send or reply in one-to-one conversations with text, links, emoji, files, images, and GIFs. | ||
Server | Check runtime |
| Inspect the shared runtime, queue, and active browser operation. | |
Check LinkedIn session |
| Inspect browser-profile, authentication, login, and pause state. | ||
List capabilities |
| 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 stdioCheck it with claude mcp list. See the
Claude Code MCP documentation.
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 stdioCheck 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.
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.
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.
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 toolslinkedin.capabilities.listList LinkedIn CapabilitiesARead-onlyIdempotent
List installed capabilities and whether runtime policy enables each one.
Inputs: no named parameters. Returns: capabilities
linkedin.companies.getRead LinkedIn Company Overview and AboutARead-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 CompaniesARead-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 ConnectionsARead-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 ConnectionsARead-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 InvitationADestructiveIdempotent
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 AcceptanceAIdempotent
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 RequestADestructiveIdempotent
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 RequestAIdempotent
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 InvitationsARead-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 InvitationADestructiveIdempotent
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 InvitationAIdempotent
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 JobARead-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 JobsARead-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 ConversationAIdempotent
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 MessageADestructiveIdempotent
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 MessageAIdempotent
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 MessagesARead-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 ProfileARead-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 PeopleARead-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 CommentADestructiveIdempotent
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 CommentAIdempotent
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 DiscussionARead-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 PostADestructiveIdempotent
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 PostAIdempotent
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 PostARead-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 ReactionADestructiveIdempotent
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 ReactionAIdempotent
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 PostsARead-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 StatusARead-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 StatusARead-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
Scored across 31 tools
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.
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.
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.
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
Related MCP Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
A hosted LinkedIn MCP server for your own account. Paste one address into Claude, ChatGPT, Cursor or n8n to read your inbox, send messages and invitations, and search people. Free to start. Not made by LinkedIn.
Hosted LinkedIn MCP server on your own account: 35 tools for search, profiles, inbox, posts, pages.
MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.
Related MCP Servers
- AlicenseAqualityDmaintenanceFully featured MCP server that provides automation tools for LinkedIn, supporting browser-based scraping and API-based operations for content management, media uploads, and reactions.64MIT
- AlicenseAqualityDmaintenanceHigh-performance autonomous MCP server that turns LinkedIn into an API for AI workflows, enabling profile management, job search, content posting, and document generation.141MIT
- AlicenseBqualityDmaintenancePlaywright-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
- FlicenseAqualityDmaintenanceMCP 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-