LinkedIn MCP Server for AI coding agents
Your coding agent reads the LinkedIn routes of the Unipile MCP server and builds messaging, search, Sales Navigator and Recruiter features into your product. Each user connects their own LinkedIn account, and every call is tested on your Development application first.
7-day free trial, no credit card.
Your coding agent
Unipile MCP connected
Add LinkedIn messaging to my ATS. Recruiters connect their own account.
Read endpointPOST /v2/auth/linkschema loaded
Added the connect route and the Settings button. The account ID is stored on the recruiter.
Describe the next feature…
The short answer
Does LinkedIn have an official MCP server?
No. LinkedIn does not publish a Model Context Protocol server, and its developer program does not open messaging, search or Recruiter to third-party products. The Unipile MCP server is a hosted third-party server generated from the Unipile API: your coding agent reads the LinkedIn endpoints and writes the integration into your product, where each user connects their own LinkedIn account through Hosted Auth and your code acts on behalf of that authenticated user.
The server URL
https://developer.unipile.com/mcp?branch=v2.0
AuthHeader
X-API-KEY with a scoped Account API key, over streamable HTTP, for LinkedIn and eight other channels.AccountsTest accounts while you build; in production, the LinkedIn account each user connected through Hosted Auth.
ClientsCodex, Cursor, Claude Code, Gemini CLI, Windsurf, or any MCP client.
Prompts, not glue code
What your coding agent builds on LinkedIn
Four integration jobs, each with the prompt you give the agent, the endpoint it runs on
https://api.unipile.com with your X-API-KEY, and what lands in your project.Sync each recruiter's LinkedIn inbox into my ATS and let them reply from the candidate page, InMail included.
Search endpoints"chats messages send"3 matches
Created
linkedin/inbox-sync.ts and POST /candidates/:id/reply. Ran the sync on the Development app: 12 chats, 87 messages imported.A LinkedIn inbox inside your product, from one prompt
The agent reads the chat contracts, writes the sync job and the reply endpoint, and tests them on your Development application. InMail uses the same routes.
Endpoint the agent uses
LinkedIn messaging API guide
POST/v2/{account_id}/chats/{chat_id}/messages/send
Implement Unipile Hosted Auth so each user connects their own LinkedIn account from Settings, and store the account ID on the user.
Read endpointPOST /v2/auth/linkschema loaded
Added
POST /api/accounts/connect and the callback that stores the new account_id on the user. Verified with a test LinkedIn account.Your users connect their own LinkedIn account, your app gets an account ID
Hosted Auth is the page where your users link their own LinkedIn, Sales Navigator or Recruiter account. The agent wires the link, the redirect and the account ID.
Endpoint the agent uses
Implement Hosted Auth with an agent
POST/v2/auth/link
Add LinkedIn people search to the sourcing page with the classic filters, then retrieve the selected profile.
Read endpointPOST /v2/{account_id}/linkedin/search/peopleschema loaded
Added
searchPeople(filters) and getProfile(id) in linkedin.service.ts. Tested on the Development app: 25 results, profile opened.Search with LinkedIn's own filters, then read the profile
Searches use the user's own LinkedIn filters, and the agent fetches only the profile the user opens. Results are what the authenticated user can see from their own session.
Endpoint the agent uses
LinkedIn profile API guide
POST/v2/{account_id}/linkedin/search/people
Add Sales Navigator lead search to the prospecting page and let the user save results to one of their lead lists.
Run requestPOST /v2/{account_id}/linkedin/sales-navigator/search/people143 leads
Built the filter form, the lead search and "Save to list". The feature stays hidden when the account has no Sales Navigator seat.
Sales Navigator search and lead lists, on the user's own seat
Lead and account searches with the Sales Navigator filters, on the seat the user connected: their filters, their lists, their InMail credits.
Endpoint the agent uses
Sales Navigator MCP
POST/v2/{account_id}/linkedin/sales-navigator/search/people
One MCP server, real endpoints
LinkedIn MCP server endpoints, wired to your product
Your coding agent reads these endpoints through the MCP server and wires each one to the right element of your product.
Head of TalentSearch
ParisSoftware2nd degree
CLClaire LambertHead of Talent at Northwind · Paris · 2nd degree
MessageConnect
Saved leadsSales Navigator
MKMarc KellerVP Sales, BrightlineSave to list
SOSara OkaforHead of Growth, TidewaveSave to list
LinkedIn inbox
MKMarc KellerSOSara OkaforCLClaire Lambert
Thanks for reaching out. Happy to talk on Thursday.Great, I will send an invite for 10am.
New message from Sara Okaforvia webhook
Write a replySend
NNorthwindCompany page · 2h
Northwind is hiring 3 engineers in Paris.
JDCongrats, sharing it with my network.
Endpoints the agent wires
- 1Seat and contract checkGET
/v2/{account_id}/linkedin/contracts - 2People searchPOST
/v2/{account_id}/linkedin/search/people - 3ProfileGET
/v2/{account_id}/users/{user_id} - 4Connection requestPOST
/v2/{account_id}/users/me/relation-requests - 5Sales Navigator lead searchPOST
/v2/{account_id}/linkedin/sales-navigator/search/people - 6Chat listGET
/v2/{account_id}/chats - 7Thread messagesGET
/v2/{account_id}/chats/{chat_id}/messages - 8Webhook for new messagesPOST
/v2/webhooks/endpoints/ - 9Reply in the threadPOST
/v2/{account_id}/chats/{chat_id}/messages/send - 10Comment on a postPOST
/v2/{account_id}/posts/{post_id}/comments
Sales Navigator MCP and Recruiter MCP, on the same server
LinkedIn publishes neither. A seat or contract adds its own routes behind the same server URL, and your code checks what an account holds with
GET /v2/{account_id}/linkedin/contracts.Quick start
Add it to your coding agent in one line
No separate LinkedIn server to install: the hosted Unipile MCP server covers LinkedIn under the same URL as every other channel. Paste the snippet from the official documentation with a scoped API key.
Cursor~/.cursor/mcp.json
Claude Codeclaude mcp add --transport http
Codex CLI and IDE extension~/.codex/config.toml
Gemini CLI~/.gemini/settings.json
Windsurf~/.codeium/windsurf/mcp_config.json
# Register the hosted Unipile MCP server in Claude Code
claude mcp add --transport http --scope user \
unipile "https://developer.unipile.com/mcp?branch=v2.0" \
--header "X-API-KEY: your-scoped-api-key"
# Verify the connection, or type /mcp inside a session
claude mcp list
{
"mcpServers": {
"unipile": {
"url": "https://developer.unipile.com/mcp?branch=v2.0",
"headers": {
"X-API-KEY": "your-scoped-api-key"
}
}
}
}
{
"mcpServers": {
"unipile": {
"url": "https://developer.unipile.com/mcp?branch=v2.0",
"headers": {
"X-API-KEY": "your-scoped-api-key"
}
}
}
}
# Codex CLI and the Codex IDE extension share this file
[mcp_servers.unipile]
url = "https://developer.unipile.com/mcp?branch=v2.0"
http_headers = { X-API-KEY = "your-scoped-api-key" }
# Verify: codex mcp list
{
"mcpServers": {
"unipile": {
"httpUrl": "https://developer.unipile.com/mcp?branch=v2.0",
"headers": {
"X-API-KEY": "your-scoped-api-key"
}
}
}
}
# Verify: /mcp inside Gemini CLI
Server connected. Try: "Add LinkedIn people search to the sourcing page, then retrieve the selected profile."
A Development application first
Give the agent a scoped key from a Development application in the Unipile dashboard, never a global or Service key.
Test accounts, real requests
The agent runs requests on test LinkedIn accounts linked through Hosted Auth, on behalf of the authenticated user who linked them, within each provider's limits.
Validate each flow
Check the connect flow, one read and one write per feature, and a webhook delivery.
Then switch to Production
Nothing touches your users' accounts until you switch the key. See security and compliance.
On behalf of the user
Whose LinkedIn account does your integration act on?
While you build, on the test accounts of your Development application. In production, on the LinkedIn account each user connected through Hosted Auth, inside workflows that user starts and controls.
Sarah MitchellLinkedIn · Sales Navigator seat · linked by the user through Hosted Auth
Account ID
acc_7f3c91, the only identifier your code storesScopeWorkspace 42 · scoped Account API key
SessionHeld by Unipile, never exposed to your app
StatusConnected · status changes arrive by webhook
ReconnectDisconnect
What LinkedIn limits still apply
Invitation quotas, per account and per week
One request per user action; show the limit LinkedIn returns instead of retrying.Messaging volumes and InMail credits
Messages go to connections or open profiles; InMail spends the seat's credits.Checkpoints and reconnection
Hosted Auth walks the user through LinkedIn's code; never retry a checkpoint in a loop.Writes are user actions
Each send, invite or post is triggered by the user in your UI, never by a background loop.
6000+
Companies Innovating with Unipile
Trusted by industry leaders
1 API
Streamline operations for all major communication channels
2 Days
Achieve live integration quickly with minimal setup
30%
Reduction in maintenance efforts and resources
Built-In Security and Compliance
Enterprise-grade protection for your data and workflows Learn more about our security
SOC 2 Type II
Certified
Independently audited security controls ensuring data protection and operational integrity.
GDPR
Compliant
Full compliance with European data protection regulations for user privacy.
99.9%
Platform Uptime over the last 24 months
24/7
Global Support with high-performance API
LinkedIn MCP Server FAQ
The questions people actually type: official or not, the server URL, how the agent tests, Sales Navigator MCP and Recruiter MCP, accounts, code and price.
No. LinkedIn does not publish a Model Context Protocol server, and its developer program does not open messaging, search or Recruiter to third-party products. The Unipile MCP server is a hosted third-party server generated from the Unipile API: your coding agent reads the LinkedIn endpoints and writes the integration into your product, where each user connects their own account and your code acts on behalf of that authenticated user. Unipile is an independent technical intermediary and is not affiliated with, endorsed by, or sponsored by LinkedIn.
There is one URL for the whole Unipile API, LinkedIn included:
https://developer.unipile.com/mcp?branch=v2.0, over streamable HTTP, with a scoped Account API key in the X-API-KEY header. There is no separate server per channel. Paste it into Codex, Cursor, Claude Code, Gemini CLI or Windsurf, and the agent discovers the LinkedIn endpoints on its own.On your Development application. Connect a test LinkedIn account through Hosted Auth, create a Scope with it and a scoped key for that Scope, and give that key to the agent. It runs the real routes (
GET /v2/{account_id}/chats, POST /v2/{account_id}/linkedin/search/people) on the test account, checks the responses and fixes the code. Production accounts only enter the picture when your reviewed code ships with its own scoped keys.Not from LinkedIn: it publishes neither a Sales Navigator MCP server nor a Recruiter MCP server. The Unipile MCP server exposes both, when the connected account holds the seat or contract. A Sales Navigator seat unlocks lead and account searches, lead lists and account lists (
POST /v2/{account_id}/linkedin/sales-navigator/search/people, GET /v2/{account_id}/linkedin/sales-navigator/lead-lists). A Recruiter contract unlocks projects, pipelines, talent pool search, applicants and job postings (GET /v2/{account_id}/linkedin/recruiter/projects, POST /v2/{account_id}/linkedin/recruiter/projects/{project_id}/pipeline). Your code lists the account's contracts and selects one.While you build, the test accounts of your Development application. In production, only the account an end user connected through Hosted Auth and that sits in your Scope: your code receives an account ID, never credentials, and every request runs on behalf of that authenticated user, inside a workflow the user initiates and controls from your product. How often your product acts on an account is a customer-side decision within LinkedIn's limits.
No. LinkedIn's developer program covers a narrow set of partner products and does not expose messaging, search or Recruiter to third parties. The Unipile server works with the LinkedIn account your user connects, through the same LinkedIn API Unipile offers over REST. What you need is a Unipile scoped Account API key, created in the dashboard.
You paste the configuration into your coding agent and describe the LinkedIn feature in plain language. The agent reads the endpoints, writes the code in your project and tests it on the Development app; you review it like any pull request. In production your product calls the same routes over the REST API or the official SDKs, with its own scoped keys.
The MCP server is included in every Unipile plan, with no per-message or per-request fee. Billing is per connected account, whatever the channel: from 49 EUR per month for up to 10 accounts, then 5 EUR per additional account, down to 3 EUR at volume. The 7-day free trial needs no credit card. Full grid on the pricing page.