Content
# Exemplo de Servidor 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.
## Funcionalidades
- **get-alerts**: Retorna alertas meteorológicos ativos para um estado (código de duas letras, ex: `CA`, `NY`).
- **get-forecast**: Retorna a previsão do tempo para coordenadas geográficas (latitude, longitude).
- Validação de entrada usando [Zod](https://github.com/colinhacks/zod).
- Integração com a API do NWS usando `fetch` (camada de infraestrutura).
- Comunicação via _stdio_ usando o protocolo MCP (`@modelcontextprotocol/sdk`).
## Arquitetura
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
```
## Instalação
```bash
git clone <REPOSITÓRIO_URL>
cd mcp-server-sample
npm install
npm run build
```
## Uso
Após o build, você pode executar o servidor diretamente:
```bash
node build/main.js
```
Ou, se registrado como binário (`weather`):
```bash
npm link
weather
```
O servidor iniciará na saída padrão (_stdio_) e aguardará requisições MCP.
## Contribuição
Pull requests são bem-vindos! Sinta-se à vontade para abrir issues e discutir melhorias.
## Código Fonte TV
Para mais detalhes sobre a implementação, assista ao vídeo no canal [Código Fonte TV](https://youtu.be/NUOzYPSNaNk).
Connection Info
You Might Also Like
MarkItDown MCP
Converting files and office documents to Markdown.
Time
Obtaining current time information and converting time between different...
Filesystem
Model Context Protocol Servers
Sequential Thinking
Offers a structured approach to dynamic and reflective problem-solving,...
Git
Model Context Protocol Servers
Context 7
Context7 MCP Server -- Up-to-date code documentation for LLMs and AI code editors