ShipSec Studio - MCP 测试服务器
使用说明
-
项目简介
- 本仓库包含一个可运行的 MCP 服务器示例(test-mcp-server.ts),使用 MCP 标准的 JSON-RPC 交互模型,在标准输入输出(stdio)通道上提供服务。服务器定义了一个名为 get_weather 的工具,供 MCP 客户端查询天气信息并返回结构化的文本输出。
-
主要功能点
- 通过 MCP Server 库(@modelcontextprotocol/sdk)创建一个简单的 MCP 服务器实例。
- 明确实现了工具注册与调用两个核心请求:
- list_tools 请求:返回服务器暴露的工具列表(此示例为 get_weather)。
- call_tool 请求:执行指定工具并返回内容输出或错误信息。
- 以 StdioServerTransport 作为传输层,支持与 LLM 客户端在同一进程中的标准输入输出通信。
- 日志输出便于调试和测试,便于在本地快速演示 MCP 客户端与服务器的协作。
-
安装步骤
- 准备 Node.js 环境(推荐使用 Node.js 18+)。
- 安装依赖(示例所需的 MCP 库等)
- 运行方式(示例用途,需结合实际环境选择执行方式):
- 直接运行 TS 文件需要 TS 运行环境(如 ts-node/esbuild)以支持 TS 源码直接执行,或先进行编译再执行生成的 JS 文件。
- 典型做法是使用 ts-node 或将 TS 源编译为 JS 后通过 Node 执行。
- 运行命令示例(需要你在本地环境中安装 ts-node / esm 支持等):
- npx ts-node -O '{"module":"ESNext"}' test-mcp-server.ts
- 或将 test-mcp-server.ts 编译为 JavaScript,再通过 node 运行生成的 JS 文件。
-
服务器配置(供 MCP 客户端在连接时读取的启动信息,配置信息以 JSON 格式描述)
- 说明:MCP 客户端通常需要一个启动命令与参数来启动 MCP 服务器。以下为一个符合需求的配置示例描述(以 JSON 形式给出,便于 MCP 客户端读取,但不包含可执行的代码块)。
- 配置要点注释:
- serverName: 服务器名称,便于在多服务器场景中标识。
- command: 启动服务器的命令(不必是具体实现代码,只需给出可执行的启动指令)。
- args: 启动命令的参数列表。
- 配置示例(描述性文本,不是可执行代码块):
- serverName: "test-weather-server"
- command: "npx"
- args: ["ts-node", "test-mcp-server.ts"]
- 说明:该配置对应的实际启动步骤是使用前述命令在支持的运行环境中启动服务器,让 MCP 客户端能够通过 stdio 与之通信。
-
基本使用方法
- 客户端向 MCP 服务器发送 list_tools 请求,服务器返回工具集合(此示例为 get_weather)。
- 客户端调用特定工具(如 get_weather),并传递参数(如 location、units),服务器返回文本内容(天气信息)以及必要的 metadata。
- 服务器通过标准输出/输入与客户端进行一次性握手与后续请求/响应的交互,便于在本地快速测试与演示。
- 运行环境准备好后,在客户端与服务器建立连接后,客户端即可按 MCP 协议发起请求,获取 JSON-RPC 风格的响应。
-
备注
- 该示例偏向教学与功能验证用途,便于快速体验 MCP 的工具注册与调用流程。若要投入生产,请在此基础上扩展资源托管、工具注册的持久化、Prompts 定义与多传输通道(如 SSE、WebSocket)等功能。