Skip to content

marcelodolacio/MCP-Server-APIKey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ API Security: Autenticação + Autorização + Rate Limiting

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


📦 O que tem aqui dentro?

São dois projetos que se complementam:

1. nodejs-fastify-mongodb-crud-z/ — A API REST

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

2. customers-mcp-z/ — O Servidor MCP

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.


🧠 O que esse projeto ensina?

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

🚀 Como rodar

API REST

cd nodejs-fastify-mongodb-crud-z

# Instalar dependências
npm ci

# Rodar os testes
npm test

Pra rodar com Docker:

docker compose up

Servidor MCP

cd 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ários de teste

Usuário Senha Papel
erickwendel 123123 admin
ananeri 1234 member

🗺️ Rotas da API

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

🔧 Tecnologias

  • 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

📄 Licença

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors