气象数据服务器

一个基于Node.js/TypeScript的MCP服务器示例,提供通过美国国家气象局API获取天气警报和预报的功能。

  • by adlsz94
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 adlsz94/mcp-server-example

使用说明

MCP 服务器示例

本项目是为教育目的在源代码电视频道上创建的,演示了如何构建具有外部API集成和数据验证的MCP服务器。

此存储库包含一个 MCP 服务器实施示例 (_模型上下文协议_Node.js/TypeScript 提供了两种工具,用于使用美国国家气象局 (NWS) API 获取天气信息。

功能

  • 获取警报返回一个状态的活动天气警报(两个字母的代码,例如: CA, NY).
  • 获取预报: 按地理坐标(纬度、经度)返回天气预报。
  • 使用输入校验 萨德.
  • 使用 NWS API 集成 fetch (基础设施层)。
  • 通过通信 标准 MCP协议(@modelcontextprotocol/sdk).

建筑

该项目遵循一个层次架构,灵感来自 领域驱动设计 (DDD):

  • 领域 (src/domain): 定义代表数据结构的接口和类型(例如: AlertFeature, ForecastPeriod, AlertsResponse).

  • 基础设施 (src/infrastructure): 提供外部服务,如 NWSApiService负责对 NWS API 进行 HTTP 调用。

  • 应用 (src/application): 包含商业逻辑 WeatherService它可以处理和格式化来自基础设施的数据。

  • 接口 (src/interface): 包括驱动程序 (WeatherToolsController) 在 MCP 服务器上注册工具,定义验证方案并返回结果。

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

文件夹结构如下 :

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

服务器将以标准输出启动( )_标准_等待MCP要求。

贡献

Pull Requests 欢迎!随时开放问题并讨论改进。

电视源代码

有关实施的详细信息,请观看频道视频 电视源代码.