Recruit CRM MCP Server
⚠️ ATTENTION: Legacy Local Recruit CRM MCP Server: DEPRECATED
What this is: This repository contains the legacy local stdio Recruit CRM MCP server. It runs locally and connects directly to the Recruit CRM Public API using an account-wide API key. It is not the current official remote OAuth-based Recruit CRM MCP and is not recommended for new installations.
Use Recruit CRM's latest stable MCP instead:
Official remote MCP endpoint: https://agent.recruitcrm.io/mcp
The official MCP uses per-user OAuth with role-based permissions and includes Boolean and advanced filters with an app-like search experience, client briefs, pipeline analysis, and support for MCP-compatible clients, including Claude, ChatGPT, Perplexity, and others.
Existing API-key users
The old account-wide API-key connection no longer works. To reconnect:
Delete the existing Recruit CRM connection in your AI client.
In Recruit CRM, go to Admin Settings → User → Roles & Permissions and enable MCP Access for your role.
Reconnect using OAuth by following the official Recruit CRM MCP guide.
⚠️ Security: If the old API key is no longer used elsewhere, rotate or revoke it. It still grants full account access to anyone who holds it.
Legacy Local Recruit CRM MCP Server
Local stdio MCP server for Recruit CRM's Public API. This legacy server provides access to candidates, jobs, companies, tasks, meetings, notes, call logs, and more from AI tools like Claude and Codex.
Legacy installation
The instructions below are retained for existing users of this deprecated server. New users should follow the official Recruit CRM MCP setup guide.
Option 1: Claude Desktop Extension
Download and install Claude Desktop, then sign in
Download the latest
recruitcrm-mcp-server.mcpbfrom the Releases pageDouble-click to install, or drag it into Claude Desktop
Enter your Recruit CRM API token when prompted (found in Recruit CRM → Admin Settings → API)
Option 2: npm Package (for any MCP client)
{
"mcpServers": {
"recruit-crm": {
"command": "npx",
"args": ["-y", "recruitcrm-mcp-server"],
"env": {
"RECRUITCRM_API_TOKEN": "<your-api-token>"
}
}
}
}Codex for Mac
In the Codex Mac app:
Open Settings → MCP Servers → Add server
Enter name
recruit_crmSelect STDIO
Set Command to launch to
npxAdd arguments
-yandrecruitcrm-mcp-serverAdd environment variable
RECRUITCRM_API_TOKENwith your Recruit CRM API tokenLeave Environment variable passthrough empty
Leave Working directory blank unless you need a custom launch directory, then save
Manual Codex config fallback:
[mcp_servers.recruit_crm]
command = "npx"
args = ["-y", "recruitcrm-mcp-server"]
[mcp_servers.recruit_crm.env]
RECRUITCRM_API_TOKEN = "<your-api-token>"Codex MCP stdio servers use command, args, and env fields as documented in the Codex MCP docs.
Mac users: If you get "Failed to spawn process", use the full path to
npx(e.g./usr/local/bin/npx) as thecommand.
Example Prompts
Once installed, try asking Claude:
"Show me open jobs for Acme Corp"
"What companies do we have in the fintech space?"
"What tasks are due this week?"
"Pull up recent notes on John Smith"
"Show call logs from last month"
"Show me Frank's progression across all jobs"
"How many candidates are in Interview hiring stage for Sales Consultant?"
"Assign Jane Doe to the Operations Analyst job"
"Move John Smith to the Interview stage for the Senior Engineer role"
Tools
Ownership prompts: when a user says "my", "mine", or "owned by me", treat that as an owner-scoped request where the API supports owner filters. Resolve the Recruit CRM user id via list_users when needed, then use owner_id on search_candidates, search_jobs, search_companies, search_contacts, search_tasks, or search_meetings. search_notes, search_call_logs, and search_hotlists do not support owner filters; use an owner-scoped upstream search when applicable or explain the limitation.
Tool | Description |
| Search candidates and return compact summaries for large result sets. Returns |
| List all candidates with pagination and sorting only (no filter required). Use |
| Create one candidate or update a confirmed duplicate via |
| Search jobs and return compact summaries for large result sets. Returns job, company, and contact slugs, including |
| List all jobs with pagination and sorting only, including |
| Search companies and return compact summaries for large result sets. Returns company slug and related contact slugs for Recruit CRM app links. |
| List all companies with pagination and sorting only. Use |
| Search contacts and return compact summaries for large result sets. Requires at least one real filter; |
| List contacts with pagination and sorting only. Use this for unfiltered recent/all-contact requests. Supports the same opt-in |
| List Recruit CRM users with compact |
| Search hotlists by required |
| Create one Recruit CRM hotlist. Requires |
| Add up to 10 record slugs to an existing hotlist. This is an additive write tool. It runs sequentially, ignores duplicate input slugs, and returns |
| Search tasks and return compact task summaries with related entity context. |
| List compact task type rows with |
| Create one Recruit CRM task. Requires |
| Search meetings and return compact meeting summaries with scheduling metadata. |
| List compact meeting type rows with |
| Create one Recruit CRM meeting. Requires |
| Search notes and return compact note summaries with related entity context. |
| List compact note type rows with |
| Create one Recruit CRM note. Requires |
| Search call logs and return compact call summaries with related entity context. |
| Fetch full details for up to 10 candidates in parallel by slug. Duplicates are deduplicated. Returns |
| Fetch one job by slug and return the raw Recruit CRM payload. |
| Fetch full details for up to 10 companies in parallel by slug. Returns |
| Fetch full details for up to 10 contacts in parallel by slug. Returns |
| Fetch assigned candidates for one job and return compact assignment summaries. The job's |
| List compact candidate hiring stage rows for a hiring pipeline. Pass |
| Assign a candidate to a job. Requires |
| Update a candidate's hiring stage for a specific job assignment. Requires |
| List job pipeline statuses (Open, Closed, On Hold, plus custom labels) with |
| Fetch one candidate's job assignment hiring stage history. |
| List curated candidate custom field metadata. Set |
| Fetch curated details for one candidate custom field, including full option values. |
| Get parent-child dependency relationships for custom fields of a given entity type ( |
| Diagnose a single job's hiring pipeline in one call: stage distribution, days-in-current-stage, idle candidates, bottleneck verdict, recent activity, and suggested next actions. Set |
Most tools are read-only (readOnlyHint: true). create_candidate, create_hotlist, add_records_to_hotlist, create_task, create_meeting, create_note, assign_candidate_to_job, and update_candidate_hiring_stage are mutating tools and should only be used when explicitly requested by the user.
create_candidate notes: pass source only when the user provides one. URL fields such as linkedin, github, facebook, twitter, xing, avatar, and resume are normalized with https:// when the scheme is missing. For candidate custom fields, resolve the field id with list_candidate_custom_fields, confirm dropdown or multiselect values with get_candidate_custom_field_details, and call get_custom_field_dependencies for any child field to ensure the parent field and its value are also included in the custom_fields array.
Open In Recruit CRM
Recruit CRM entities follow the app URL pattern https://app.recruitcrm.io/<entity>/<slug>.
Entity | App Link Pattern |
Candidate |
|
Company |
|
Contact |
|
Job |
|
Deal |
|
Configuration
Required
RECRUITCRM_API_TOKEN: your Recruit CRM API token
Optional
RECRUITCRM_BASE_URL: defaulthttps://api.recruitcrm.io/v1RECRUITCRM_TIMEOUT_MS: default10000RECRUITCRM_DEBUG_SCHEMA_ERRORS: defaultfalse
Privacy And Security
Runs locally on your machine over
stdio; no data sent to third partiesAPI tokens read from environment variables only; stored securely in OS keychain when using the
.mcpbextensionSearch results exclude emails, phone numbers, and other sensitive fields by default
Search and detail tools are read-only by default
create_candidate,create_hotlist,add_records_to_hotlist,create_task,create_meeting,create_note,assign_candidate_to_job, andupdate_candidate_hiring_stageare write tools; this extension still does not expose delete operationsSee our full Privacy Policy
Troubleshooting
"Server disconnected" or "Failed to spawn process"
Make sure Node.js ≥ 20 is installed (nodejs.org)
On Mac, use the full path to
npx(runwhich npxin terminal to find it)Use the
.mcpbinstall option instead; it doesn't need Node set up
"Authentication failed" / 401 errors
Verify your API token at Recruit CRM → Admin Settings → API
Ensure the token has the required permissions for the tools you're using
Other issues
File an issue at GitHub Issues
Contact support: support@recruitcrm.io
Local Development
npm install
npm run build
npm testLicense
MIT. See LICENSE
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/Workforce-Cloud-Tech/mcp-recruitcrm'
If you have feedback or need assistance with the MCP directory API, please join our Discord server