mcp-realmak
Supports person login via Google Workspace OAuth, restricted to a configured Workspace domain, as one of the server's authentication methods.
Integrates with Odoo's realmak_mcp module to let authorized users search and open procurement folders, read document text, obtain signed download links, add internal notes, attach files to the AI Output folder, and update card status, acting as the logged-in user.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-realmakbuscar licitações abertas para material de escritório em São Paulo"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
realmak-plugin
Servidor MCP remoto (Streamable HTTP, caminho /mcp) que dá aos analistas de licitação da Realmak, dentro do Claude Desktop, quatro grupos de ferramentas, e um plugin do Claude com as skills que ensinam a usá-las. Só as ferramentas licitacao_* escrevem, e só na licitação do Odoo, como a pessoa que entrou.
Esta é uma versão de teste (MVP). Veja os limites no fim.
Ferramentas
50 ferramentas, em quatro grupos.
Grupo | Prefixo | Qtd. | Para quê |
Compras públicas |
| 36 | PNCP, Compras.gov.br e Contratos.gov.br: busca por texto no PNCP, licitações, itens, vencedores, documentos e histórico de editais, atas, contratos, fornecedores, CATMAT/CATSER e preços praticados |
ConLicitação |
| 7 | Achar licitação no site (UASG, edital, processo, órgão, objeto, UF), detalhe com itens e impugnações, filtros, boletins, pregões monitorados e mensagens |
Cérebro |
| 5 |
|
Licitações da plataforma |
| 7 | Buscar e abrir a pasta da licitação no Odoo (JSON), ler o texto dos documentos, link de download, registrar nota, anexar arquivo na Saída IA (pasta "Agentes MCP") e deixar o status no card. Só no login de pessoa |
As ferramentas de compras foram extraídas do projeto mcp-brasil (MIT). Veja THIRD_PARTY_NOTICES.md.
Ferramentas de licitação (Odoo)
As licitacao_* só aparecem para quem entrou pelo login de pessoa e tem as licitações liberadas no Odoo (grupo de vendedor). A chave de bot não carrega e-mail e não as vê.
O servidor chama as rotas internas do módulo
realmak_mcpdo realmak-crm ({ODOO_MCP_URL}/realmak_mcp/v1/...) com o segredo compartilhado eX-Realmak-Act-As: <e-mail>. O Odoo roda a chamada como essa pessoa: valem as regras de acesso dela.O segredo é criado pelo Odoo no volume
mcp-realmak-odooe lido a cada chamada (ODOO_MCP_SECRET_FILE). Nunca aparece em erro nem em log.Arquivos não passam pela conversa:
licitacao_link_arquivoelicitacao_enviar_arquivodevolvem links/mcp/arquivos/...assinados, presos à pessoa e à licitação, válidos por 15 minutos (o de envio, uma vez). O servidor repassa ao Odoo, que confere a permissão de novo. Envio até 50 MB.Toda escrita fica no card: nota interna no histórico, arquivo na Saída IA e a faixa "Claude de · ".
Uma pessoa só com o Odoo (sem o cérebro) também entra pelo login; ela vê as licitacao_* e não vê as cerebro_*.
Resultados grandes são cortados em cerca de 100 mil caracteres, com um aviso para refinar o filtro ou paginar. O conlicitacao_ler_boletim já devolve só uma página resumida de cada vez.
Ferramentas de registros do cérebro
cerebro_esquema, cerebro_consulta e cerebro_provas só aparecem na lista para chaves que o gateway deixa usar: o servidor consulta GET /consulta/esquema com a chave de quem listou e mostra as três ferramentas apenas se a resposta for 200 (ou 503, módulo ligado mas dataset ainda indisponível). A resposta definitiva fica em cache por 5 minutos. Se um cliente guardar a lista de ferramentas, pode ser preciso reconectar para vê-las. Quando uma chave sem acesso chama uma delas mesmo assim, o servidor devolve a mensagem do gateway (403) de forma clara.
Related MCP server: lakebrasil-mcp
Como funciona a autenticação
Há duas portas de entrada:
Pessoas (plugin no Claude Desktop, Cowork e Claude Code): login OAuth na página do próprio servidor, com Google Workspace, conta do Galeed ou código por e-mail. Veja "Login de pessoa" abaixo.
Bots e scripts: a chave de bot do Galeed (
gld_live_...) vai como token Bearer.
Chave de bot
O cliente envia
Authorization: Bearer <chave>em cada requisição.Na primeira vez que vê uma chave, o servidor chama
GET {GALEED_API_URL}/facts?limit=1com ela.200vale;401e403não valem.O resultado, válido ou inválido, fica em cache por 5 minutos, indexado pelo sha256 da chave. A chave nunca é gravada em disco nem em log.
Se o Galeed não responder, o servidor recusa o acesso com
503e uma mensagem clara (falha fechada). Ele nunca libera sem conferir.A mesma chave é repassada às ferramentas
cerebro_*. Cada chave está presa a um único cérebro, então cada analista vê só o que a própria chave enxerga.
Uma chave válida libera todas as ferramentas (compras, ConLicitação e cérebro). O login do site e o token da API do ConLicitação ficam só no servidor.
Como pegar a chave. No painel do Galeed do seu cérebro, em Acesso, crie um bot com acesso a todas as áreas, vá em Conectar, Chaves do cérebro, e clique em Gerar chave. A chave inteira aparece uma única vez; copie na hora. Quem administra o cérebro faz isso. Trate a chave como senha: não vai para chat, print nem Git.
Login de pessoa (OAuth)
Fica desligado até o .env ter MCP_REALMAK_PUBLIC_URL, MCP_REALMAK_OAUTH_SECRET, GALEED_SERVICE_KEY e ao menos uma forma de login. Desligado, o servidor não publica metadados OAuth e o 401 volta sem resource_metadata, como antes.
O aplicativo descobre o OAuth pelo
401(/.well-known/oauth-protected-resource/mcp), se registra em/mcp/oauth/register(só redirects paraclaude.ai,claude.comelocalhost, mais os deMCP_REALMAK_OAUTH_REDIRECT_HOSTS) e abre/mcp/oauth/authorizecom PKCE S256. Todas as rotas do login ficam sob/mcp/oauth/; só os metadados/.well-known/oauth-*ficam na raiz.A página mostra as formas de login configuradas: Google Workspace (restrito a
GOOGLE_WORKSPACE_DOMAIN), conta do Galeed (o servidor confere a senha no/auth/logindo Galeed e encerra a sessão) ou código de 6 dígitos por e-mail (10 minutos, 5 tentativas; a página não revela se o e-mail tem acesso).Com o e-mail provado, o servidor pergunta ao Galeed se ele tem acesso (
GET /v1/factscom a chave de serviço eX-Galeed-Act-As: <email>) e, se não tiver, pergunta ao Odoo se ele tem as licitações liberadas. Sem nenhum dos dois, a página diz isso e não emite nada.O aplicativo recebe um access token
rmk_...(1 hora) e um refresh tokenrmkr_...(30 dias). O refresh confere o acesso de novo.Cada ferramenta
cerebro_*chama o Galeed com a chave de serviço e o e-mail da pessoa. Vale o grant dela no Galeed: tirar o acesso no painel corta em até 5 minutos (cache), e o refresh seguinte falha.
Nada fica em banco: códigos, tokens e cadastros de cliente vão cifrados com MCP_REALMAK_OAUTH_SECRET. Trocar o segredo desconecta todo mundo. No Claude Code, quando o header Authorization está configurado, o cliente não tenta OAuth, então a chave de bot continua valendo como antes.
Uma pessoa com acesso de leitura só a algumas áreas recebe 403 em cerebro_esquema, cerebro_consulta e cerebro_provas: o Galeed exige escopo total no dataset de registros.
Instalar o plugin
O plugin realmak traz as skills (cerebro, licitacao, analisar-edital, conferir-habilitacao, conlicitacao, compras-publicas) e declara o conector do servidor (https://realmak.duckdns.org/mcp). O plugin não pede chave: cada pessoa entra pelo login, e precisa ter acesso concedido no Galeed ou no Odoo.
Claude Code
claude plugin marketplace add ennioferreirab/realmak-plugin
claude plugin install realmak@realmakDepois, dentro do claude, rode /mcp, escolha o servidor realmak e autentique pelo navegador. Para testar sem instalar, use claude --plugin-dir ./plugins/realmak.
Claude Desktop (chat)
Abra Customize, Plugins, Add, Add marketplace, e informe a URL do repositório no GitHub (
https://github.com/ennioferreirab/realmak-plugin). Instale o pluginrealmak. Isso traz as skills.Na página do plugin, clique em Vincular (Connect) e entre com Google, conta do Galeed ou código por e-mail. Se preferir, o conector também pode ser adicionado à mão: Customize, Connectors,
+, Add custom connector, com a URLhttps://realmak.duckdns.org/mcp.Não coloque
headerscom${user_config...}no.mcp.jsondo plugin: o Desktop não resolve esse valor e o botão Vincular fica travado.Para usar uma chave de bot num cliente, o conector manual leva Authentication: No sign-in e o header
Authorization: Bearer <chave gld_live_...>.Fonte: Getting started with custom connectors using remote MCP.
As skills chamam as ferramentas pelo nome (cerebro_buscar, conlicitacao_buscar_licitacao...). O nome completo pode ter prefixo conforme o aplicativo.
Configuração do servidor
Só variáveis de ambiente. Veja .env.example. Nada de segredo vai para o repositório.
Variável | Para quê |
| Obrigatória. Raiz do gateway, terminando em |
| Tempo máximo por chamada ao Galeed (padrão 30000) |
| Padrão |
| Token da API (cabeçalho |
| Login do site do ConLicitação |
| Onde guardar o cookie de sessão (num volume, modo 0600) |
| Cache da validação de chave (padrão 300) |
| Teto por resultado (padrão 100000) |
| Endereço de escuta (padrão |
| Endereço interno do Odoo (na VPS, |
| Arquivo do segredo criado pelo Odoo (na VPS, |
| Tempo máximo por chamada ao Odoo (padrão 60000) |
| Teto do envio por link (padrão 50) |
Publicação no servidor, com Docker e Caddy: DEPLOY.md.
Desenvolvimento
uv sync
uv run pytest # testes, com HTTP simulado
uv run python scripts/check_local.py # sobe tudo em 127.0.0.1 com um Galeed falsoO check_local.py confere /healthz, o 401 sem chave, o tools/list pelo cliente MCP e o repasse da chave ao Galeed.
Limites do MVP
Fora das
licitacao_*, só leitura. Não há ferramentas para monitorar ou desmonitorar pregões, nem para gravar no cérebro.As
licitacao_*exigem o login de pessoa. No Claude Code com a chave de bot no header, elas não aparecem.Não lê pastas do servidor de arquivos. Sem as
licitacao_*, nas skillsanalisar-editaleconferir-habilitacaoo analista anexa os arquivos à conversa.A busca do ConLicitação no site só alcança licitações classificadas nas atividades contratadas pela Realmak.
Uma única conta do ConLicitação (login e token) para todos os analistas. A chave do Galeed controla quem entra, não quem vê o quê no ConLicitação.
O formato exato de alguns campos do site do ConLicitação (por exemplo
bidding_info) não é documentado; o servidor repassa o que vem, sem links assinados, e ordena os avisos por data quando consegue.Estado em memória: o cache de chaves se perde ao reiniciar. O cookie de sessão do ConLicitação sobrevive no volume.
Os dados de compras públicas vêm de APIs de terceiros. Confira na fonte oficial antes de usar em proposta ou recurso.
Licença
MIT. As ferramentas de compras incorporam código do mcp-brasil, também MIT, com os avisos em THIRD_PARTY_NOTICES.md.
This server cannot be deployed
Maintenance
Related MCP Connectors
Query Brazil's public procurement portal (PNCP): tenders, contracts and price records.
Brazilian public procurement (PNCP): search, deadlines, tender markdown, alerts and watches.
US government data as clean JSON for AI agents: SAM.gov contract opportunities, USAspending awards, Grants.gov grants, House STOCK Act trades, and SEC EDGAR filings (Form 4 insider trades, 8-K events, 13F holdings, 13D/G stakes, XBRL fundamentals, 10-K/10-Q sections). 19 read-only tools. Data is as fresh as each source publishes; congressional trades lag up to 45 days and report dollar ranges (House only). Free tier, no card.
JusPronto is case-management software for Brazilian law firms. Its remote MCP server (OAuth 2.1 with PKCE, per-permission scopes, audit log) lets Claude and ChatGPT read the firm's own cases, deadlines, agenda, recent court movements and case files with the page cited. Write actions require the lawyer's approval. Requires a JusPronto account.
Related MCP Servers
- AlicenseAqualityAmaintenanceIntegrates public APIs from the Brazilian Compras.gov.br procurement ecosystem to support price research, supplier sanctions, contract analysis, and procurement planning.1007MIT
- AlicenseNot gradedqualityBmaintenanceEnables agents to query 153 live Brazilian government data tools across federal and state sources, including economy, legislature, judiciary, elections, health, education, and more, reading directly from original APIs.MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to consult public data from the Paraná State Court of Auditors (TCE-PR), including construction records, bidding processes, court decisions, process consultations, and portal information.19MIT
- AlicenseBqualityCmaintenanceEnables AI agents to discover and analyze Brazilian public procurement opportunities from official PNCP and Compras.gov.br open data in a read-only way. Provides tools for full-text tender search, procurement details, document links, awarded results, supplier records, reference prices, contracts, and purchasing indicators without credentials or registration.15MIT