mcp-demo
本页由项目自动归档生成,源码与最新进展以 GitHub 仓库为准。
项目简介
MCP(Model Context Protocol)演示项目(Node.js / TypeScript),用于探索 MCP server 与 client 的接入方式。包含两套基于 @modelcontextprotocol/sdk 的 stdio MCP server(天气工具、微信公众号工具)与一个交互式 MCP 客户端,后者把任意 MCP server 接入 OpenAI 兼容大模型实现带工具调用的对话。适合作为理解 MCP 协议与工具调用链路的入门样例。
技术栈
| 维度 | 技术 |
|---|---|
| 主要语言/框架 | TypeScript 5 + Node.js(ESM,"type": "module") |
| 关键依赖/库 | @modelcontextprotocol/sdk(MCP 协议)、zod(参数校验)、axios(HTTP 请求)、openai / @anthropic-ai/sdk(客户端调用大模型)、dotenv(环境变量) |
| 数据存储 | 本地文件:.env(API Key / Base URL);运行时经 stdio 与 MCP server 通信;微信公众号文章搜索工具依赖本地 localhost:10001 服务 |
| 运行/部署方式 | 本地编译运行:npm install && npm run build,再 node build/index.js;MCP server 以 stdio 方式被客户端作为子进程拉起 |
核心功能 / 亮点
- 天气 MCP server:
node/weather/src/index.ts基于美国国家气象局(NWS)公开 API(无需 Key)暴露get-alerts(按州代码查预警)、get-forecast(按经纬度查预报)两个工具,参数用 zod 校验;同时内置一组微信公众号草稿工具(与 wechat server 能力重叠)。 - 微信公众号 MCP server:
node/wechat/src/index.ts把公众号 API 封装为 MCP 工具,包括get-access-token(stable_token)、draft-add-with-access-token(新增草稿)、get-draft-covers(8 张内置封面)、wechat-search-articles(转发本地文章搜索服务)。 - 交互式 MCP 客户端:
node/mcp-client-typescript/index.ts以 stdio 子进程连接任意.js/.pyMCP server,结合 OpenAI 兼容大模型(默认阿里云百炼 DashScope 的deepseek-r1)实现带工具调用的对话,并支持reasoning_content思考过程;保留 Anthropic SDK 调用路径(当前注释未启用)。 - 统一构建流程:三个子项目均通过
tsc编译src/→build/,并由npm run build赋予产物可执行权限(bin指向build/index.js)。
目录结构
1 | mcp-demo/ |
相关链接
- GitHub 仓库:mcp-demo