
LinkedIn MCP Server (Salesbot)
cz.salesbot由 salesbot.cz 發布官方發布者v1.0.0更新於 Nov 2, 2026
Human-in-the-loop LinkedIn outreach and a built-in sales CRM for AI agents. Safety-gated, anti-spam.
概覽
Salesbot 遠端 MCP 伺服器,讓助理研究 LinkedIn 聯絡人、起草經人工審核的外聯訊息、寄送電子郵件並管理內建銷售 CRM。
- 可以做什麼
- 透過 LinkedIn 人員與 Navigator 搜尋、Google X-Ray、職缺、網頁搜尋與公司官網閱讀尋找潛在客戶
- 管理聯絡人與名單:寫入資料、補充資訊、同步人脈、檢查黑名單
- 執行行銷活動:建立、啟動、停止、加入佇列,並產生、核准或退回 AI 撰寫的訊息
- 直接操作 LinkedIn:送出邀請、傳訊息、發文,以及處理收件匣對話
- 用自有信箱寄送並追蹤電子郵件,保存草稿與後續追蹤內容
- 使用 CRM:公司、潛在客戶、階段、自訂欄位、備註、任務與匯出
- 適用情境
- 適合招募、業務與創業者,讓助理進行小量、精準的 LinkedIn 與電子郵件外聯,並在寄出前人工審核,同時把成果留在 CRM 中。不適合大量群發。
- 執行需求
- 遠端端點 app.salesbot.cz,使用 streamable HTTP。驗證方式為 OAuth 2.1 登入,或在 x-mcp-api-key 標頭提供長期有效的 Salesbot MCP API 金鑰(不要放在 Authorization)。需要有效的 Salesbot 訂閱或試用,並需在應用程式內或透過 connect_linkedin 工具連結 LinkedIn 帳號。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 LinkedIn MCP Server (Salesbot),將其新增到工作區。
- 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/cz.salesbot%2Flinkedin-mcp-server/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。
{
"mcpServers": {
"linkedin-salesbot": {
"type": "http",
"url": "https://app.salesbot.cz/api/mcp"
}
}
}README
LinkedIn MCP Server with CRM (Salesbot)
What is this?
linkedin-mcp-server-salesbotis a Model Context Protocol - MCP server for AI‑assisted LinkedIn relationship operations. It lets AI assistants — Claude Desktop, ChatGPT, Cursor — help you research and organize professional contacts, draft deeply personalized messages for your review and approval, sync inbox conversations, enrich profiles, and pull web context — all under your direction. It's built for hyper‑targeted, meaningful outreach (find 5 ideal contacts, read their recent posts, write 5 thoughtful notes), not bulk blasting. Every send is gated by human‑in‑the‑loop approval and enforced, server‑side daily/hourly safety thresholds that keep your LinkedIn account within safe limits.
It runs as a hosted service at app.salesbot.cz and speaks the MCP Streamable HTTP transport. Users sign in with OAuth 2.1 (or use an API key in clients that cannot sign in). LinkedIn actions go through a third‑party LinkedIn integration provider; LinkedIn credentials are never stored by the AI.
Product page and documentation: https://salesbot.cz/en/mcp-server
- Keywords: model context protocol, mcp server, linkedin api, linkedin automation, claude desktop, cursor, ai agents, sales automation.
- Compatible clients: Claude Desktop, Claude API/MCP, Cursor, any MCP Streamable‑HTTP client.
Quick facts
Connect with sign-in (OAuth): claude.ai, Cowork, Claude Code
The server supports OAuth 2.1, so no key needs to be copied:
- claude.ai / Cowork: Customize → Connectors → + Add → Add custom connector → name
Salesbot, URLhttps://app.salesbot.cz/api/mcp→ Continue → authentication Sign in now (keep the recommended OAuth client; if sign-in fails choose Register automatically) → Add. Sign in to Salesbot and allow access on the consent page, then switch Salesbot on under + → Connectors in a chat. On Team/Enterprise an owner adds it first (Organization settings → Connectors → Add → Custom → Web) and members click Connect. - Claude Code plugin (adds three skills on top of the connection:
salesbot-outreach,salesbot-campaignandsalesbot-email):
Then start claude, run /mcp, select the Salesbot server and sign in.
To update later, refresh the marketplace first (otherwise the old version is reported as current):
You can see and remove connected apps in the Salesbot app under Settings → MCP → Connected apps. The plugin contains no code that runs on your machine; it only talks to https://app.salesbot.cz/api/mcp.
ChatGPT and Codex
For a private ChatGPT connection, open Plugins on chatgpt.com (chatgpt.com/plugins) → + → Add custom MCP server, enter the name Salesbot, the server URL https://app.salesbot.cz/api/mcp and choose OAuth. Confirm the warning, choose Create as a plugin, complete Salesbot consent in the browser, install the plugin and call it in a chat with @Salesbot. Availability depends on your ChatGPT plan and workspace settings. The discovery endpoints are available, but end-to-end ChatGPT sign-in has not yet been verified by this repository's readiness check.
The portable OpenAI package is defined by plugin.json and mcp.json; it reuses the existing workflows and logo without changing the Claude package. It is a submission candidate, not an approved public listing. See the OpenAI readiness and submission checklist for tests, review-account requirements and the third-party integration policy gate.
Clients that cannot sign in can use an API key, see below.
What the plugin runs and sends
- Runs nothing on your machine. The plugin is three Markdown skills and one remote MCP server entry; there are no hooks, scripts or binaries.
- Talks to one server:
https://app.salesbot.cz/api/mcp(Salesbot, operated by Sales Robots s.r.o.). Sign-in uses OAuth 2.1 onapp.salesbot.cz. - What reaches Salesbot: the arguments of the tools Claude calls (for example a search query, a contact id, the text of a message or e-mail you asked to send). Salesbot then acts in your connected LinkedIn account and e-mail tools within your limits and approval settings. It does not read your conversation or local files.
- Data handling: see the privacy policy and terms. Remove access at any time in the Salesbot app → Settings → MCP → Connected apps.
Connect with an API key (Cursor, Codex, Claude Desktop config)
Add this to your MCP client config. Get the sb_mcp_… key in the Salesbot app under Settings → MCP.
Important: send the API key in the
x-mcp-api-keyheader, notAuthorization: Bearer;Authorizationis reserved for OAuth access tokens.
Authentication
- OAuth 2.1 (authorization code + PKCE, dynamic client registration). A request without credentials gets
401withWWW-Authenticate: Bearer resource_metadata="https://app.salesbot.cz/.well-known/oauth-protected-resource"; clients discover the authorization server from there. The access token goes inAuthorization: Bearer. - MCP API key (
sb_mcp_…) — long‑lived; generated in the Salesbot app, stored only as a SHA‑256 hash. Send inx-mcp-api-key. - An active subscription/trial is required.
How do I authenticate LinkedIn?
The AI can do it without leaving the chat:
- Call
get_linkedin_status— reports whether LinkedIn is connected/active/blocked. - If not connected, call
connect_linkedin— returns a white‑labeledhttps://auth.salesbot.cz/…link. The user opens it, completes LinkedIn login, done.
Or connect in the app: Settings → LinkedIn → Connect.
Tools
Each tool returns text content; errors return { "ok": false, "code": "<CODE>", "error": "<message>" }.
Why 82 tools. Salesbot covers LinkedIn outreach, e-mail and a CRM, and each tool does exactly one thing. The tools are grouped into the areas below, and a client only needs the area it is working in (Claude can load tools on demand). Every tool description starts with when to use it and names the tool to use instead where two are easy to confuse (for example search_linkedin_people vs search_linkedin_navigator, or upsert_linkedin_contact vs add_crm_contact). Read-only tools are kept separate from write and delete tools, so clients can show correct read-only and destructive hints and ask for approval only where it matters. The salesbot_campaign_operator prompt contains the same map.
Connection
Lead discovery
search_google_xray saves the profiles it finds into a "Google X-Ray" contact list (deduplicated) and returns their contact_ids — ready to enrich, add to a campaign, or push into the CRM.
search_job_postings searches LinkedIn job postings via the connected account (Classic search, no Recruiter needed). Returns job offers with company info — great for finding companies actively hiring for a specific role. Combine with search_linkedin_people to find the hiring manager.
search_web is a general-purpose Google search (not restricted to LinkedIn). Use Google operators like site:jobs.cz, intitle:, OR to search job portals, company websites, or news. Results are NOT saved to contacts — this is a research/discovery tool.
read_company_website reads a company's own public website – the homepage plus up to 3 contact/about/services pages on the same host – and returns a short extract with source URLs and generic company e-mails (info@, sales@ …); personal e-mails and phone numbers are masked and no employee lists are collected. It identifies as SalesbotBot, honours robots.txt (and does not read a site whose robots.txt cannot be checked), noindex/noai and TDM reservations, reads only public addresses, stops at logins, CAPTCHAs and paywalls, and is limited to 60 reads per account per day. Nothing is stored; save the summary with update_company_research. A found address is not consent to contact. Rules: salesbot.cz/en/terms#website-reading.
get_job_posting_details takes a job_id from search_job_postings and returns the full posting — most importantly hiring_team, the recruiter or hiring manager who posted the role, with their LinkedIn id and whether a free InMail is available. Also returns applicants_counter / views_counter as urgency signals. Typical flow: search_job_postings → get_job_posting_details → enrich_contacts → campaign.
Company/account-list workflow: import_linkedin_company_list → list_companies → search_web → update_company_research → search_linkedin_people → upsert_linkedin_contact with the returned prospect_company_id. Companies are stored separately from people and can enter CRM before a decision-maker is known.
Contacts
Every contact lives in exactly one list: add_contacts_to_list moves contacts, remove_contacts_from_list moves them back to CRM Imports (nothing is deleted). sync_linkedin_connections pages through your own 1st-degree connections (max 500 per page, paced by the server). list_blacklist / check_blacklist read the company-wide blacklist.
delete_contacts deletes permanently, including campaign history. Call it only on the user's explicit request, after showing them the contacts, with confirm: true. To stop outreach to someone, use exclude_contacts_from_campaign instead.
upsert_linkedin_contact is the idempotent path for an exact, already-known LinkedIn profile URL. It creates the contact in the CRM Imports list or returns the existing contact_id, so CRM integrations can safely call it before add_contacts_to_campaign without relying on Google search.
list_lead_lists returns each contact group's list_id, name, description and contact count. Pass a returned list_id to list_contacts.
Typical contact workflow: list_lead_lists → list_contacts → add_contacts_to_campaign. Contacts still belong to a lead list, but adding an existing contact to a campaign only requires its contact_id and the target campaign_id.
search_linkedin_people and search_linkedin_navigator return raw LinkedIn search results. They do not persist contacts; call upsert_linkedin_contact for each profile you want to save or add to a campaign.
enrich_contacts reads each contact's LinkedIn profile via the connected account and saves the headline, location and current company & position. Following GDPR data minimisation, Salesbot does not store photos, the "About" text, education, skills, earlier jobs or contact details. Great right after search_google_xray.
Campaigns
message_mode decides how a message step uses its sample (ai_template): template sends the sample word for word and the AI only fills its fields (e.g. [Firma] → "Škoda Auto"); creative has the AI write a new message for each lead from ai_prompt, with the sample only as a style example. The campaign's sender_context ("About me") is used only where the prompt says {{o_mne}}. Links in the prompt or sample are kept as written.
exclude_contacts_from_campaign stops all further outreach to those contacts but keeps their history. list_campaign_queue shows each contact's state, invitation status and the next tool to call.
AI messaging (write → approve → send)
prepare_campaign_messages queues drafts for up to 10 pending contacts per call; repeat while remaining_pending > 0. When the campaign has AI approval on (auto_approve_messages), Salesbot checks each draft — the contact's name and gender, company, leftover placeholders, signature and grammar — and approves only what passes; the rest waits in list_pending_approvals. list_mcp_pending_actions lists one-off messages and invitations waiting for the user's approval (read-only).
E-mail (your own mailbox: Outlook or IMAP/SMTP)
send_email sends a personal e-mail to one person from your own mailbox: pass the mailbox_id from list_email_integrations. Salesbot sends it within your sending hours, a few minutes apart and capped per day. Smartlead and Instantly are no longer supported. Consent: in the Czech Republic a commercial e-mail needs the recipient's prior consent unless they are an existing customer (§ 7 of Act 480/2004 Coll.) — use LinkedIn for first contact with new people.
Every e-mail is checked before it is sent: the greeting (right name, and pane/paní by the contact's gender), the company, leftover placeholders such as {{company}}, Czech grammar, and no signature in the body when the mailbox adds its own. A failed check returns AI_CHECK_FAILED with the reason and nothing is sent; fix it and call again. A second failure goes to the user's manual approval. If approval is required, the e-mail waits as pending_approval. cancel_email withdraws an e-mail that has not gone out yet.
Direct LinkedIn actions
publish_linkedin_post has its own server-side safety limit of 1 published post per LinkedIn account in a rolling 60-minute window. This applies to both personal and organization posts and is reported as the posts quota by get_daily_limits. When the quota is exhausted, the tool returns HOURLY_LIMIT_REACHED and does not publish the post.
Inbox (real‑time)
CRM (pipeline, notes, tasks, message store)
The CRM is a persistent pipeline separate from contacts. A lead enters it when added to a campaign, or when any of these tools first touch it. It also acts as a durable store for generated outreach copy: save email / LinkedIn drafts and follow-ups with save_lead_message, read them back with list_lead_messages or get_lead_context, and send e-mails with send_email (see E-mail above).
Companies (accounts) are created automatically from lead company names and LinkedIn company imports:
delete_crm_leads, delete_crm_company and merge_crm_companies cannot be undone: use them only on the user's explicit request, after showing them what will change.
get_lead_context returns the full 360° context for a lead — profile, pipeline stage, custom fields, saved outreach messages, conversation summaries, open tasks, recent LinkedIn interactions and stage history.
CRM configuration (stages & custom fields)
Pipeline stages and custom fields are user-configurable.
Example call
Request (MCP tools/call):
Success result content (JSON inside the text part):
Error result content:
Error codes
Safety & responsible use
- GDPR by default: only the fields needed for B2B outreach are stored (name, headline, current role, location, profile link, source and date); people with no activity for 12 months are deleted automatically; anyone who objects goes on a person-level do-not-contact list and is never saved or contacted again. The user is the controller, Salesbot the processor (data processing agreement in the terms).
Built-in LinkedIn algorithmic protection and daily safety thresholds. This is a relationship tool, not a mass-mailer — it's designed to send a few highly personalized, human-approved messages, and the server actively prevents bulk abuse:
- Per‑account daily limits with gradual ramp‑up for new accounts; per‑hour MCP throttle; a general per‑user request rate limit.
- An independent per‑account post limit of 1 published LinkedIn post per rolling hour, including organization posts.
- Human‑in‑the‑loop approval queue for outbound actions (configurable).
- Allowed‑hours / days windows and randomized, human‑paced delays between actions.
- Prompt‑injection defense: untrusted CRM/inbox text is treated as data; outbound text is scanned before sending.
- Inbox: max 2 AI replies per conversation (anti‑overflow); replies are injection‑scanned.
- Account protection: on a LinkedIn block (provider 403) campaigns auto‑pause and the user is emailed.
FAQ
Which AI clients work? Any MCP Streamable‑HTTP client — claude.ai, Cowork, Claude Code, Claude Desktop, the Claude API, Cursor, Codex and similar.
Does the AI see my LinkedIn password? No. Authentication happens through a hosted provider flow (white‑labeled at auth.salesbot.cz); the MCP server only uses an account handle.
Can the AI send messages without me? Only if you disable approval. By default outbound actions are queued for human approval.
Is it safe for my LinkedIn account? Daily/hourly limits, ramp‑up, allowed‑hours, randomized delays, and auto‑pause on a detected block are all enforced server‑side.
License
MIT — see LICENSE.
來源:README.md,提交 e5ecf10
工具
0版本歷史
1- v1.0.0最新Sep 16, 2026
評分
已滿足適用檢查項的 85%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分