mcp-demo · 项目介绍

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 / .py MCP server,结合 OpenAI 兼容大模型(默认阿里云百炼 DashScope 的 deepseek-r1)实现带工具调用的对话,并支持 reasoning_content 思考过程;保留 Anthropic SDK 调用路径(当前注释未启用)。
  • 统一构建流程:三个子项目均通过 tsc 编译 src/ → build/,并由 npm run build 赋予产物可执行权限(bin 指向 build/index.js)。

目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mcp-demo/
└── node/
├── weather/ # MCP server:NWS 天气预警/预报 + 微信草稿工具
│ ├── src/index.ts # server 定义与工具注册
│ ├── build/index.js # tsc 编译产物(可执行)
│ ├── package.json # @modelcontextprotocol/sdk, axios, zod
│ └── tsconfig.json
├── wechat/ # MCP server:微信公众号工具
│ ├── src/index.ts
│ ├── build/index.js
│ └── package.json
└── mcp-client-typescript/ # 交互式 MCP 客户端(OpenAI 兼容工具调用)
├── index.ts # MCPClient 类 + REPL
├── build/index.js
├── .env # ANTHROPIC_API_KEY / ANTHROPIC_API
└── package.json # @modelcontextprotocol/sdk, openai, @anthropic-ai/sdk, dotenv

相关链接