返回市场
MCP服务器示例

MCP服务器示例

作者:gabrielfroes72 星标更新:2025-07-06

项目介绍

MCP服务器示例

在YouTube频道“Código Fonte TV”上为了教育目的创建的这个项目,展示了如何构建一个与外部API集成并进行数据验证的MCP服务器。

此仓库包含一个用Node.js/TypeScript实现的MCP(模型上下文协议)服务器示例,该服务器提供了两个工具来获取美国国家气象服务(NWS)API提供的气象信息。

功能

  • get-alerts: 返回给定州(两位字母代码,例如:CANY)的活跃气象警报。
  • get-forecast: 返回给定地理坐标(纬度,经度)的天气预报。
  • 使用Zod进行输入验证。
  • 使用fetch与NWS API集成(基础设施层)。
  • 使用MCP协议通过_stdio_进行通信(@modelcontextprotocol/sdk)。

架构

该项目遵循分层架构,灵感来自领域驱动设计(DDD)模式:

  • 领域 (src/domain): 定义表示数据结构的接口和类型(如:AlertFeatureForecastPeriodAlertsResponse)。

  • 基础设施 (src/infrastructure): 实现外部服务,如负责调用NWS API的HTTP请求的NWSApiService

  • 应用 (src/application): 包含业务逻辑的WeatherService,处理并格式化来自基础设施的数据。

  • 接口 (src/interface): 包括注册MCP工具的控制器(WeatherToolsController),定义验证模式并返回结果。

  • 入口点 (src/main.ts): 初始化McpServer,配置传输(StdioServerTransport),实例化服务和控制器,并开始监听_stdio_。

文件夹结构如下:

src/
├── domain/
│   └── models/           # 领域接口
├── infrastructure/
│   └── services/         # 外部API实现(NWS)
├── application/
│   └── services/         # 业务逻辑和数据格式化
├── interface/
│   └── controllers/      # 注册MCP工具和验证
└── main.ts               # 服务器入口点
build/                     # 编译后的JavaScript代码

安装

git clone <REPOSITÓRIO_URL>
cd mcp-server-sample
npm install
npm run build

使用

编译后,可以直接运行服务器:

node build/main.js

或者,如果已注册为二进制文件(weather):

npm link
weather

服务器将在标准输出_stdio_中启动,并等待MCP请求。

贡献

欢迎提交拉取请求!请随意打开问题并讨论改进。

Código Fonte TV

有关实现的更多细节,请观看YouTube频道Código Fonte TV上的视频。