模型上下文协议服务器

Membrane MCP Server是一个模型上下文协议服务器,提供连接集成工具的操作。

  • by membranehq
  • TypeScript
  • 本地部署
  • 36 星标
  • 更新于
在 GitHub 查看 integration-app/mcp-server

使用说明

膜MCP服务器

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

这是我们的官员 AI代理示例 它向您展示了如何在应用程序中使用此MCP服务器。

📋 先决条件

  • Node.js(v18或更高版本)
  • A. 膜 账户

⚙️ 安装

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服务器实例部署到您选择的任何云托管服务。

🐳 码头工人

该项目包括一个Dockerfile,便于容器化部署。

docker build -t membrane-mcp-server .
docker run -p 3000:3000 membrane-mcp-server

🔗 连接到MCP服务器

此MCP服务器支持两种传输方式:

传输 端点 状态
上海证券交易所 (服务器发送的事件) /sse 🔴 已弃用 --自2024年11月5日起,MCP规范中已弃用
超文本传输协议 (流式HTTP) /mcp 🟢 推荐 --取代SSE,支持双向流媒体

🔐 认证

提供a 薄膜接入令牌 通过查询或 Authorization 头球

?token=ACCESS_TOKEN
Authorization: Bearer ACCESS_TOKEN

上海证券交易所 (已弃用)

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/mcp.json 文件:

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

重新启动Cursor以使更改生效。

🤖 克劳德桌面版

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

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

🔧 故障排除

  • 确保您的访问令牌有效,并且您正在根据以下内容生成它 这些说明
  • 检查MCP服务器日志,查看启动或连接尝试期间是否存在任何错误或问题。
  • 使用 MCP检查员 用于测试和调试