关于 Exemplo de Servidor MCP
Exemplo de Servidor MCP 是一个用 Node.js 与 TypeScript 编写的 MCP 服务示例,以教学为目的。它提供两个基于美国国家气象局 NWS API 的天气工具,并使用 Zod 进行输入校验,采用分层的 DDD 风格结构。
主要功能
- 01get-alerts 工具,获取指定州的天气预警
- 02get-forecast 工具,按经纬度获取天气预报
- 03使用 Zod 校验输入参数
- 04基于 stdio 的 MCP 通信
适用场景
- 01学习如何构建调用外部 API 的 MCP 服务
- 02参考分层结构组织 TypeScript MCP 项目
MCP 相关
该项目是 MCP 服务端,通过 stdio 传输向 MCP 客户端暴露 get-alerts 和 get-forecast 两个工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 服务示例
本项目为 Código Fonte TV 频道的教育用途而创建,演示了如何构建一个集成外部 API 并验证数据的 MCP 服务。
此代码仓库包含一个使用 Node.js/TypeScript 实现的 MCP(Model Context Protocol)服务示例,提供两个工具,用于通过美国国家气象局(NWS)的 API 获取天气信息。
功能
- get-alerts:返回某个州当前有效的天气警报(两个字母的代码,例如:
CA、NY)。 - get-forecast:根据地理坐标(纬度、经度)返回天气预报。
- 使用 Zod 验证输入。
- 使用
fetch集成 NWS API(基础设施层)。 - 使用 MCP 协议通过 stdio 通信(
@modelcontextprotocol/sdk)。
架构
项目采用受领域驱动设计(DDD)模式启发的分层架构:
-
Domain(
src/domain): 定义表示数据结构的接口和类型(例如:AlertFeature、ForecastPeriod、AlertsResponse)。 -
Infrastructure(
src/infrastructure): 实现外部服务,例如负责向 NWS API 发起 HTTP 请求的NWSApiService。 -
Application(
src/application): 包含WeatherService中的业务逻辑,用于处理并格式化来自基础设施的数据。 -
Interface(
src/interface): 包含控制器(WeatherToolsController),用于在 MCP 服务中注册工具、定义验证 schema 并返回结果。 -
Entry Point(
src/main.ts): 初始化McpServer,配置传输方式(StdioServerTransport),实例化服务和控制器,并启动 stdio 监听。
文件夹结构如下:
src/
├── domain/
│ └── models/ # Interfaces de domínio
├── infrastructure/
│ └── services/ # Implementações da API externa (NWS)
├── application/
│ └── services/ # Lógica de negócio e formatação de dados
├── interface/
│ └── controllers/ # Registro das ferramentas MCP e validação
└── main.ts # Ponto de entrada do servidor
build/ # Código JavaScript compilado
安装
git clone <REPOSITÓRIO_URL>
cd mcp-server-sample
npm install
npm run build
使用
构建完成后,你可以直接运行服务:
node build/main.js
或者,如果已注册为二进制文件(weather):
npm link
weather
服务将在标准输出(stdio)上启动,并等待 MCP 请求。
贡献
欢迎提交拉取请求!欢迎随时创建 issue 并讨论改进建议。
Código Fonte TV
如需了解实现详情,请观看 Código Fonte TV 频道的视频。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。