Skip to main content
Glama
Saipranoy

mcp-crm

by Saipranoy

mcp-crm

Учебный проект: сервер Model Context Protocol, который предоставляет CRM MCP-клиенту через stdio.

Вход выполняется через Microsoft Entra с использованием потока с кодом устройства. Полученный идентификационный токен обменивается на токен доступа к CRM, поэтому запросы к CRM выполняются от имени вошедшего пользователя и возвращают только те данные, которые этот пользователь имеет право видеть.

Требования

  • Node.js 20+

  • Регистрация приложения в Entra с включённым потоком с кодом устройства (публичный клиент)

  • CRM API, который принимает токен Entra по адресу POST /api/auth/entra и отдаёт GET /api/accounts

Related MCP server: Relay MCP

Настройка

npm install

Создайте файл .env в корне проекта:

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

Все три значения обязательны — сервер выдаст ошибку при запуске, если какого-то из них нет. .env находится в gitignore; не коммитьте его.

Запуск

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

Сервер общается по MCP через stdio, поэтому его обычно запускает клиент, а не вручную. Чтобы зарегистрировать его в Claude Code:

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

Журнал выводится в stderr, поскольку stdout несёт протокол MCP.

Инструменты

Tool

Description

start_crm_login

Начинает вход через Entra с кодом устройства и возвращает код и URL для перехода. Возвращается сразу; вход завершается в фоне.

crm_login_status

Сообщает, завершился ли вход, всё ещё он ожидает завершения или произошла ошибка.

search_crm_accounts

Ищет реальные аккаунты CRM по названию. Требуется завершённый вход. Возвращает до 25 совпадений с полями id, name, status и sales_rep.

search_accounts

Ищет в небольшом жёстко заданном списке примеров аккаунтов. Аутентификация не требуется — используется для проверки связки без реальной CRM.

Порядок входа

start_crm_login не может ждать завершения входа в Entra, поэтому он разделён на два этапа:

  1. Вызовите start_crm_login. Он вернёт код устройства и URL, который нужно открыть.

  2. Завершите вход в браузере.

  3. Вызовите crm_login_status для подтверждения. Как только он сообщит о вошедшем пользователе, search_crm_accounts заработает.

Токен хранится только в памяти — перезапуск сервера означает, что нужно входить заново.

Лицензия

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
    37 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.
    6 npm
    MIT