Fire in da houseTop Tip:Paying $100+ per month for Perplexity, MidJourney, Runway, ChatGPT and other tools is crazy - get all your AI tools in one site starting at $15 per month with Galaxy AI Fire in da houseCheck it out free

mcp-server-sample

MCP.Pizza Chef: gabrielfroes

mcp-server-sample is an educational Node.js/TypeScript MCP server example demonstrating integration with the US National Weather Service API. It offers two tools: get-alerts for active weather alerts by state code, and get-forecast for weather forecasts by geographic coordinates. The server features input validation with Zod and communicates using the MCP protocol over stdio, following a layered architecture inspired by Domain-Driven Design principles.

Use This MCP server To

Provide active weather alerts for US states via MCP Deliver weather forecasts based on geographic coordinates Validate API input data using Zod schema validation Integrate external weather APIs into MCP workflows Demonstrate MCP server implementation in Node.js/TypeScript Enable real-time weather data retrieval in AI workflows

README

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.
  • 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

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:

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.

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.

mcp-server-sample FAQ

How does mcp-server-sample validate input data?
It uses Zod, a TypeScript schema validation library, to ensure input correctness before processing.
What external API does this MCP server integrate with?
It integrates with the US National Weather Service (NWS) API to fetch weather alerts and forecasts.
How does the server communicate with MCP clients?
Communication occurs over stdio using the MCP protocol via the @modelcontextprotocol/sdk package.
What programming languages and frameworks are used?
The server is built with Node.js and TypeScript, leveraging modern JavaScript features and libraries.
Can this server be used as a template for other MCP servers?
Yes, it serves as an educational example demonstrating best practices for MCP server development.
What architecture pattern does this server follow?
It follows a layered architecture inspired by Domain-Driven Design (DDD) principles for maintainability and clarity.