Integration App MCP Server

官方

代表您的客户与任何其他SaaS应用进行交互。

文档

Membrane MCP 服务器

Screenshot 2025-07-07 at 23 03 05

Membrane MCP 服务器是一个模型上下文协议 (MCP) 服务器,它为 Membrane 上已连接的集成应用提供作为工具的操作。

这是我们官方的 AI 代理示例,展示了如何在你的应用中使用此 MCP 服务器。

📋 先决条件

  • 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 服务器支持两种传输方式:

传输方式端点状态
SSE(服务器发送事件)/sse🔴 已弃用 — 自 2024 年 11 月 5 日起在 MCP 规范中弃用
HTTP(可流式 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}`,
        },
      },
    }
  )
);

可流式 HTTP(推荐)


await client.connect(
  new StreamableHTTPClientTransport(
    new URL(`https://<HOSTED_MCP_SERVER_URL>/mcp`)
    {
      requestInit: {
        headers: {
          Authorization: `Bearer ${ACCESS_TOKEN}`,
        },
      },
    }
  )
);

⚡ 静态模式与动态模式

默认情况下,MCP 服务器以静态模式运行,这意味着它会返回所有已连接集成应用的所有可用工具(操作)。

使用动态模式?mode=dynamic),服务器将仅返回一个工具enable-tools。你可以使用此工具有选择地启用该会话实际需要的工具。

在动态模式下,你的实现应确定哪些工具与用户查询最相关。确定后,提示 LLM 使用适当的列表调用 enable-tools 工具。

想了解这在实践中如何运作?查看我们的 AI 代理示例

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 服务器(仅限可流式 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 代理示例,了解这在实践中如何运作。

配置其他 MCP 客户端

📝 Cursor

要将此服务器与 Cursor 一起使用,请更新 ~/.cursor/mcp.json 文件:

{
  "mcpServers": {
    "membrane": {
      "url": "https://<HOSTED_MCP_SERVER_URL>/sse?token={ACCESS_TOKEN}"
    }
  }
}

重启 Cursor 以使更改生效。

🤖 Claude Desktop

要将此服务器与 Claude 一起使用,请更新配置文件(设置 > 开发者 > 编辑配置):

{
  "mcpServers": {
    "membrane": {
      "url": "https://<HOSTED_MCP_SERVER_URL>/sse?token={ACCESS_TOKEN}"
    }
  }
}

🔧 故障排除

  • 确保你的访问令牌有效,并且你按照这些说明生成它
  • 检查 MCP 服务器日志,了解启动或连接尝试期间的任何错误或问题。
  • 使用 MCP Inspector 进行测试和调试