Integration App MCP Server
公式お客様に代わって、他の
ドキュメント
Membrane MCP Server
Membrane MCP ServerはModel Context Protocol (MCP)サーバーであり、接続されたインテグレーションのアクションをツールとして提供します。
アプリケーションでこのMCPサーバーを使用する方法を示す、公式のAI Agent Exampleをご覧ください。
📋 前提条件
- Node.js (v18以上)
- Membraneアカウント
⚙️ インストール
git clone https://github.com/membranehq/mcp-server.git
cd mcp-server
npm install
npm run build
🛠️ ローカル開発
開発サーバーをローカルで実行するには、以下で起動します:
npm run dev
サーバーはhttp://localhost:3000で稼働します ⚡️
🧪 テストの実行
# Run the server in test mode
npm run start:test
# then run tests
npm test
🚀 デプロイ
このMCPサーバーの独自インスタンスを、任意のクラウドホスティングサービスにデプロイできます。
🐳 Docker
プロジェクトには、容易なコンテナ化デプロイのためのDockerfileが含まれています。
docker build -t membrane-mcp-server .
docker run -p 3000:3000 membrane-mcp-server
🔗 MCPサーバーへの接続
このMCPサーバーは2つのトランスポートをサポートします:
| トランスポート | エンドポイント | ステータス |
|---|---|---|
| SSE (Server‑Sent Events) | /sse | 🔴 非推奨 — MCP仕様において2024年11月5日より非推奨 |
| HTTP (Streamable HTTP) | /mcp | 🟢 推奨 — SSEを置き換え、双方向ストリーミングをサポート |
🔐 認証
クエリまたはAuthorizationヘッダーを介してMembraneアクセストークンを提供します:
?token=ACCESS_TOKEN
Authorization: Bearer ACCESS_TOKEN
SSE (非推奨)
await client.connect(
new SSEClientTransport(
new URL(
`https://<HOSTED_MCP_SERVER_URL>/sse`
)
{
requestInit: {
headers: {
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
},
}
)
);
Streamable HTTP (推奨)
await client.connect(
new StreamableHTTPClientTransport(
new URL(`https://<HOSTED_MCP_SERVER_URL>/mcp`)
{
requestInit: {
headers: {
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
},
}
)
);
⚡ 静的モードと動的モード
デフォルトでは、MCPサーバーは静的モードで実行され、接続されたすべてのインテグレーションに対して利用可能なすべてのツール(アクション)を返します。
動的モード(?mode=dynamic)では、サーバーは1つのツール(enable-tools)のみを返します。このツールを使用して、そのセッションで実際に必要なツールを選択的に有効にできます。
動的モードでは、ユーザーのクエリに最も関連するツールを実装側で特定する必要があります。特定したら、適切なリストを指定してLLMにenable-toolsツールを呼び出すよう促します。
これが実際にどのように動作するか確認したいですか?AI Agent Exampleをご覧ください。
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const client = new Client({
name: 'example-membrane-mcp-client',
version: '1.0.0',
});
const transport = new StreamableHTTPClientTransport(
new URL(`https://<HOSTED_MCP_SERVER_URL>/mcp?mode=dynamic`),
{
requestInit: {
headers: {
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
},
}
);
await client.connect(transport);
await client.callTool({
name: 'enable-tools',
arguments: {
tools: ['gmail-send-email', 'gmail-read-email'],
},
});
🔧 特定のインテグレーションのツールを取得する
静的モードでは、MCPサーバーは提供されたトークンに関連付けられたすべてのアクティブな接続からツールを取得します。
appsクエリパラメータ(/mcp?apps=google-calendar,google-docs)を渡すことで、特定のインテグレーションのツールのみを取得することもできます。
💬 チャットセッション管理(実験的)
MCPサーバー(streamable-httpトランスポートのみ)は、永続的なチャットセッションをサポートします。リクエストにx-chat-idヘッダーを含めることで、特定のチャットのセッションを自動的に追跡します。これは標準のMCPセッションに加えて提供される実験的な機能です。
新しいチャットセッションの開始:
POST /mcp
Authorization: Bearer YOUR_ACCESS_TOKEN
x-chat-id: my-awesome-chat-123
チャットセッションの取得:
GET /mcp/sessions
Authorization: Bearer YOUR_ACCESS_TOKEN
レスポンス:
{
"my-awesome-chat-123": "session-uuid-1",
"another-chat-456": "session-uuid-2"
}
この機能により、会話に同じセッションを使用できます。実際の動作については、AI Agent Exampleをご覧ください。
他のMCPクライアントの設定
📝 Cursor
このサーバーをCursorで使用するには、~/.cursor/mcp.jsonファイルを更新します:
{
"mcpServers": {
"membrane": {
"url": "https://<HOSTED_MCP_SERVER_URL>/sse?token={ACCESS_TOKEN}"
}
}
}
変更を反映させるためにCursorを再起動します。
🤖 Claude Desktop
このサーバーをClaudeで使用するには、設定ファイル(Settings > Developer > Edit Config)を更新します:
{
"mcpServers": {
"membrane": {
"url": "https://<HOSTED_MCP_SERVER_URL>/sse?token={ACCESS_TOKEN}"
}
}
}
🔧 トラブルシューティング
- アクセストークンが有効であり、こちらの手順に従って生成されていることを確認してください。
- 起動時や接続試行時のエラーや問題について、MCPサーバーのログを確認してください。
- テストとデバッグにはMCP Inspectorを使用してください。