项目简介
本项目是一个在 Internet Computer (IC) 上运行的最小化 Model Context Protocol (MCP) 服务器实现。它旨在演示 MCP 服务器的基本概念,并提供工具 (Tools) 功能的初步支持。请注意,这是一个非常基础的示例,仅用于学习和演示目的,不适用于生产环境。
重要限制:
- 仅支持 Tools Capability: 本服务器仅实现了 MCP 协议中关于工具 (Tools) 的部分,不支持资源 (Resources) 和 Prompt 模板 (Prompts) 功能。
- Stateless: 服务器是无状态的,不进行会话管理。
- Non-Response-Verification: 目前没有实现响应验证机制。
- 仅支持 Streamable HTTP: 仅支持通过 Streamable HTTP 与客户端通信。
主要功能点
- MCP 协议支持: 实现了基本的 MCP 协议框架,能够接收和解析 MCP 客户端发送的 JSON-RPC 请求,并返回符合 MCP 协议的 JSON-RPC 响应。
- 工具 (Tools) 功能:
- tools/list: 支持 'tools/list' 方法,返回服务器支持的工具列表。目前预置了一个名为 'add' 的简单工具,用于计算两个数字的和。
- tools/call: 支持 'tools/call' 方法,允许客户端调用已注册的工具。目前仅支持调用 'add' 工具。
- Initialize 方法: 支持 'initialize' 方法,用于客户端初始化连接并获取服务器能力信息。
安装步骤
由于此 MCP 服务器是为 Internet Computer (IC) 设计的 canister,因此需要使用 IC 的开发工具进行部署。以下是基本步骤:
-
安装 DFX (DFINITY Canister SDK): 如果尚未安装,请根据 DFX 文档 安装 DFX。
-
克隆仓库: 将本仓库克隆到本地:
git clone https://github.com/okoyfoeciov/test-mcp-server-on-ic-canister cd test-mcp-server-on-ic-canister -
部署到 IC (本地或主网): 使用 DFX 命令部署 canister。例如,部署到本地网络:
dfx canister create test_mcp_server_on_ic_canister_backend dfx canister install --mode install test_mcp_server_on_ic_canister_backend dfx canister call test_mcp_server_on_ic_canister_backend greet '(principal "aaaaa-aa")'请注意,实际部署命令可能需要根据你的 DFX 配置和环境进行调整。 你需要创建一个 canister 身份 (identity) 并指定部署的网络。
-
获取 Canister ID: 部署成功后,你需要获取部署的 canister 的 ID。DFX 会在部署信息中显示 Canister ID,或者你可以使用 'dfx canister id test_mcp_server_on_ic_canister_backend' 命令获取。
-
访问 MCP Endpoint: 部署完成后,MCP 服务器的 endpoint 地址为 'https://{DEPLOYED_CANISTER_ID}.raw.icp0.io/mcp',将 '{DEPLOYED_CANISTER_ID}' 替换为你实际的 Canister ID。
服务器配置
对于 MCP 客户端,你需要配置连接到此 MCP 服务器的信息。以下是一个示例 'server_config.json' 配置,你可以根据实际情况进行调整:
{ "serverName": "MinimalICMCPServer", "protocolVersion": "2025-03-26", "transport": "streamable-http", "capabilities": { "tools": {} }, "endpoint": "https://{DEPLOYED_CANISTER_ID}.raw.icp0.io/mcp" }
配置参数说明:
- 'serverName': 服务器名称,可以自定义,例如 "MinimalICMCPServer"。
- 'protocolVersion': MCP 协议版本,应设置为 '"2025-03-26"'。
- 'transport': 传输协议,设置为 '"streamable-http"'。
- 'capabilities': 服务器能力声明,'tools: {}' 表示服务器支持工具功能。
- 'endpoint': MCP 服务器的 HTTP endpoint URL,请将 '{DEPLOYED_CANISTER_ID}' 替换为你实际部署的 Canister ID。
MCP 客户端需要读取此配置文件,并使用 'endpoint' 中的 URL 与 MCP 服务器建立连接,并按照 MCP 协议发送请求。
基本使用方法
-
发送 Initialize 请求: 客户端首先需要发送 'initialize' 请求到 '/mcp' endpoint。服务器会返回其支持的协议版本和能力信息。
-
获取工具列表 (tools/list): 客户端可以发送 'tools/list' 请求获取服务器支持的工具列表。服务器会返回包含 'add' 工具的列表。
-
调用工具 (tools/call): 客户端可以使用 'tools/call' 请求调用 'add' 工具。请求参数应符合 'add' 工具的 'input_schema' 定义,即包含 'a' 和 'b' 两个数字参数。服务器会执行加法运算,并返回结果。
示例 JSON-RPC 请求 (tools/call 调用 add 工具):
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "add", "arguments": { "a": 5, "b": 3 } } }
将此 JSON 数据 POST 到 'https://{DEPLOYED_CANISTER_ID}.raw.icp0.io/mcp' endpoint,即可调用 'add' 工具。
请参考 MCP 协议文档了解更详细的请求和响应格式,以及其他 MCP 功能的使用方法。
信息
分类
开发者工具