apex-mcp-framework
Framework MCP reutilizável que conecta um ERP a agentes Model Context Protocol via stdio (Python, SDK oficial mcp 1.x). Expõe capacidades de negócio — classificação de CNAEs, revisão jurídica de contratos, obrigações fiscais, financeiro, marketing com publicação real em Facebook/Instagram, WhatsApp e relatórios — como ferramentas MCP autenticadas.
Projeto derivado do Apex ERP Contábil. Este repositório é o home público do servidor MCP — a publicação nos registries (Smithery, Glama, mcp.so, registry oficial) aponta para cá.
✨ O que é um "framework" aqui?
Você não edita o núcleo do servidor para mudar comportamento. A estrutura é modular:
apex-mcp-framework/
├── pyproject.toml # empacotamento (pip install -e .)
├── requirements.txt # mcp>=1.0.0,<2.0.0 (API 1.x do SDK)
├── server.json # metadados p/ registries MCP
├── src/apex_mcp/
│ ├── __main__.py # python -m apex_mcp
│ ├── server.py # servidor MCP (stdio) — raramente mexe
│ ├── config.py # config via env (ERP_BASE, credenciais)
│ ├── http_client.py # cliente HTTP com auth Bearer + refresh automático
│ └── tools.py # ⭐ catálogo de ferramentas — É AQUI QUE VOCÊ ADICIONA
└── examples/
└── mcp_client.py # cliente MCP de exemplo
Para adicionar uma ferramenta nova, edite apenas src/apex_mcp/tools.py:
# 1) acrescente o Tool (o agente vê nome + descrição + schema)
Tool(name="minha_ferramenta", description="O que ela faz",
inputSchema={"type": "object", "properties": {"campo": {"type": "string"}}, "required": ["campo"]}),
# 2) acrescente a rota (método, path na API do ERP)
"minha_ferramenta": ("POST", "/api/meu-modulo/acao", None),
Pronto — o servidor expõe automaticamente. Nenhum outro arquivo muda.
🚀 Instalação e execução
git clone https://github.com/ogconstrutorasp/apex-mcp-framework.git
cd apex-mcp-framework
pip install -r requirements.txt # ou: pip install -e .
python -m apex_mcp # inicia o servidor (stdio)
Configuração (variáveis de ambiente):
| Variável | Descrição | Padrão |
|---|---|---|
ERP_BASE |
URL base da API do ERP | http://localhost:3001 (produção: https://apex-contabil.vercel.app) |
SUPABASE_URL |
URL do Supabase (login da conta de serviço) | https://vebileaugzzrgnhgmvmr.supabase.co |
SUPABASE_ANON_KEY |
chave anon do Supabase | <anon-key> |
ERP_MCP_EMAIL / ERP_MCP_PASSWORD |
conta de serviço — o framework autentica com Bearer em todas as chamadas e renova o token sozinho | vazio (modo sem auth, avisa) |
API key por tenant (
x-api-key): consulte o painel do ERP (Fase 5 — máquina-a-máquina).
🔌 Conectar em um cliente MCP
Claude Desktop / qualquer cliente MCP:
{
"mcpServers": {
"apex-contabil": {
"command": "python",
"args": ["-m", "apex_mcp"]
}
}
}
🧰 Ferramentas (13)
classificar_cnae · revisar_contrato · consultar_saldo_cliente · consultar_cronograma_obrigacoes · gerar_post_marketing · publicar_post_agora · analytics_marketing · criar_campanha_meta · gerar_criativos_multiplataforma · enviar_whatsapp · alertas_pendentes · gerar_relatorio · enviar_notificacao
🧪 Testar localmente
python examples/mcp_client.py
# Handshake OK — 13 ferramentas:
# - classificar_cnae: ...
# ...
🌐 Catálogo público
- Metadados para registro:
server.json - Catálogo do ERP:
https://apex-contabil.vercel.app/api/mcp/catalogo - Guia de publicação nos registries: veja
docs/PUBLICAR-MCP-REGISTRIES.mdno repo do ERP.
🔒 Segurança
- O framework só expõe ferramentas do próprio ERP via API autenticada (Bearer de conta de serviço ou
x-api-keypor tenant) — nunca shell/arquivos arbitrários. - Credenciais vêm somente de variáveis de ambiente; nada é commitado.
- O SDK está fixado em
mcp<2porque o servidor usa a API 1.x (Server.list_tools/call_tool), removida no 2.x.
📄 Licença
MIT — veja LICENSE.
Metadata
Release files for apex-mcp-framework 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| apex_mcp_framework-1.1.1.tar.gz | 9.5 kB | Without provenance | Details for apex_mcp_framework-1.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| apex_mcp_framework-1.1.1-py3-none-any.whl | Python 3 | none | any | Details for apex_mcp_framework-1.1.1-py3-none-any.whl |
Total release size: 18.9 kB
Release files / apex_mcp_framework-1.1.1.tar.gz
| Download URL | apex_mcp_framework-1.1.1.tar.gz |
|---|---|
| Size | 9.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9169da73bdf67751074edb3697551709be7d6307ae7f36b1615517c1d4254773
|
|
BLAKE2b-256 checksum How to use checksums |
1de2a335e6fdb9d187137bfa465e15f9eede7b39003d671095282aede1b27b28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / apex_mcp_framework-1.1.1-py3-none-any.whl
| Download URL | apex_mcp_framework-1.1.1-py3-none-any.whl |
|---|---|
| Size | 9.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bae4c2a06108f6ca546db093f07b64a68ff6e00184ac8c934df52160b1e14b18
|
|
BLAKE2b-256 checksum How to use checksums |
7aa06cc4290633d6a70100028c46544a39662c6f7afcd551a5059cdd45ce898d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Security for apex-mcp-framework 1.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.