返回市场
多西博-MCP服务器

多西博-MCP服务器

作者:riccardo-larosa2 星标更新:2025-06-21

项目介绍

MCP 可流式传输的HTTP服务器示例

此目录包含使用@modelcontextprotocol/sdk实现的模型上下文协议(MCP)服务器示例。

它利用StreamableHTTPServerTransport处理通过HTTP的MCP通信,支持包括服务器发送事件(SSE)通知在内的双向通信。

还包括simpleStreamableHttpClient.ts以启动客户端并与服务器进行交互。

功能

  • 实现模型上下文协议(MCP)。
  • 使用StreamableHTTPServerTransport进行基于HTTP的通信。
  • 使用mcp-session-id头管理客户端会话。
  • 处理客户端请求(POST)、服务器通知(通过SSE的GET)以及会话终止(DELETE)。
  • 包含一个基本示例工具(echo)。
  • 使用TypeScript和hono服务器构建。

预备条件

  • Node.js(项目推荐版本,例如>= 18)
  • npm或yarn

安装

  1. 导航到docebo-mcp-server目录:
    cd docebo-mcp-server
    
  2. 安装依赖项:
    npm install
    

编译

要将TypeScript代码编译成JavaScript:

npm run build

这将把编译后的文件输出到build目录。

默认情况下,服务器监听3000端口,并在/mcp暴露MCP端点。

API端点

  • URL/mcp
  • 方法
    • POST:客户端用于发送请求(包括初始的initialize请求)。
    • GET:客户端用于建立SSE连接以接收服务器到客户端的通知。
    • DELETE:客户端用于终止当前的MCP会话。

会话管理

服务器使用mcp-session-idHTTP头管理客户端会话。

  1. 当客户端发送没有会话ID的initialize请求时,服务器创建一个新的会话和新的传输,并在响应中返回sessionId
  2. 客户端后续的请求(POST、GET、DELETE)必须包含分配的mcp-session-id头,以便服务器将请求路由到正确的传输实例。
  3. DELETE /mcp请求终止与提供的mcp-session-id关联的会话。

工具

可以在tools目录中添加工具。

运行服务器

npm run dev:hono

运行客户端

使用MCP检查器

npx @modelcontextprotocol/inspector

或者你可以使用CLI

npm run start:simpleClient

你可以使用此客户端显示的命令与服务器交互,如

list-tools

截至撰写本文时,Claude Desktop不支持HttpStreamable协议。将服务器配置添加到你的Claude Desktop配置文件中(通常位于macOS的~/Library/Application Support/Claude/claude_desktop_config.json),并重启Claude Desktop:

{
  "mcpServers": {
    "docebo": {
      "command": "npx",
      "args": ["mcp-remote", "http://127.0.0.1:3000/mcp"],
      "env": {
        "BEARER_TOKEN_BEARERAUTH": "<your_token>"
      }
    }
  }
}

远程MCP服务器仍在由不同的MCP主机(如Claude Desktop)开发和增强。

MCP服务器可以以两种不同的方式部署:

  1. 带有远程API的本地MCP服务器
graph LR
    subgraph "您的计算机"
        C1[MCP主机带客户端]
        S1[MCP服务器]
    end
    
    subgraph "远程服务器"
        API1[远程API]
    end
    
    C1 <--> S1
    S1 <--> API1

  style C1 fill:#2e7d32,color:#ffffff
  style S1 fill:#f57c00,color:#ffffff
  style API1 fill:#c2185b,color:#ffffff
  1. 本地主机/客户端连接到远程MCP服务器
graph LR
    subgraph "您的计算机"
        C2[MCP主机带客户端]
    end
    
    subgraph "远程服务器"
        S2[MCP服务器]
        API2[远程API]
    end
    
    C2 <-.-> S2
    S2 <--> API2

  style C2 fill:#2e7d32,color:#ffffff
  style S2 fill:#f57c00,color:#ffffff
  style API2 fill:#c2185b,color:#ffffff

有两种授权形式:

  1. MCP协议在传输级别提供授权能力,使MCP客户端能够代表资源所有者向受限的MCP服务器发出请求。这是新的授权提案所解决的问题。
  2. MCP服务器需要知道如何与远程API进行身份验证。

此应用程序需要一个bearer token,然后从MCP客户端传递给MCP服务器,MCP服务器使用此token调用远程API。如果MCP服务器需要处理多个远程API系统,这种系统并不理想。