Integration App MCP Server

公式

お客様に代わって、他の

ドキュメント

Membrane MCP Server

Screenshot 2025-07-07 at 23 03 05

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を使用してください。