Skip to main content
Glama
mcp-crm

mcp-crm

by Saipranoy

mcp-crm

学習用プロジェクトです。Model Context Protocol サーバーで、CRM を stdio 経由で MCP クライアントに公開します。

サインインはデバイスコードフローを利用して Microsoft Entra で行われます。取得した ID トークンは CRM アクセストークンに交換され、CRM クエリはサインインしたユーザーとして実行されます。そのため、返されるのは、そのユーザーが閲覧を許可されたデータだけです。

要件

  • Node.js 20+

  • デバイスコード(パブリッククライアント)フローを有効にした Entra アプリの登録

  • POST /api/auth/entra で Entra トークンを受け付け、GET /api/accounts を提供する CRM API

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

3 つすべて必須です。いずれかが欠けていると、サーバーは起動時に例外をスローします。.env は gitignore されているため、コミットしないでください。

実行

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

サーバーは stdio 上で MCP を利用して通信するため、通常は手動ではなくクライアントから起動されます。Claude Code に登録するには:

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

ログ出力は stderr に送られます。stdout が MCP プロトコルを運ぶためです。

ツール

ツール

説明

start_crm_login

Entra デバイスコード サインインを開始し、アクセス先のコードと URL を返します。戻りは即座で、サインインはバックグラウンドで完了します。

crm_login_status

そのサインインが完了したか、まだ保留中か、失敗したかを報告します。

search_crm_accounts

実際の CRM アカウントを名前で検索します。完了したサインインが必要です。id、name、status、sales_rep を含む最大 25 件を返します。

search_accounts

ハードコードされた小さなサンプルアカウントのリストを検索します。認証は不要です。実 CRM を使わずに接続のテストのために使用します。

サインインの流れ

start_crm_login は Entra が完了するまでブロックできないため、次の 2 つに分かれています:

  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
    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.
    24 npm
    MIT