MCP Hub
Back to servers

Pharus MCP

A Python MCP server for integrated discovery and querying of investigative services in the Pharus ecosystem. It exposes specialized tools for analyzing RIF, SIMBA, Telefônica, Telemática, KYT, and Graph data through a decoupled service architecture.

glama
Updated
Apr 21, 2026

Pharus MCP

Python 3.12+ FastAPI Model Context Protocol

Servidor MCP (Model Context Protocol) em Python para descoberta e consulta integrada dos serviços investigativos do ecossistema Pharus. Expõe ferramentas especializadas para análise de RIF, SIMBA, Telefônica, Telemática, KYT e Grafos através de uma arquitetura de serviços desacoplados.

Características

  • Descoberta de Serviços: Catálogo semântico de serviços investigativos com metadados e exemplos de uso
  • Protocolo MCP: Implementação completa do Model Context Protocol sobre HTTP Streamable
  • Múltiplas Fontes de Dados: Integração com RIF, SIMBA, Telefônica, Telemática, KYT e Grafos
  • Análise Financeira: Ferramentas analíticas especializadas para investigação de transações e movimentações
  • Algoritmos de Grafo: Catálogo semântico com sugestões automáticas de algoritmos baseadas em metadados de grafos
  • Documentação Automática: Swagger UI e OpenAPI com rotas HTTP acessíveis
  • Configuração Flexível: Suporte a variáveis de ambiente e configurações por serviço

Pré-requisitos

  • Python 3.12+
  • pip (gerenciador de pacotes Python)
  • PowerShell 5.1+ (para Windows) ou bash (para Linux/macOS)
  • Serviços upstream: RIF, SIMBA, Telefônica, Telemática, KYT, Grafos (conforme necessário)

Instalação

1. Configurar Ambiente Virtual

Crie e ative a virtualenv:

python -m venv .venv
.\.venv\Scripts\Activate.ps1

No Linux/macOS:

python3 -m venv .venv
source .venv/bin/activate

2. Instalar Dependências

python -m pip install --upgrade pip
python -m pip install -e .[dev]

3. Configurar Variáveis de Ambiente

Copie o arquivo de exemplo (opcional):

Copy-Item .env.example .env

Edite o .env com as URLs base dos serviços conforme seu ambiente:

HOST=127.0.0.1
PORT=8000
LOG_LEVEL=INFO
GRAFO_API_URL=http://localhost:8001
RIF_API_URL=http://localhost:8082
SIMBA_API_URL=http://localhost:8003
TELEFONICA_API_URL=http://localhost:8004
TELEMATICA_API_URL=http://localhost:8005
KYT_API_URL=http://localhost:8006

Configuração

Variáveis de Ambiente Suportadas:

VariávelDescriçãoPadrão
HOSTEndereço IP para bind do servidor127.0.0.1
PORTPorta HTTP8000
LOG_LEVELNível de log (DEBUG, INFO, WARNING, ERROR)INFO
GRAFO_API_URLURL base do serviço de Grafoshttp://localhost:8001
RIF_API_URLURL base do serviço RIFhttp://localhost:8082
SIMBA_API_URLURL base do serviço SIMBAhttp://localhost:8003
TELEFONICA_API_URLURL base do serviço Telefônicahttp://localhost:8004
TELEMATICA_API_URLURL base do serviço Telemáticahttp://localhost:8005
KYT_API_URLURL base do serviço KYThttp://localhost:8006
MCP_STREAMABLE_HTTP_PATHCaminho HTTP para o protocolo MCP/mcp
DOCS_PATHCaminho para a documentação HTTP/docs

Execução

Iniciar o Servidor MCP (via HTTP)

Método 1: Via módulo Python (recomendado)

.\.venv\Scripts\python -m pharus_mcp --transport http --host 127.0.0.1 --port 8000

Método 2: Via script de inicialização

.\.venv\Scripts\python .\scripts\start_server.py

Método 3: Via atalho (após instalação com -e .[dev])

pharus-start-server

Gerenciar Serviços Upstream

Iniciar RIF, SIMBA, Telefônica, Telemática, KYT e Grafos:

.\.venv\Scripts\python .\scripts\start_services.py

Aguarda a subida com timeout padrão de 60s.

Verificar conectividade sem iniciar processos:

.\.venv\Scripts\python .\scripts\start_services.py --check-only

Definir timeout customizado e modo estrito:

.\.venv\Scripts\python .\scripts\start_services.py --timeout 90 --strict

Parar todos os serviços (Windows):

.\.venv\Scripts\python .\scripts\stop_services.py

Listar PIDs sem finalizar (dry-run):

.\.venv\Scripts\python .\scripts\stop_services.py --dry-run

Acessar o Servidor

Rotas HTTP Disponíveis

O protocolo MCP roda no endpoint /mcp (não é amigável para navegador). Para inspeção e validação:

RotaDescrição
/Redireciona para /docs
/healthHealth check do servidor
/docsSwagger UI interativa
/docs/openapi.jsonEspecificação OpenAPI completa
/docs/servicesCatálogo de serviços investigativos
/docs/toolsLista de tools MCP registradas
/docs/promptsLista de prompts MCP
/docs/resourcesLista de resources semânticos
/docs/resource?uri=...Conteúdo de um resource específico
/mcpEndpoint MCP (protocolo MCP sobre HTTP)

Exemplos:

# Health check
curl http://127.0.0.1:8000/health

# Catálogo de serviços
curl http://127.0.0.1:8000/docs/services

# Detalhe de um serviço (RIF)
curl 'http://127.0.0.1:8000/docs/resource?uri=pharus://services/rif'

Catálogo de Serviços

Serviços Disponíveis

  1. Grafo - Análise relacional com grafos de caso, labels, KYT e algoritmos
  2. KYT - Enriquecimento de pessoas por documentos, emails e telefones
  3. RIF - Análise de relatórios de inteligência financeira com transações e estatísticas
  4. SIMBA - Consulta de contas bancárias e movimentações
  5. Telefônica - Análise de telefonia com CDRs, locais e portabilidade
  6. Telemática - Análise de aplicativos de mensageria e contatos

Cada serviço expõe um conjunto de tools especializadas e um catálogo semântico de uso recomendado.

Desenvolvimento

Estrutura do Projeto

pharus-mcp/
├── src/pharus_mcp/
│   ├── adapters/          # Adaptadores para serviços upstream (RIF, SIMBA, etc.)
│   ├── catalog/           # Catálogo semântico de serviços e algoritmos
│   ├── config/            # Configuração e settings
│   ├── models/            # Modelos de dados (Pydantic)
│   ├── server/            # Servidor FastAPI e registro MCP
│   ├── app.py             # Aplicação FastAPI principal
│   ├── cli.py             # Interface de linha de comando
│   ├── commands.py        # Comandos e orquestração
│   └── __main__.py        # Ponto de entrada
├── tests/                 # Suite de testes
├── scripts/               # Scripts auxiliares de inicialização
├── pyproject.toml         # Configuração Poetry/pip
└── README.md              # Este arquivo

Executar Testes

.\.venv\Scripts\python -m pytest

Com verbosidade:

.\.venv\Scripts\python -m pytest -v

Rodar um teste específico:

.\.venv\Scripts\python -m pytest tests/test_catalog.py::test_catalog_contains_expected_services -v

Smoke Test Manual (HTTP)

PowerShell:

$headers = @{ Accept = "application/json" }

Invoke-WebRequest -Uri "http://127.0.0.1:8000/health" -Headers $headers -Method GET
Invoke-WebRequest -Uri "http://127.0.0.1:8000/docs/services" -Headers $headers -Method GET
Invoke-WebRequest -Uri "http://127.0.0.1:8000/docs/resource?uri=pharus://services/rif" -Headers $headers -Method GET

bash/curl:

curl -s http://127.0.0.1:8000/health | jq .
curl -s http://127.0.0.1:8000/docs/services | jq .
curl -s 'http://127.0.0.1:8000/docs/resource?uri=pharus://services/rif' | jq .

Dependências do Projeto

Principais dependências listadas em pyproject.toml:

  • fastapi - Framework web assíncrono
  • httpx - Cliente HTTP assíncrono
  • pydantic - Validação de dados
  • mcp - Model Context Protocol
  • sqlalchemy - ORM (quando aplicável)
  • pytest - Framework de testes
  • python-dotenv - Suporte a .env

Contribuição

Contribuições são bem-vindas! Por favor:

  1. Faça um fork do repositório
  2. Crie uma branch para sua feature (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -am 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

Padrões de Código

  • Use Python 3.12+ com type hints
  • Siga o padrão PEP 8 (formatado com tools como black ou autopep8)
  • Documente funções e classes com docstrings em português
  • Escreva testes unitários para novas funcionalidades

Solução de Problemas

Erro: "not a git repository"

Inicialize o repositório com git init.

Erro: "Connection refused" ao chamar serviço upstream

Verifique se a URL em .env está correta e se o serviço está ativo na porta esperada.

Erro: "Port already in use"

Altere a porta no .env ou use --port na linha de comando.

Testes falhando

Verifique se os serviços upstream estão rodando. Use --check-only para diagnosticar:

.\.venv\Scripts\python .\scripts\start_services.py --check-only

Licença

Este projeto está sob licença MIT. Veja o arquivo LICENSE para detalhes.

Autores e Mantedores

Desenvolvido pelo time de Tecnologia MPMG

Para questões, sugestões ou reports de bugs, abra uma issue no repositório GitHub.


Última atualização: Abril de 2026
Versão: 1.0.0
Status: Ativo

Reviews

No reviews yet

Sign in to write a review