Skip to main content
Glama
JTSTBP

NewCrm MCP Server Foundation

by JTSTBP

NewCrm MCPサーバー基盤

このプロジェクトは、既存のNewCrm CRM用の独立したMCPサーバーです。CRMコードベースを変更せず、MongoDBにも直接接続しません。

現在のスコープは、将来のMCP統合のためのクリーンな基盤に意図的に限定されています。

アーキテクチャ

ChatGPT Work ↓ OAuth 2.1 ↓ NewCrm MCPサーバー ↓ 既存のNewCrmバックエンドAPI ↓ MongoDB

MCPサーバーは、可能な限り既存のバックエンドAPIレイヤーを通じて既存のCRMと通信するように設計されています。

Related MCP server: @kemosoft/mcp-heymax-crm

現在のステータス

このプロジェクトには意図的に以下は含まれていません:

  • OAuth実装

  • MCPツール

  • HubSpot統合

  • 書き込み操作

  • 作成、更新、削除操作

  • MongoDBアクセス

  • 一括エクスポート

  • Webhook

  • バッチ更新

プロジェクト構造

NewCrm-MCP/
├── src/
│   ├── audit/
│   │   └── logger.js
│   ├── auth/
│   │   └── tokenValidator.js
│   ├── config/
│   │   └── env.js
│   ├── permissions/
│   │   └── roleDefinitions.js
│   ├── services/
│   │   └── crmApiClient.js
│   ├── tools/
│   │   └── index.js
│   └── server.js
├── .env.example
├── .gitignore
├── package.json
├── README.md
└── node_modules/

インストール

  1. プロジェクトフォルダーでターミナルを開きます。

  2. 依存関係をインストールします:

npm install

環境変数

サンプルファイルをコピーし、ローカルの.envファイルに値を設定します:

copy .env.example .env

.envファイルには、以下のような値を含める必要があります:

  • PORT

  • HOST

  • NODE_ENV

  • CRM_API_BASE_URL=https://www.jtcrm.in/api

  • MCP_SERVER_NAME

  • MCP_SERVER_VERSION

  • LOG_LEVEL

  • CRM_API_TIMEOUT_MS

シークレットや実際のトークンをソース管理にコミットしないでください。永続的な管理者JWTや本番環境の認証情報をプロジェクトに保存しないでください。

CRM API統合

このプロジェクトには、既存のNewCrmバックエンドAPIへの安全な読み取り専用アクセスのための再利用可能なCRM APIクライアントが含まれています。

現在サポートされているエンドポイント:

  • GET /api/leads

このサービスは、明示的に設定されたエンドポイントのみに意図的に制限されています。MCPユーザーからの任意のURLは受け付けません。

使用例:

import { getLeads } from "./src/services/crmApiClient.js";

const result = await getLeads({
  authToken: process.env.CRM_API_TEST_AUTH_TOKEN,
});

これにより、直接のMongoDBアクセスや書き込み操作を回避しながら、将来のCRM API呼び出しのために統合を再利用可能に保ちます。

安全なテストガイダンス

開発またはテストの場合は、呼び出し元またはローカルの一時的な環境値から実行時にユーザースコープのJWTを渡してください。共有の管理者トークンを.envに置かないでください。

ローカルテストフローの例:

$env:CRM_API_TEST_AUTH_TOKEN="<user_jwt_here>"
node --input-type=module -e "import { getLeads } from './src/services/crmApiClient.js'; const result = await getLeads({ authToken: process.env.CRM_API_TEST_AUTH_TOKEN }); console.log(result);"

このサービスはトークン自体をログに記録することはなく、呼び出し元が提供した場合にのみx-auth-tokenヘッダーを送信します。

サーバーの実行

npm start

オプションの開発モード:

npm run dev

/mcpの仕組み

このプロジェクトは、Streamable HTTPトランスポートを備えた公式のMCP SDKを使用しています。

サーバーは/mcpに単一のMCPエンドポイントを公開します。

  • POST /mcpは、MCP JSON-RPC初期化と後続のリクエストを処理します。

  • 初期化リクエストを受信すると、新しいセッションが作成されます。

  • 各セッションは、関連付けられたStreamable HTTPトランスポートを保存します。

  • DELETE /mcpは、不要になったセッションを閉じます。

  • GET /mcpは、この基盤がストリーミングGETリクエストをまだサポートしていないため、現在405 Method Not Allowedを返します。

これは、CRM機能を時期尚早に追加することなく、将来のツールおよびバックエンド統合のための正しい基盤です。

サーバーのテスト

サーバーを起動した後、正常にリッスンしていることを確認します:

curl -i http://127.0.0.1:3002/mcp

期待される動作:

  • サーバーは、/mcpへのGETリクエストに対してHTTP 405で応答する必要があります。

  • サーバーは、互換性のあるクライアントが接続されると、MCP初期化およびJSON-RPCトラフィックのPOSTリクエストも受け付ける必要があります。

起動が成功すると、以下のようなログで示されます:

{"timestamp":"...","level":"info","message":"NewCrm MCP foundation server started","host":"127.0.0.1","port":3002,"endpoint":"/mcp"}

注意事項

このリポジトリは、既存のNewCrmプロジェクトから意図的に分離されています。これはスタンドアロンのMCP基盤サーバーであり、直接のデータベースアクセスやCRM固有のビジネスロジックは含まれていません。

Related MCP Connectors

Related MCP Servers