RocketReach MCP Worker
RocketReach MCP — Cloudflare Worker
A remote Model Context Protocol server for the RocketReach API, deployed as a Cloudflare Worker.
Exposes three tools that any MCP-compatible client (Claude Desktop, Cursor, Windsurf, etc.) can call:
Tool | Description |
| Search people by name, employer, title, or location |
| Full profile + verified contact info (emails, phones) |
| Company details: size, revenue, industry, location |
Why a Cloudflare Worker?
The server uses createMcpHandler from the Cloudflare Agents SDK — a stateless MCP handler that runs in a plain Worker (no Durable Objects needed). Each request is fully self-contained; the RocketReach API key is read directly from the incoming ROCKETREACH_API_KEY header, so multiple users can share the same deployment with different keys.
Quick deploy
# 1. Clone and install
git clone https://github.com/balazsnemeth/rocketreach-mcp-worker.git
cd rocketreach-mcp-worker
npm install
# 2. Log in to Cloudflare (first time only)
npx wrangler login
# 3. Deploy
npm run deployThe worker is now live at https://rocketreach-mcp.<your-subdomain>.workers.dev/mcp.
Optional: store a default API key as a secret
If you want the worker to work without a per-request header (e.g. for personal use), store your key as a Worker secret:
npx wrangler secret put ROCKETREACH_API_KEYClient configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"rocketreach": {
"command": "npx",
"args": [
"mcp-remote",
"https://rocketreach-mcp.<your-subdomain>.workers.dev/mcp",
"--header",
"ROCKETREACH_API_KEY:<your-rocketreach-api-key>"
]
}
}
}Cursor / Windsurf
Add to your MCP settings file:
{
"rocketreach": {
"command": "npx",
"args": [
"mcp-remote",
"https://rocketreach-mcp.<your-subdomain>.workers.dev/mcp",
"--header",
"ROCKETREACH_API_KEY:<your-rocketreach-api-key>"
]
}
}Note:
mcp-remoteproxies the local stdio transport (used by MCP clients) to the remote HTTP endpoint. Install it globally if needed:npm install -g mcp-remote.
Tools reference
search_people
Search for people in RocketReach. Returns basic profile information — no contact details are consumed from your plan's credit quota.
Parameters
Parameter | Type | Description |
|
| Full name or list of names — e.g. |
|
| Company name or list — e.g. |
|
| Job title or list — e.g. |
|
| City / region or list — e.g. |
|
| Radius around |
|
| 1-based pagination offset (default: |
|
| Results per page, max 100 (default: |
At least one of name, current_employer, title, or location is required.
Response shape
{
"total_results": 42,
"start": 1,
"next": 21,
"profiles": [
{
"id": 12345678,
"name": "Elon Musk",
"current_employer": "Tesla",
"current_title": "CEO",
"location": "Austin, TX",
"linkedin_url": "https://www.linkedin.com/in/elonmusk"
}
]
}lookup_person
Get a full person profile including verified contact information. Uses one credit per unique lookup.
Parameters
Parameter | Type | Description |
|
| The identifier value (see |
|
| How to identify the person (default: |
lookup_type values
Value |
| Notes |
| RocketReach numeric ID | Fastest, most reliable |
| Full LinkedIn profile URL | |
| Email address | |
|
| Pipe-separated |
| NPI number | Healthcare providers only |
Response includes id, name, current_employer, current_title, location, linkedin_url, status, contact_info (emails, phones, work email), job_history, education, skills, and social_profiles.
lookup_company
Get detailed company information.
Parameters
Parameter | Type | Description |
|
| The identifier value (see |
|
| How to identify the company (default: |
lookup_type values
Value | Example |
|
|
|
|
| Full LinkedIn company URL |
|
|
| RocketReach internal company ID |
Response includes id, name, domain, website, linkedin_url, description, industry, employees, employee_range, revenue, revenue_range, city, state, country, address, founded_year, company_type, ticker, and logo_url.
Local development
npm run devThe worker is served at http://localhost:8787. Point mcp-remote at it for local testing:
{
"rocketreach": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8787/mcp",
"--header",
"ROCKETREACH_API_KEY:<your-key>"
]
}
}API key priority
ROCKETREACH_API_KEYrequest header (sent bymcp-remote --header) — per-user, per-requestROCKETREACH_API_KEYWorker secret — shared fallback (set viawrangler secret put)
If neither is present the worker returns 401.
Tech stack
Cloudflare Workers — edge runtime
Cloudflare Agents SDK —
createMcpHandlerfor stateless MCP transport@modelcontextprotocol/sdk — MCP protocol
Zod — tool input validation
TypeScript
License
MIT
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/rolloutit/rocketreach-mcp-worker'
If you have feedback or need assistance with the MCP directory API, please join our Discord server