Bitrix24 MCP Bridge
Bitrix24 MCPブリッジ
Claude(MCP)とBitrix24 CRM/タスクを橋渡しするブリッジ。Begetホスティング上に
mcp-bitrix.karpovpartners-it.ru で展開しています。
1. なぜこれが必要になったのか
当初はBitrix24に組み込まれている「MCP接続」コネクタ(アプリ aiassistant.bitrix_mcp /
マーケットプレイスの「Б24」ボタン)を介してClaudeをBitrix24に接続しようとしました。
しかし、この機能は動作しないことが判明しました:/authorize、/.well-known/oauth-authorization-server、
/.well-known/oauth-protected-resource のエンドポイントは、すべての設定とサブスクリプションが
正常であるにもかかわらず、素のnginx 404を返します。これはBitrix24側のバグ/未完成機能であり、
設定ミスではありません。
回避策として、独自のMCPサーバー(「ブリッジ」)を作成しました。このサーバーは:
ClaudeからのMCPリクエストをStreamable HTTPプロトコルで受け付けます;
それらを受信ウェブフック(CRM + タスクのみの権限でBitrix24に作成)を介した 通常のBitrix24 REST API呼び出しに変換します;
結果をMCPツール応答としてClaudeに返します。
Related MCP server: fast-bitrix24-mcp
2. アーキテクチャとファイル
ファイル | 用途 |
| ブリッジのメインコード(ESモジュール)。Expressサーバーを起動し、 |
|
|
| 依存関係: |
| Phusion Passengerの設定テンプレート+環境変数。実際のシークレットを含む本番用 |
Claudeで利用可能なツール
bitrix24_call— 任意のcrm.*、task.*、tasks.*、user.current、profileメソッドを直接呼び出します(エスケープハッチ)。bitrix24_list_crm/bitrix24_get_crm/bitrix24_add_crm/bitrix24_update_crm— CRMレコード(lead、deal、contact、company)の 一覧/読み取り/作成/更新。bitrix24_list_tasks/bitrix24_add_task/bitrix24_update_task/bitrix24_complete_task— タスクの操作。
サーバーは呼び出し可能なBitrix24メソッドを crm.、task.、tasks.、user.current、profile
プレフィックスに厳格に制限しています(server.mjs の ALLOWED_METHOD_PREFIXES を参照)—
これは、ウェブフックに将来より広い権限が付与された場合に備えた保護です。
3. 認証 / セキュリティ
ClaudeインターフェースのカスタムMCPコネクタには、任意のHTTPヘッダーを設定するフィールドがありません
— URLのみ(+オプションでOAuth Client ID/Secret)。そのため、Authorization ヘッダーの代わりに
シークレットはURLパスに埋め込まれています:
https://mcp-bitrix.karpovpartners-it.ru/mcp/<секрет>シークレットとBitrix24ウェブフックのアドレスは、サーバー上の本番用 .htaccess とプロジェクト所有者の
プライベートコピーにのみ保存されています — 意図的にこのリポジトリにはコミットされていません
(.gitignore 参照)。URLからシークレットを知った人は誰でも、ウェブフックの権限の範囲内で
Bitrix24のCRMとタスクにアクセスできます。
4. 動作の仕組み(ステップバイステップ)
ClaudeがMCPコネクタを開く →
/mcp/<シークレット>に{"method":"initialize", ...}の ボディでPOSTします。server.mjsのExpressルートが新しいMcpServerを作成します (StreamableHTTPServerTransport、sessionIdGenerator: undefined— セッションを保持しないサーバーで、各リクエストは独立しています)。Claudeが
tools/listを呼び出し、次に特定のツール(例:bitrix24_list_crm)でtools/callを呼び出します。server.mjsがbitrixCall(method, params)を呼び出し、これがhttps://<ポータル>.bitrix24.ru/rest/<id>/<ウェブフック>/<メソッド>.jsonに対してfetch()を実行します。Bitrix24の応答はMCP形式にラップされ、Claudeに返されます。
5. ゼロからの展開
Bitrix24で受信ウェブフックを作成:設定 → 開発者向け → その他 → 受信ウェブフック。権限は最小限のCRM+タスク。
リポジトリをサーバー上のサイトディレクトリ(ドメイン/サブドメインの
public_html)に クローンします。そのディレクトリで
npm installを実行します(express、zod、@modelcontextprotocol/sdk、undiciがインストールされます)。.htaccess.exampleを.htaccessにコピーし、実際のBITRIX_WEBHOOK_URLとMCP_PATH_SECRETを設定します。Begetで:
mkdir tmp && touch tmp/restart.txt— コードに変更を加えた後の アプリ再起動用のPassengerコマンドです。Begetパネルで:「サイト」→ 該当サイト →「⋮」→「ドメインを追加」— この手順がないと、Apacheはコードにアクセスしようとすらしません (セクション6.2参照 — 忘れやすい、わかりにくいエラーです)。
6. Begetでの展開中に遭遇した問題とその解決方法
デバッグログ — 古いNode.jsを使用するBegetや他の共有ホスティングでの再展開時に役立ちます。
6.1. BegetのNode.js — バージョン16.20.2、古すぎる
Beget側(Ubuntu 18.04、glibc 2.27)では、Node 18+の公式ビルドは起動しません
(GLIBC_2.28' not found)。Node 16.20.2に留まり、最新の依存関係
(@modelcontextprotocol/sdk、Express 5)に必要なNode 16に不足しているグローバルオブジェクトを
手動で追加する必要がありました:
fetch、Headers、Request、Response—undiciパッケージ経由。crypto(Web Crypto API、crypto.randomUUID())— 組み込みのnode:crypto(webcrypto)経由。ReadableStream、WritableStream、TransformStream— 組み込みのnode:stream/web経由。structuredClone、MessageChannel/MessagePort— 念のため、node:v8とnode:worker_threads経由。
これらはすべて server.mjs の冒頭で、ExpressとMCP SDKのインポートより前に
行われます(通常のファイル先頭の import ではなく await import(...) で実装 —
理由は次の項目を参照)。
6.2. ドメインがサイトフォルダに「紐付け」されていなかった
コードをサーバーにアップロードした後、サイトはアプリの代わりにBegetの定番ページ 「ドメインがサーバー上のディレクトリに紐付けられていません」を返しました。 サイトフォルダを作成してファイルをアップロードするだけでは不十分で、ドメインを パネルから別途「追加」する必要があります:サイト → 該当サイト → ⋮ →「ドメインを追加」。 見落としやすい、わかりにくい手順です。
6.3. ERR_REQUIRE_ESM:PassengerがESモジュールを読み込めない
BegetのPassenger(古いバージョン、passenger40)は require() で起動ファイルを
実行しますが、Nodeの require() は原則としてESモジュール(import/export、
package.jsonの type: module)を読み込めません。server.mjs はファイルのトップレベルで
await を使用しています — これはESモジュールでのみ可能です。
解決策:package.json に "type": "module" はありません(デフォルトで .js は
CommonJS)、コード自体は .mjs 拡張子のファイルにあります(.mjs 拡張子は
package.json に関係なく常にESモジュールです)、そしてPassengerのエントリポイントは
app.js — 小さなCommonJSファイルです:
// app.js
import('./server.mjs').catch((err) => {
console.error('Failed to start server:', err);
process.exit(1);
});require() は app.js を問題なく読み込みます(通常のCommonJSです)、そしてその中で
動的な import()(宣言ではなく関数です)がESモジュール server.mjs を
非同期に読み込むことができます。
6.4. URLパス内のシークレット
MCP_PATH_SECRET — ランダムな文字列(例:Pythonの secrets.token_urlsafe(32)、
またはブラウザコンソールの crypto.randomUUID() + crypto.randomUUID())。
シークレットを再発行する必要がある場合 — 新しいものを生成し、サーバー上の .htaccess と
Claudeのコネクタ設定を更新します。
7. Claudeでの接続方法
claude.ai → 設定 → Connectors → Add custom connector。
Name:
Bitrix24(任意)。Remote MCP server URL:
https://mcp-bitrix.karpovpartners-it.ru/mcp/<シークレット>OAuth Client ID / Secret — 空のままにします。不要です(認証は すでにURLに埋め込まれています)。
保存し、チャットでコネクタを有効にします。
8. 未解決の問題 — Bitrix24のネイティブMCPコネクタ
Bitrix24サポートに、壊れたネイティブMCPコネクタ(マーケットプレイスの「Б24」)について
連絡する価値があります:/authorize と標準のOAuthディスカバリーエンドポイントは、
設定が有効でサブスクリプションがアクティブな状態でも素のnginx 404を返します。
Bitrix24がこれを修正した場合、公式コネクタに切り替えることができます —
または、このブリッジを残すこともできます。これも動作し、より多くの制御を提供します
(例:コード内でメソッドをCRM+タスクに直接制限すること)。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides a REST API and MCP server to interact with Bitrix24 CRM, enabling CRUD operations on entities like deals, leads, contacts, and tasks via natural language.1013
- FlicenseNot gradedqualityCmaintenanceMCP server for interacting with Bitrix24 REST API, enabling CRUD operations on deals, contacts, companies, users, leads, and tasks, plus analytics and risk assessment.2
- FlicenseNot gradedqualityDmaintenanceMCP server for Bitrix24 CRM integration, enabling AI agents to manage contacts, deals, tasks, and more via natural language.10
- FlicenseNot gradedqualityDmaintenanceProduction-grade MCP server for Bitrix24 Cloud with 45 tools, safe by default. Connects Claude Desktop to your Bitrix24 tenant for AI-driven CRM, tasks, messaging, and calendar operations.
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.
MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/KarpovPartnersCom/bitrix24-mcp-bridge-claude'
If you have feedback or need assistance with the MCP directory API, please join our Discord server