- C# 99.2%
- Dockerfile 0.8%
|
All checks were successful
Deploy / deploy (push) Successful in 43s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| docs | ||
| Mcpinho.Api | ||
| Mcpinho.Application | ||
| Mcpinho.Domain | ||
| Mcpinho.Infrastructure | ||
| .dockerignore | ||
| .gitignore | ||
| AGENTS.md | ||
| Dockerfile | ||
| Mcpinho.Api.slnx | ||
| README.md | ||
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
/mcpcom 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
- Cadastre uma aplicação via
POST /api/aplicacoes, informando nome, identificador único, endpoint HTTPS, tipo de autenticação e status. - Consulte e atualize aplicações em
/api/aplicacoes; desative porPOST /api/aplicacoes/{id}/desativar. - Sincronize o catálogo em
POST /api/ferramentas/aplicacao/{aplicacaoId}/sincronizare habilite explicitamente as ferramentas aprovadas comPATCH /api/ferramentas/{id}/habilitacao. - Configure o cliente agente para usar
/mcp. Ele lista o que está acessível commcpinho_listar_ferramentase chamamcpinho_executar_ferramentacom o nome público e argumentos JSON. - 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.