harvestapi-mcp
Click 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., "@harvestapi-mcpFind LinkedIn profiles of senior software engineers in Austin, TX."
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.
harvestapi-mcp
MCP server for HarvestAPI — LinkedIn profiles, companies, posts, jobs, leads, ads, groups, and platform account data over the Model Context Protocol (stdio).
All 25 tools are read-only. No message sending, no connection automation, no billing mutations.
Legal / Ethical Notice
This server is a thin wrapper over the HarvestAPI LinkedIn-data API. You are responsible for complying with LinkedIn's Terms of Service, HarvestAPI's Terms, and applicable data-protection laws (GDPR, etc.) when using LinkedIn-sourced data. Do not use harvested data to spam, harass, or violate privacy. The maintainers provide no warranty and accept no liability for how you use the tool.
HarvestAPI is a third-party scraping/enrichment service — it is not affiliated with LinkedIn.
Related MCP server: linkedin-mcp-pro
Prerequisites
Node.js 20+
A HarvestAPI key — get one at https://harvestapi.io/admin/api-keys
Install
git clone https://github.com/Hassan220022/harvestapi-mcp
cd harvestapi-mcp
npm ci
npm run buildOr run without cloning (after npm publish or via npx from the repo):
npx --yes github:Hassan220022/harvestapi-mcpEnvironment
Variable | Required | Default | Description |
| yes | — | Your HarvestAPI API key. Sent as |
| no |
| Override base URL (rarely needed). |
| no |
| Request timeout in ms. |
| no |
| Max retries for transient 5xx / 429 / timeout. Never retried for 401/403/422. |
Copy .env.example to .env for local dev — but do not commit .env.
cp .env.example .env
# edit .envConfigure
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"harvestapi": {
"command": "node",
"args": ["/absolute/path/to/harvestapi-mcp/dist/index.js"],
"env": {
"HARVESTAPI_KEY": "your_key_here"
}
}
}
}Generic MCP (any stdio client)
{
"command": "node",
"args": ["/path/to/harvestapi-mcp/dist/index.js"],
"env": { "HARVESTAPI_KEY": "your_key_here" }
}Using npx (no local build)
{
"mcpServers": {
"harvestapi": {
"command": "npx",
"args": ["-y", "github:Hassan220022/harvestapi-mcp"],
"env": { "HARVESTAPI_KEY": "your_key_here" }
}
}
}Tools
25 tools, all harvest_*. Every tool maps to a verified HarvestAPI endpoint — see docs/tool-mapping.md and docs/harvestapi-endpoint-inventory.json.
Tool | Description | Required params |
| Get LinkedIn profile | one of |
| Search LinkedIn profiles | — (all filters optional) |
| Get posts by a profile | one of |
| Get comments by a profile | one of |
| Get reactions by a profile | one of |
| Get LinkedIn company | one of |
| Search companies | — |
| Get posts by a company | one of |
| Get LinkedIn group | one of |
| Search groups | — |
| Resolve LinkedIn Geo ID by text |
|
| Get a LinkedIn post |
|
| Search LinkedIn posts | — |
| Get comments on a post |
|
| Get reactions on a post |
|
| Get reactions on a comment |
|
| Get replies to a comment |
|
| Get LinkedIn job | one of |
| Search LinkedIn jobs | — |
| Search leads (Sales Navigator) | — |
| Search LinkedIn services |
|
| Get LinkedIn ad | one of |
| Search LinkedIn ad library | — |
| Get your HarvestAPI user/account | — |
| Get your private LinkedIn account pools | — |
Intentionally excluded (5 endpoints): accept-connection, send-connection, send-message, received-connections, sent-connections — they automate LinkedIn user actions. See tool-mapping.
Examples
Profile lookup
{ "tool": "harvest_get_profile", "arguments": { "publicIdentifier": "williamhgates" } }Profile with enrichment flags
{ "tool": "harvest_get_profile", "arguments": { "url": "https://www.linkedin.com/in/williamhgates", "findEmail": "true", "skipSmtp": "true" } }Company
{ "tool": "harvest_get_company", "arguments": { "universalName": "google" } }Search profiles
{ "tool": "harvest_search_profiles", "arguments": { "search": "staff engineer", "currentCompany": "google", "page": "1" } }Post comments
{ "tool": "harvest_get_post_comments", "arguments": { "post": "https://www.linkedin.com/posts/.../..." } }Error & Rate-Limit Behavior
HTTP | Behavior |
401/403 |
|
404/422 |
|
429 |
|
5xx | Retried with exponential backoff (400 ms × 2^attempt, max 5 s) up to |
timeout |
|
HarvestAPI has no per-minute rate limit; concurrency limits are per plan (Free 1, Starter 5, Basic 10, Pro 20, Business 40) with queue size 10 — see https://docs.harvestapi.io/guides/concurrency.md. Exceeding queue returns an error; the client surfaces 429 with Retry-After when present.
Validation errors (missing required identifier, requireAtLeastOne) are local HarvestValidationError before any request.
Raw API payloads are preserved in responses. Email fields are only marked verified if the API says so.
Development
npm ci
npm run lint # eslint
npm run typecheck # tsc --noEmit
npm run build # tsc
npm test # vitest
npm run test:coverage
npm run check # lint + typecheck + build + testNeeds Node 20+.
Project Docs
Endpoint inventory (30 endpoints):
docs/harvestapi-endpoint-inventory.jsonResearch notes & source URLs:
docs/research-notes.mdTool mapping (Implemented / Intentionally Excluded):
docs/tool-mapping.mdRaw docs crawl:
docs/raw/*.md
Security
HARVESTAPI_KEYis only read from env (HARVESTAPI_KEY). Never logged, never included in error bodies beyond redacted hints.Never commit
.env..env.examplecontains placeholders only..gitignorecovers.env,node_modules,dist,coverage.Report security issues via GitHub Issues (do not post keys in issues).
Contributing
PRs welcome. Run npm run check before submitting. See docs/research-notes.md for how endpoints are sourced and validated.
License
MIT — see LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceFully featured MCP server that provides automation tools for LinkedIn, supporting browser-based scraping and API-based operations for content management, media uploads, and reactions.63MIT
- AlicenseAqualityAmaintenanceSelf-hosted, ban-safe MCP server for LinkedIn that provides 22 tools for profiles, search, jobs, posts, connections, and messages. Integrates with any MCP-compatible client like Claude Desktop.581MIT
- Flicense-qualityCmaintenanceMCP server for LinkedIn API integration. Enables authentication, profile access, connections, search, messaging, and feed management via OAuth2.
- Flicense-qualityCmaintenanceA production-ready MCP server for interacting with the LinkedIn API, enabling profile lookup, post creation and deletion, image posting, and organization page management through a secure tool-based interface.
Related MCP Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.
linkedin-humblebrag MCP — wraps StupidAPIs (requires X-API-Key)
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/Hassan220022/harvestapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server