
天气工具
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.