mcp-crm
Click on "Deploy 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., "@mcp-crmsearch CRM accounts for Acme"
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.
mcp-crm
A learning project: a Model Context Protocol server that exposes a CRM to an MCP client over stdio.
Sign-in goes through Microsoft Entra using the device-code flow. The resulting identity token is exchanged for a CRM access token, so CRM queries run as the signed-in user and return only what that user is allowed to see.
Requirements
Node.js 20+
An Entra app registration with the device-code (public client) flow enabled
A CRM API implementing the contract below
Related MCP server: GHL Coaching MCP Server
Setup
npm installCopy .env.example to .env and fill it in:
cp .env.example .envENTRA_CLIENT_ID, ENTRA_TENANT_ID, and CRM_API_BASE_URL are required — the server throws on startup if any is missing. .env is gitignored; never commit it.
CRM contract
The server targets any CRM exposing these three routes. Paths are relative to CRM_API_BASE_URL and can be remapped with the optional CRM_AUTH_PATH and CRM_ACCOUNTS_PATH variables, so a CRM that mounts them elsewhere needs no code change.
Route | Purpose |
| Accepts |
| Query params |
| Returns one account object. |
All CRM requests send Authorization: Bearer <access_token>, so results reflect the signed-in user's own permissions.
Running
npx tsx src/index.ts # run directly
npx tsc # type-check and build to dist/The server speaks MCP over stdio, so it is normally launched by a client rather than by hand. To register it with Claude Code:
{
"mcpServers": {
"crm": {
"command": "npx",
"args": ["tsx", "/absolute/path/to/mcp-crm/src/index.ts"]
}
}
}Log output goes to stderr, since stdout carries the MCP protocol.
Tools
Tool | Description |
| Begins Entra device-code sign-in and returns the code and URL to visit. Returns immediately; the sign-in completes in the background. |
| Reports whether that sign-in has finished, is still pending, or failed. |
| Searches real CRM accounts by name. Requires a completed sign-in. Returns up to 25 matches with |
| Fetches full details for a single CRM account by |
| Searches a small hardcoded list of sample accounts. No auth needed — used for testing the wiring without a live CRM. |
Sign-in flow
start_crm_login cannot block until Entra finishes, so it is split in two:
Call
start_crm_login. It returns the device code and the URL to open.Complete sign-in in the browser.
Call
crm_login_statusto confirm. Once it reports a signed-in user,search_crm_accountsandget_crm_accountwill work.
The token is held in memory only — restarting the server means signing in again.
License
ISC — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Authenticated MCP server for ClearPolicy policy and compliance workflows.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables managing Onde Inference accounts and model catalog operations through MCP tools such as login, app management, model registration, and assignment. Returns structured JSON over stdio for use with any MCP client.Apache 2.0
- FlicenseNot gradedqualityBmaintenanceProvides MCP tools to interact with GoHighLevel CRM data, including contacts, conversations, call transcripts, broker lead overviews, pipelines/opportunities, and task creation. Supports both stdio and HTTP transports for local and remote use.-
- AlicenseBqualityBmaintenanceEnables local MCP clients to manage messaging workflows via stdio: list and read chats/messages, send messages, react to messages, manage typing/read state, and handle contact cards and requests.16441 npmMIT
- FlicenseNot gradedqualityBmaintenanceProvides a one-shot CLI to open an MCP session, run a single CRM gateway tool, and exit, plus a stdio-to-Streamable-HTTP bridge for registering the gateway as an MCP connector.-