@curviate/mcp
OfficialClick on "Install 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., "@@curviate/mcpsearch for software engineers at Google"
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.
@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/mcpClaude Code
claude mcp add curviate -e CURVIATE_API_KEY=<your-api-key> -- npx -y @curviate/mcpClaude 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 the tenant's connected LinkedIn accounts. |
| Get metadata and quota state for one connected account. |
| Retrieve a LinkedIn member's profile. |
| Update the caller's own profile fields, photo, and cover photo. |
| List a person's posts, comments, reactions, or saved posts. |
| List a person's connections, followers, or following. |
| Get the caller's own subscription, analytics, visitors, SSI, and InMail credits. |
| Endorse a 1st-degree connection's skill. |
| Follow a LinkedIn member. |
| Unfollow a LinkedIn member. |
| Search LinkedIn members with structured filters. |
| Search LinkedIn company pages with structured filters. |
| Search LinkedIn posts with structured filters. |
| Search LinkedIn job postings with structured filters. |
| Search LinkedIn service providers. |
| Run a pasted LinkedIn search URL directly. |
| Keyword search for LinkedIn groups. |
| List a group's members. |
| Retrieve a LinkedIn company page's full profile. |
| List a company page's employees, posts, jobs, or followers. |
| List company pages the account administers. |
| List the account's conversations. |
| List the messages in one chat. |
| Start a new conversation and send the opening message. |
| Send a message into an existing chat. |
| Edit a previously sent message. |
| Delete a previously sent message. |
| Add a native emoji reaction to a chat message. |
| Mark a chat read or unread. |
| Read the account's LinkedIn home feed. |
| List the account's LinkedIn notifications. |
| Delete or show-less a notification. |
| Retrieve a single post's full detail. |
| Publish a new post. |
| Delete a post the account owns. |
| List a post's or comment's comments, replies, or reactions. |
| Save or unsave a post to the account's bookmark list. |
| Comment on a post. |
| Edit a comment the account authored. |
| Delete a comment the account authored. |
| React to a post. |
| Remove the account's reaction from a post. |
| List received or sent connect-requests. |
| Send a connect-request to a member. |
| Accept or decline a received connect-request. |
| Withdraw a connect-request the account sent. |
| List the account's own job postings. |
| Get a job posting, optionally with its budget. |
| Create a classic job posting draft. |
| Edit a job posting the account owns. |
| Publish or close a job posting. |
| 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 |
| Search LinkedIn members using Sales Navigator's richer filter set. |
| Search LinkedIn companies using Sales Navigator's richer filter set. |
| Run a pasted Sales Navigator search, saved-search, or lead-list URL directly. |
| Get a LinkedIn profile with Sales Navigator enrichment. |
| Start a Sales Navigator InMail-style chat and send the opening message. |
| List the operator's Sales Navigator account lists or lead lists. |
| Save a LinkedIn member into a Sales Navigator lead list. |
| 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 |
| Search LinkedIn members using Recruiter's filter set. |
| Search a Recruiter project's talent pool. |
| Run a pasted Recruiter search, talent-pool, or applicant URL directly. |
| Get a LinkedIn profile with Recruiter enrichment. |
| Start a Recruiter InMail-style chat and send the opening message. |
| List Recruiter hiring projects, or fetch one project's full detail. |
| Edit a Recruiter project's config. |
| List candidates in a Recruiter project's pipeline. |
| Save a candidate to a Recruiter project's pipeline. |
| List a project's talent-pool applicants, or fetch one applicant. |
| List Recruiter job postings, or fetch one, optionally with its budget. |
| Create a Recruiter job posting draft, in a new or existing project. |
| Edit a Recruiter job posting. |
| 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 conversations in a company page's admin inbox. |
| Read a company page's admin inbox chat, or a message within it. |
| Reply to a company inbox conversation as the page. |
| 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
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Curviate/curviate-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server