天气工具
STDIO提供气象信息工具的MCP服务器
提供气象信息工具的MCP服务器
Criado para fins educacionais no canal Código Fonte TV, este projeto demonstra como construir um servidor MCP com integração a APIs externas e validação de dados.
Este repositório contém um exemplo de implementação de um servidor MCP (Model Context Protocol) em Node.js/TypeScript, que fornece duas ferramentas para obter informações meteorológicas usando a API do National Weather Service (NWS) dos EUA.
CA, NY).fetch (camada de infraestrutura).@modelcontextprotocol/sdk).O projeto segue uma arquitetura em camadas inspirada em padrões de Domain-Driven Design (DDD):
Domain (src/domain):
Definição de interfaces e tipos que representam as estruturas de dados (ex: AlertFeature, ForecastPeriod, AlertsResponse).
Infrastructure (src/infrastructure):
Implementação de serviços externos, como o NWSApiService, responsável por realizar as chamadas HTTP à API do NWS.
Application (src/application):
Contém a lógica de negócio no WeatherService, que processa e formata os dados vindos da infraestrutura.
Interface (src/interface):
Inclui controladores (WeatherToolsController) que registram as ferramentas no servidor MCP, definem schemas de validação e retornam os resultados.
Entry Point (src/main.ts):
Inicializa o McpServer, configura o transporte (StdioServerTransport), instancia serviços e controladores, e inicia escuta em stdio.
A estrutura de pastas é a seguinte:
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
Após o build, você pode executar o servidor diretamente:
node build/main.js
Ou, se registrado como binário (weather):
npm link weather
O servidor iniciará na saída padrão (stdio) e aguardará requisições MCP.
Pull requests são bem-vindos! Sinta-se à vontade para abrir issues e discutir melhorias.
Para mais detalhes sobre a implementação, assista ao vídeo no canal Código Fonte TV.