@curviate/mcp

@curviate/mcp

Official MCP server for the Curviate API, enabling AI agents to perform LinkedIn actions like profile management, messaging, posting, and advanced search, with Sales Navigator and Recruiter support.

Category
访问服务器

README

<picture> <source media="(prefers-color-scheme: dark)" srcset="./assets/curviate-lockup-horizontal-dark.png"> <img alt="Curviate" src="./assets/curviate-lockup-horizontal-light.png" width="360"> </picture>

@curviate/mcp

Official Model Context Protocol server for the Curviate API: LinkedIn actions for AI agents, over stdio.

Built on @curviate/sdk and the official @modelcontextprotocol/sdk. Every tool call is a single typed SDK call against the Curviate REST API, structured errors and all, no local reimplementation of LinkedIn's business logic.

Install

npx (no install required)

npx @curviate/mcp

Claude Code

claude mcp add curviate -e CURVIATE_API_KEY=<your-api-key> -- npx -y @curviate/mcp

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "curviate": {
      "command": "npx",
      "args": ["-y", "@curviate/mcp"],
      "env": {
        "CURVIATE_API_KEY": "<your-api-key>"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "curviate": {
      "command": "npx",
      "args": ["-y", "@curviate/mcp"],
      "env": {
        "CURVIATE_API_KEY": "<your-api-key>"
      }
    }
  }
}

VS Code (Copilot Chat)

Add to .vscode/mcp.json (note the top-level key is servers, not mcpServers):

{
  "servers": {
    "curviate": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@curviate/mcp"],
      "env": {
        "CURVIATE_API_KEY": "<your-api-key>"
      }
    }
  }
}

Authentication

Get an API key from the Curviate dashboard. Pass it via the CURVIATE_API_KEY environment variable (preferred, shown above) or with a --api-key flag as a documented fallback:

npx @curviate/mcp --api-key <your-api-key>

A key passed as --api-key is visible to other users on the machine through ps/process listings and lands in shell history; prefer the environment variable in every context where it's available.

Override the API base URL (for testing against a non-production environment) with CURVIATE_BASE_URL.

Also available: hosted remote MCP

Curviate also runs a hosted, remote Streamable HTTP MCP endpoint at https://app.curviate.com/mcp, authenticated with your API key as a bearer token. Clients with native remote-MCP support (Claude Code, Claude Desktop Connectors, Claude.ai, ChatGPT Developer Mode, Cursor, VS Code) can point at it directly instead of running this package locally:

claude mcp add --transport http curviate https://app.curviate.com/mcp --header "Authorization: Bearer <your-api-key>"

This package exists for stdio-only clients (and anyone who prefers a locally-spawned process) and stays in sync with the same tool surface the hosted endpoint serves.

Tools

Every tool takes an account_id, the connected LinkedIn account to act as (from list_accounts), except list_accounts and get_account themselves, which are tenant-wide.

Tool Description
list_accounts List the tenant's connected LinkedIn accounts.
get_account Get metadata and quota state for one connected account.
get_profile Retrieve a LinkedIn member's profile.
update_my_profile Update the caller's own profile fields, photo, and cover photo.
list_profile_activity List a person's posts, comments, reactions, or saved posts.
list_network List a person's connections, followers, or following.
get_my_insights Get the caller's own subscription, analytics, visitors, SSI, and InMail credits.
endorse_skill Endorse a 1st-degree connection's skill.
follow_user Follow a LinkedIn member.
unfollow_user Unfollow a LinkedIn member.
search_people Search LinkedIn members with structured filters.
search_companies Search LinkedIn company pages with structured filters.
search_posts Search LinkedIn posts with structured filters.
search_jobs Search LinkedIn job postings with structured filters.
search_services Search LinkedIn service providers.
search_from_url Run a pasted LinkedIn search URL directly.
search_groups Keyword search for LinkedIn groups.
list_group_members List a group's members.
get_company Retrieve a LinkedIn company page's full profile.
browse_company List a company page's employees, posts, jobs, or followers.
list_managed_companies List company pages the account administers.
list_chats List the account's conversations.
read_chat List the messages in one chat.
start_chat Start a new conversation and send the opening message.
send_message Send a message into an existing chat.
edit_message Edit a previously sent message.
delete_message Delete a previously sent message.
react_to_message Add a native emoji reaction to a chat message.
update_chat Mark a chat read or unread.
get_feed Read the account's LinkedIn home feed.
list_notifications List the account's LinkedIn notifications.
dismiss_notification Delete or show-less a notification.
get_post Retrieve a single post's full detail.
create_post Publish a new post.
delete_post Delete a post the account owns.
list_post_engagement List a post's or comment's comments, replies, or reactions.
save_post Save or unsave a post to the account's bookmark list.
add_comment Comment on a post.
update_comment Edit a comment the account authored.
delete_comment Delete a comment the account authored.
add_reaction React to a post.
remove_reaction Remove the account's reaction from a post.
list_invitations List received or sent connect-requests.
send_connection_request Send a connect-request to a member.
respond_to_invitation Accept or decline a received connect-request.
withdraw_invitation Withdraw a connect-request the account sent.
list_jobs List the account's own job postings.
get_job Get a job posting, optionally with its budget.
create_job_draft Create a classic job posting draft.
edit_job Edit a job posting the account owns.
transition_job Publish or close a job posting.
list_job_applicants List a job posting's applicants, or fetch one applicant.

Sales Navigator

Requires a Sales Navigator seat on the connected account; a seat-less account gets a structured TIER_NOT_ACTIVE error, not a silent downgrade. Most id-bearing filters take an already-resolved opaque parameter id, this package does not resolve free-text names to ids.

Tool Description
sn_search_people Search LinkedIn members using Sales Navigator's richer filter set.
sn_search_companies Search LinkedIn companies using Sales Navigator's richer filter set.
sn_search_from_url Run a pasted Sales Navigator search, saved-search, or lead-list URL directly.
sn_get_profile Get a LinkedIn profile with Sales Navigator enrichment.
sn_start_chat Start a Sales Navigator InMail-style chat and send the opening message.
sn_list_lists List the operator's Sales Navigator account lists or lead lists.
sn_save_lead Save a LinkedIn member into a Sales Navigator lead list.
sn_save_account Save a LinkedIn company into a Sales Navigator account list.

Recruiter

Requires a Recruiter seat on the connected account, same TIER_NOT_ACTIVE behavior as Sales Navigator above.

Tool Description
rec_search_candidates Search LinkedIn members using Recruiter's filter set.
rec_search_talent_pool Search a Recruiter project's talent pool.
rec_search_from_url Run a pasted Recruiter search, talent-pool, or applicant URL directly.
rec_get_profile Get a LinkedIn profile with Recruiter enrichment.
rec_start_chat Start a Recruiter InMail-style chat and send the opening message.
rec_list_projects List Recruiter hiring projects, or fetch one project's full detail.
rec_edit_project Edit a Recruiter project's config.
rec_list_pipeline List candidates in a Recruiter project's pipeline.
rec_save_candidate Save a candidate to a Recruiter project's pipeline.
rec_list_applicants List a project's talent-pool applicants, or fetch one applicant.
rec_list_jobs List Recruiter job postings, or fetch one, optionally with its budget.
rec_create_job_draft Create a Recruiter job posting draft, in a new or existing project.
rec_edit_job Edit a Recruiter job posting.
rec_transition_job Publish or close a Recruiter job posting.

Company Admin

Page-admin only, beta. The connected account must administer the target page (from list_managed_companies); an account that does not gets a structured RESOURCE_ACCESS_RESTRICTED error before anything is read or sent.

Tool Description
list_company_chats List conversations in a company page's admin inbox.
read_company_chat Read a company page's admin inbox chat, or a message within it.
reply_company_chat Reply to a company inbox conversation as the page.
invite_followers Invite connections to follow a company page.

Each tool's input schema and read-only/destructive annotations are discoverable through tools/list, standard MCP introspection, no separate reference is needed to see the exact parameters.

Errors

A failed call returns isError: true with the Curviate API's structured error body as the tool result text, the same { code, message, retry_hint, user_fixable, retry_likely_to_succeed } shape documented at docs.curviate.com, verbatim. Nothing is translated or re-wrapped in between, an agent branching on code sees exactly what the REST API would have returned.

Roadmap

v1 shipped the highest-value core read and core write tools (20 total). A second tranche added profile management and insights, following, company browsing, messaging extras, notifications, post and comment lifecycle management, connect-request withdrawal, classic job postings, and the remaining search surface (52 total). This tranche adds Sales Navigator search and outreach, Recruiter search and project/pipeline/job management, and company page admin inbox and follow-invite tools (78 total), reaching full tool-surface parity with the hosted MCP endpoint.

Intentionally excluded, not planned for this package: list_toolsets, enable_toolsets, and explain_tools (the hosted server's Meta group) manage a remote server's dynamically gated toolset for a wide range of MCP clients; a local stdio package has one fixed toolset decided at install time, so there is nothing for them to gate. search and fetch (the hosted server's ChatGPT deep-research compatibility shim) exist only to satisfy ChatGPT's connector contract for a remote server; a locally-spawned stdio process has no such contract to satisfy. All five are hosted-server-specific by design, not a gap in this package.

This closes the gap with the hosted MCP endpoint's tool surface (78 tools each, the same count as above once the five hosted-server-specific tools are set aside). Webhook management (create/list/update/delete subscriptions) is REST/CLI-only, the hosted MCP endpoint does not expose it as tools either. Each future addition is one file under src/tools/, no architecture change required.

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选