epa-testemcp
v0.1.2
Published
EPA MCP Server
Readme
EPA MCP
Servidor MCP (Model Context Protocol) para integracao do sistema EPA com modelos de linguagem (LLMs).
Este projeto permite que assistentes de IA interajam com o EPA por meio de ferramentas estruturadas. O objetivo e permitir que usuarios utilizem linguagem natural para operar o sistema EPA.
Arquitetura
Fluxo principal:
Tool -> Service -> API Client -> EPA APICamadas:
- CLI: interface de execucao local
- Server: servidor MCP
- Tools: ferramentas expostas ao agente
- Services: regras de negocio
- API Client: comunicacao com a API do EPA
Estrutura do projeto
src/
agent/
api/
cli/
config/
core/
services/
tools/
tests/
utils/Tools implementadas
Solicitacoes:
requests.listrequests.viewrequests.create
Dados auxiliares:
requests.typesrequests.servicesrequests.prioritiesrequests.assigneesrequests.clientsrequests.units
Analitico:
analytics.teamReport
Endpoints reais configurados
requests.typesGET /epa_os/ajax.php- Query params:
action=get,controller=TipoSolicitacao
requests.prioritiesGET /api/api/prioridade
requests.assigneesGET /api/api/usuarios/search- Query params obrigatorios:
term,_type=query,q - Filtro opcional preparado:
filters[unidade_gerencial][type]=pertencoefilters[unidade_gerencial][value]=<id>
requests.list (filtros recomendados)
assignee_id(opcional): ID do responsavelassignee_name(opcional): nome/login (ex:suporte.simeon)period(opcional):current_year(padrao) oulast_12_months
Exemplo para "listar as solicitacoes do usuario suporte.simeon do ultimo ano":
{
"assignee_name": "suporte.simeon",
"period": "last_12_months"
}Instalacao
npm installConfiguracao
Para clientes MCP (ex: Claude Desktop), configure as variaveis de ambiente:
epaApiUrl(ouEPA_API_URL)epaApiToken(ouEPA_API_TOKEN)epaApiTimeoutMs(ouEPA_API_TIMEOUT_MS, opcional)
Opcionalmente, voce pode usar arquivo local config/config.json.
Para uso da CLI, voce tambem pode executar o setup:
npm run dev setupEsse comando configura a URL da API. Para login/token EPA da CLI:
npm run dev loginOs dados sao salvos em .env (se existir) ou config/config.json.
Arquivos de configuracao usados:
config/config.jsonExecucao
Iniciar MCP Server em desenvolvimento:
npm run dev serverIniciar agente OpenAI conectado ao MCP (CLI):
npm run dev agentAo iniciar o agent, a CLI valida se URL/token EPA estao configurados e se o token ainda e valido. Se estiver ausente/invalido, ela solicita login e senha para gerar novo token automaticamente.
No Windows (PowerShell com policy restritiva), use:
npm.cmd run dev agentSe o ambiente bloquear spawn (erro EPERM, comum em ambientes restritos), use:
npm run build
node dist/cli/index.js agentBuild de producao:
npm run buildExecutar CLI compilada:
npm run start -- serverTestes
npm testUso do Agent CLI
- Instale dependencias:
npm install- Configure credenciais:
npm run dev setup
npm run dev loginNo fluxo de login da CLI, informe:
- login EPA
- senha EPA
- OpenAI API KEY (somente para CLI/agent, se ainda nao estiver definida)
- Inicie o agent:
npm run dev agent- Interaja no terminal com linguagem natural. Exemplos:
liste minhas solicitaçõesquais são os tipos disponíveis?crie uma solicitação para ...
O agent escolhe e executa automaticamente as tools MCP (requests.list, requests.types, requests.create, etc.) conforme o contexto da conversa.
Observacao de contexto:
- O agent usa janela deslizante para limitar o historico enviado ao modelo.
- Valor padrao:
30mensagens nao-system. - Para ajustar: defina a variavel
AGENT_MAX_CONTEXT_MESSAGES.
Uso com Claude Desktop
Local (sem publicar no npm)
- Gere o build:
npm run build- Configure o
claude_desktop_config.jsonpara executar o entrypoint MCP direto:
{
"mcpServers": {
"epa-local": {
"command": "node",
"args": [
"C:\\Users\\renat\\OneDrive\\Documentos\\projetos\\epa_mcp\\dist\\server\\stdioServer.js"
],
"env": {
"epaApiUrl": "https://dev.sysepa.com.br/epa",
"epaApiToken": "SEU_TOKEN",
"epaApiTimeoutMs": "15000"
}
}
}
}- Reinicie o Claude Desktop.
Publicado no npm
npx epa-mcpCLI como extra (opcional):
npx epa-mcp-cli setup
npx epa-mcp-cli agentObservacoes
- Os textos de prompt e mensagens do projeto permanecem em portugues.
- Os identificadores tecnicos (arquivos, diretorios, classes e nomes de tools) seguem padrao em ingles.
