No description
  • C# 99.2%
  • Dockerfile 0.8%
Find a file
Luan Bião 83078a557c
All checks were successful
Deploy / deploy (push) Successful in 43s
Remove diferenca de quebra de linha no fim do csproj da API
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 15:43:47 -03:00
.forgejo/workflows Pluft 2026-11-03 14:43:25 -03:00
docs Devolve erros com mensagem e permite hosts internos via allowlist 2026-11-03 15:39:48 -03:00
Mcpinho.Api Remove diferenca de quebra de linha no fim do csproj da API 2026-11-03 15:43:47 -03:00
Mcpinho.Application Devolve erros com mensagem e permite hosts internos via allowlist 2026-11-03 15:39:48 -03:00
Mcpinho.Domain Primeiro commit 2026-11-03 13:29:41 -03:00
Mcpinho.Infrastructure Devolve erros com mensagem e permite hosts internos via allowlist 2026-11-03 15:39:48 -03:00
.dockerignore Corrige build Docker liberando README no dockerignore 2026-11-03 15:05:13 -03:00
.gitignore Primeiro commit 2026-11-03 13:29:41 -03:00
AGENTS.md Pluft 2026-11-03 14:43:25 -03:00
Dockerfile Pluft 2026-11-03 14:43:25 -03:00
Mcpinho.Api.slnx Primeiro commit 2026-11-03 13:29:41 -03:00
README.md Adiciona endpoint healthz com metadados de configuração 2026-11-03 15:02:42 -03:00

MCPinho

Gateway MCP em .NET 10 que centraliza o catálogo de ferramentas de servidores MCP cadastrados. A API recebe chamadas MCP, identifica o usuário pelo token do Loguinho, aplica as verificações disponíveis e encaminha a chamada ao servidor de origem. As regras de negócio continuam pertencendo às aplicações de destino.

Este repositório contém o backend. A interface React descrita no planejamento ainda não aparece na estrutura atual. Consulte docs/estado-atual.md para distinguir o que já existe do que continua planejado.

O que faz

  • Mantém cadastro de servidores MCP com endpoint HTTPS.
  • Consulta e armazena o catálogo remoto de ferramentas; ferramentas recém-descobertas começam desabilitadas.
  • Expõe /mcp com transporte MCP Streamable HTTP e ferramentas de listagem/execução.
  • Verifica autenticação, estado da aplicação, habilitação da ferramenta e, para aplicações OAuth, a conexão do usuário.
  • Registra início, resultado, duração e código de erro das execuções.
  • Persiste os dados em PostgreSQL via Entity Framework Core.

Como fazer

Preparar o ambiente

Requisitos: .NET SDK 10 e PostgreSQL. Configure os valores abaixo por User Secrets ou variáveis de ambiente. Preserve a senha PostgreSQL já existente nos appsettings, conforme preferência explícita do proprietário do projeto; não a altere sem pedido.

Configuração Uso
ConnectionStrings__Mcpinho Conexão PostgreSQL
Loguinho__LoginDireto__Emissor / Loguinho__LoginDireto__Audiencia Emissor e audiência do JWT do Método 1
Loguinho__LoginDireto__ChavePublicaPem Chave pública RSA PEM usada para validar o Método 1
Loguinho__OAuth__Emissor / Loguinho__OAuth__Audiencia Emissor e resource/audiência do access token do Método 2
Loguinho__OAuth__MetadataAddress Metadados OAuth usados para obter as chaves JWKS do Método 2
Mcpinho__AdministradorUsuarioId Claim sub com acesso administrativo
Mcpinho__ChaveCofreBase64 Chave Base64 de 32 bytes para o cofre de credenciais

A API exige configuração dos dois métodos do Loguinho e o identificador do administrador ao iniciar. A chave do cofre é necessária quando operações de credencial forem usadas. Consulte docs/loguinho.md para o mapeamento dos métodos e docs/desenvolvimento.md para os comandos e o estado de migrations.

Fluxo operacional

  1. Cadastre uma aplicação via POST /api/aplicacoes, informando nome, identificador único, endpoint HTTPS, tipo de autenticação e status.
  2. Consulte e atualize aplicações em /api/aplicacoes; desative por POST /api/aplicacoes/{id}/desativar.
  3. Sincronize o catálogo em POST /api/ferramentas/aplicacao/{aplicacaoId}/sincronizar e habilite explicitamente as ferramentas aprovadas com PATCH /api/ferramentas/{id}/habilitacao.
  4. Configure o cliente agente para usar /mcp. Ele lista o que está acessível com mcpinho_listar_ferramentas e chama mcpinho_executar_ferramenta com o nome público e argumentos JSON.
  5. Consulte execuções em GET /api/auditoria/execucoes.

Os endpoints /api exigem a política Administrador. /mcp exige usuário autenticado com claim sub. O endpoint /health é anônimo. GET /api/healthz também é anônimo e expõe metadados de configuração (versão, runtime, nome/host do banco, CORS, Loguinho) sem segredos e sem consultar banco ou serviços externos.

Fluxo básico

flowchart TD
    A[Administrador cadastra aplicação] --> B[API valida e persiste]
    B --> C[Discovery conecta ao servidor MCP]
    C --> D[Catálogo é sincronizado]
    D --> E[Ferramentas novas ficam desabilitadas]
    E --> F[Administrador habilita ferramentas]
    G[Agente chama /mcp] --> H[API valida token e claim sub]
    H --> I[Gateway lista ferramentas acessíveis]
    I --> J[Agente solicita execução]
    J --> K[Gateway valida aplicação, ferramenta e conexão]
    K --> L[Auditoria inicia]
    L --> M[Cliente MCP encaminha para o servidor de origem]
    M --> N[Resultado ou erro é registrado e retornado]

Camadas

  • Mcpinho.Domain: entidades e enums do domínio.
  • Mcpinho.Application: serviços, contratos e regras de aplicação.
  • Mcpinho.Infrastructure: PostgreSQL/EF Core, repositórios, cliente MCP, cofre e integração externa.
  • Mcpinho.Api: host ASP.NET Core, autenticação, endpoints administrativos e servidor MCP.

Abra Mcpinho.Api.slnx para trabalhar com todos os projetos. As responsabilidades detalhadas, limites e pendências estão em docs/arquitetura.md, docs/fluxos.md, docs/desenvolvimento.md, docs/estado-atual.md, docs/loguinho.md e docs/dependencias.md. As instruções de leitura desses arquivos estão em AGENTS.md.