SIA MCP Server
by leandroluz
README.md
# SIA API
API FastAPI inicial para integração *somente leitura* com o SIA.
## O que já existe
- `GET /health`
- `GET /db/ping`
- `GET /db/relations`
- `GET /db/relations/{relation_name}/columns`
- `GET /presos`
- `GET /presos/{matricula}`
- `GET /presos/{matricula}/visitas`
- `GET /presos/{matricula}/visitas/timeline`
- `GET /presos/{matricula}/atendimentos`
- `GET /presos/{matricula}/atendimentos/historico`
- `GET /atendimentos/locais`
- `GET /atendimentos/advogados`
- `GET /atendimentos/do-dia?data_ref=YYYY-MM-DD`
- `GET /atendimentos/soltos/agora`
- `GET /sentenciados/sem-execucao`
## MCP para o Hermes
A API também expõe uma camada FastMCP em `/mcp`.
Ferramentas disponíveis:
- `sia_db_ping`
- `sia_list_presos`
- `sia_get_preso`
- `sia_list_visitas`
- `sia_list_visitas_timeline`
- `sia_list_atendimentos`
- `sia_list_atendimentos_historico`
- `sia_list_atendimento_locais`
- `sia_list_atendimento_advogados`
- `sia_list_atendimentos_do_dia`
- `sia_soltos_agora`
- `sia_list_sentenciados_sem_execucao`
Exemplo de uso local no Hermes:
```bash
uvicorn app.main:app --reload
```
Depois, o cliente MCP deve apontar para o endpoint HTTP da aplicação com o caminho `/mcp`.
## Conexão Firebird
A conexão é montada a partir destas variáveis de ambiente:
```bash
SIA_FIREBIRD_HOST=10.14.161.210
SIA_FIREBIRD_PORT=3050
SIA_FIREBIRD_DATABASE=/home/sia/banco/dbsia.fdb
SIA_FIREBIRD_USER=SYSDBA
SIA_FIREBIRD_PASSWORD=***
SIA_FIREBIRD_CHARSET=WIN1252
```
Opcional:
```bash
SIA_FIREBIRD_CLIENT_LIBRARY=/caminho/para/libfbclient.so
```
## Rodar localmente
```bash
python3 -m venv .venv
. .venv/bin/activate
pip install -U pip
pip install -e .[dev]
pytest
uvicorn app.main:app --reload
```
## Observações importantes
- Este ambiente foi tratado como **produção**.
- A API foi travada para **consultas בלבד**.
- Não há endpoint de inserção ou exclusão.
- Os testes atuais validam que SQL não-SELECT é bloqueado pela camada de acesso.
## Próximo passo
Mapear as tabelas/vistas reais do SIA para criar endpoints de domínio (`presos`, `visitas`, etc.) sem tocar em escrita.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing