Files
compass_backoffice/docs/CORRECAO_ENV_MCP_TIM_CLIENTS.md
2026-06-13 08:23:21 -03:00

2.1 KiB

Correção: .env original TIM + MCP Server + URLs

Problema corrigido

O pacote anterior ainda tratava o MCP Server como um backend REST genérico baseado em BACKOFFICE_MCP_REST_BASE_URL. Quando essa variável não existia, uma chamada HTTP podia ser montada com URL vazia, gerando erro como:

Request URL is missing an 'http://' or 'https://' protocol.

Além disso, o .env original do backoffice develop usa variáveis específicas:

PMID_API_HOST
SIEBEL_API_HOST
SPEECH_PREDICTION_BASE_URL
SPEECH_HISTORY_BASE_URL
TAIS_DB_DSN
TAIS_GENAI_ENDPOINT
...

Essas variáveis não devem ser substituídas por uma URL REST genérica.

Ajustes implementados

  1. src/core/config.py agora carrega explicitamente o .env da raiz do projeto.
  2. config/mcp_servers.yaml agora usa endpoint literal seguro:
endpoint: http://localhost:8010

Isso evita depender de expansão YAML ${VAR:default} caso o MCPToolRouter do framework não suporte esse formato.

  1. mcp_servers/backoffice_mcp_server/settings.py agora aceita:
  • variáveis BACKOFFICE_MCP_*, quando existirem;
  • variáveis originais TIM/develop, como PMID_API_HOST, SIEBEL_API_HOST, SPEECH_*, TAIS_*.
  1. O default do MCP Server passou a ser:
BACKOFFICE_MCP_BACKEND_TYPE=tim_clients
BACKOFFICE_MCP_USE_MOCK=false

Assim o MCP não mascara erro usando mock quando o .env real está presente.

  1. As tools IMDB/PMID, Speech, TAIS, ABRT e Portabilidade passam a chamar os clients originais do projeto quando backend_type=tim_clients.

Como testar

Suba o MCP Server:

uvicorn mcp_servers.backoffice_mcp_server.main:app --host 0.0.0.0 --port 8010 --reload

Confirme o health:

curl http://localhost:8010/health

O retorno deve indicar:

{
  "use_mock": false,
  "backend_type": "tim_clients",
  "tim_clients_configured": true
}

Depois suba o backend principal:

uvicorn app.main:app --host 0.0.0.0 --port 9000 --reload

Teste a lista de tools via backend:

curl http://localhost:9000/debug/mcp/tools

Se o MCP estiver ativo, essa chamada deve chegar no processo da porta 8010.