Skip to main content
Glama
mcp-crm

mcp-crm

by Saipranoy

mcp-crm

Un proyecto de aprendizaje: un servidor Model Context Protocol que expone un CRM a un cliente MCP a través de stdio.

El inicio de sesión se realiza a través de Microsoft Entra mediante el flujo de código de dispositivo. El token de identidad resultante se intercambia por un token de acceso al CRM, de modo que las consultas al CRM se ejecutan como el usuario autenticado y devuelven solo lo que ese usuario tiene permiso de ver.

Requisitos

  • Node.js 20+

  • Un registro de aplicación de Entra con el flujo de código de dispositivo (cliente público) habilitado

  • Una API de CRM que acepte un token de Entra en POST /api/accounts/auth/entra y sirva GET /api/accounts

Related MCP server: Relay MCP

Configuración

npm install

Crea un .env en la raíz del proyecto:

ENTRA_CLIENT_ID=<your app registration's client id>
ENTRA_TENANT_ID=<your directory tenant id>
CRM_API_BASE_URL=https://your-crm.example.com

Los tres son necesarios: el servidor lanza un error en el arranque si falta alguno. .env está en .gitignore; nunca lo incluyas en control de versiones.

Ejecución

npx tsx src/index.ts     # run directly
npx tsc                  # type-check and build to dist/

El servidor habla en MCP a través de stdio, por lo que normalmente lo lanza un cliente en lugar de una persona. Para integrarlo con Claude Code:

{
  "mcpServers": {
    "crm": {
      "command": "npx",
      "args": ["tsx", "/absolute/path/to/mcp-crm/src/index.ts"]
    }
  }
}

La salida de registro se envía a stderr, ya que stdout transporta el protocolo MCP.

Herramientas

Herramienta

Descripción

start_crm_login

Inicia el inicio de sesión de Entra mediante código de dispositivo y devuelve el código y la URL a visitar. Devuelve enseguida; el inicio de sesión se completa en segundo plano.

crm_login_status

Indica si ese inicio de sesión ha finalizado, sigue pendiente o ha fallado.

search_crm_accounts

Busca cuentas reales del CRM por nombre. Requiere un inicio de sesión completado. Devuelve hasta 25 coincidencias con id, name, status y sales_rep.

search_accounts

Busca en una pequeña lista fija de cuentas de ejemplo. No requiere autenticación: se usa para probar el cableado sin un CRM en vivo.

Flujo de inicio de sesión

start_crm_login no puede bloquearse hasta que Entra termine, por lo que se divide en dos partes:

  1. Llama a start_crm_login. Devuelve el código de dispositivo y la URL que debes abrir.

  2. Completa el inicio de sesión en el navegador.

  3. Llama a crm_login_status para confirmar. En cuanto reporte un usuario conectado, search_crm_accounts funcionará.

El token se guarda solo en memoria: reiniciar el servidor significa volver a iniciar sesión.

Licencia

ISC

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    Enables 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.
    16
    152 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides 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.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to query projects, fetch findings, trigger analysis, upload CycloneDX BOMs, and check async token status against an OWASP Dependency-Track instance via stdio.
    21 npm
    MIT