Esse repositório faz parte do módulo MCP na prática do curso do Erick Wendel. A ideia aqui é mostrar na prática como proteger uma API — desde o básico de autenticação até limites de requisição — e ainda conectar tudo isso com o mundo de MCP (Model Context Protocol).
São dois projetos que se complementam:
Uma API de cadastro de clientes feita com Fastify + MongoDB, com:
- JWT pra login de usuários
- Service tokens pra integração entre sistemas
- RBAC (controle de acesso por perfil: admin e member)
- Rate limiting de 90 requisições por minuto por token
- Testes automatizados com o runner nativo do Node.js
Um wrapper que transforma essa API num servidor MCP (Model Context Protocol) — ou seja, ferramentas que agentes de IA (como GitHub Copilot, Claude, etc.) conseguem enxergar e usar.
Cada endpoint da vira uma ferramenta MCP:
| Ferramenta | O que faz |
|---|---|
list_customers |
Lista todos os clientes |
get_customer |
Busca um cliente pelo ID |
create_customer |
Cria um novo cliente |
update_customer |
Atualiza dados de um cliente |
delete_customer |
Remove um cliente |
Também tem um resource (customers://api-info) e um prompt pré-pronto pra buscar cliente pelo nome.
- Autenticação em dois níveis: JWT pra humanos, service token pra máquinas
- Autorização por perfil: nem todo mundo pode criar/deletar — member só lê, admin faz tudo
- Rate limiting na prática: como evitar abuso com
@fastify/rate-limit - Injeção de dependência e código limpo no lado do MCP
- Testes: tanto na API quanto no servidor MCP, com cobertura de fluxos felizes e bônus de cenários de erro (token inválido, rate limit estourado, 403, etc.)
cd nodejs-fastify-mongodb-crud-z
# Instalar dependências
npm ci
# Rodar os testes
npm testPra rodar com Docker:
docker compose upcd customers-mcp-z
npm ci
# Precisa da API rodando e de um token de serviço válido
SERVICE_TOKEN=seu-token-aqui npm test| Usuário | Senha | Papel |
|---|---|---|
erickwendel |
123123 |
admin |
ananeri |
1234 |
member |
| Método | Rota | Autenticação | Perfil |
|---|---|---|---|
| GET | /v1/health |
❌ | — |
| POST | /v1/auth/login |
❌ | — |
| POST | /v1/auth/service-token |
❌ (requer segredo) | — |
| GET | /v1/customers |
✅ | admin, member |
| GET | /v1/customers/:id |
✅ | admin, member |
| POST | /v1/customers |
✅ | admin |
| PUT | /v1/customers/:id |
✅ | admin |
| DELETE | /v1/customers/:id |
✅ | admin |
- Node.js ≥ 20
- Fastify 5 — performático e cheio de plugins
- MongoDB — via driver nativo
- @fastify/jwt + @fastify/rate-limit
- Model Context Protocol SDK — pra integrar com IAs
- Zod — validação de schemas no servidor MCP
MIT — pode usar, estudar, modificar e compartilhar à vontade.
Feito com muito café pelo Erick Wendel e adaptado pra esse módulo de MCP na prática.