Skip to main content
O Model Context Protocol (MCP) é um protocolo aberto que padroniza como as aplicações da Prefeitura do Rio fornecem contexto para modelos de linguagem (LLMs). Mantido pela IplanRio, o MCP funciona como uma camada de integração universal entre agentes de IA e os dados e ferramentas municipais.

Por que MCP na Prefeitura?

Sem MCP, cada integração entre um LLM e um sistema municipal (BigQuery, Prefect, RMI, etc.) exige código customizado e difícil de manter. Com MCP:
  • Padronização: um protocolo único para todos os sistemas municipais
  • Segurança: autenticação centralizada via Identidade Carioca
  • Flexibilidade: troque o modelo de LLM sem alterar as integrações
  • Governança: auditoria centralizada de todas as interações IA ↔ dados municipais

Arquitetura

Host MCP (ex: OpenCode)

        │  protocolo MCP (stdio / HTTP)

┌───────────────────────────────────┐
│  Servidor MCP                     │
│  ┌─────────────┐  ┌────────────┐  │
│  │  Resources  │  │   Tools    │  │
│  │ (dados BQ)  │  │ (Prefect)  │  │
│  └─────────────┘  └────────────┘  │
│  ┌─────────────┐  ┌────────────┐  │
│  │   Prompts   │  │  Sampling  │  │
│  │ (templates) │  │  (LLM req) │  │
│  └─────────────┘  └────────────┘  │
└───────────────────────────────────┘


Fontes de dados municipais
(BigQuery, APIs, Prefect, RMI...)

Componentes

  • Host MCP: A aplicação que usa o LLM e coordena os servidores MCP (ex: OpenCode, eAi Agent)
  • Cliente MCP: Componente dentro do host que gerencia a conexão com cada servidor
  • Servidor MCP: Serviço leve que expõe recursos municipais específicos ao LLM
  • Fontes de Dados: BigQuery, APIs REST, Prefect, RMI e qualquer sistema municipal

Tipos de Capacidades

Resources

Permitem que o LLM acesse dados municipais como arquivos ou streams:
{
  "uri": "bigquery://rj-iplanrio/gerenciamento_saude/indicadores",
  "name": "Indicadores de Saúde SMS",
  "description": "Métricas de saúde municipal por clínica da família",
  "mimeType": "application/json"
}

Tools

Permitem que o LLM execute ações nos sistemas municipais:
{
  "name": "executar_query_bigquery",
  "description": "Executa uma query SQL no BigQuery municipal com validação de permissões",
  "inputSchema": {
    "type": "object",
    "properties": {
      "sql": { "type": "string", "description": "Query SQL a executar" },
      "projeto": { "type": "string", "description": "Projeto GCP alvo" }
    }
  }
}

Prompts

Templates reutilizáveis para tarefas municipais comuns:
{
  "name": "analisar_indicadores_sms",
  "description": "Analisa indicadores de saúde e gera relatório executivo",
  "arguments": [
    { "name": "periodo", "description": "Período de análise (ex: 2024-Q1)" },
    { "name": "secretaria", "description": "Secretaria responsável" }
  ]
}

Servidores MCP Municipais

A IplanRio disponibiliza servidores MCP para os principais sistemas municipais: | Servidor | Sistemas conectados | Uso principal | |----------|--------------------|--------------|| | mcp-bigquery | BigQuery municipal | Consultas analíticas via linguagem natural | | mcp-prefect | Prefect | Monitorar e disparar pipelines de dados | | mcp-rmi | RMI API | Consultar dados de pessoas físicas | | mcp-busca | API de Busca | Pesquisar serviços e dados municipais |

Configuração com OpenCode

Para usar MCP com o OpenCode na IplanRio, adicione ao ~/.config/opencode/config.json:
{
  "model": "anthropic/claude-sonnet-4-6",
  "provider": {
    "anthropic": {
      "name": "Bifrost IplanRio (Anthropic)",
      "options": {
        "apiKey": "<sua-virtual-key>",
        "baseURL": "https://bifrost.iplan.dados.rio/anthropic/v1"
      }
    }
  },
  "mcp": {
    "bigquery": {
      "type": "stdio",
      "command": "uvx",
      "args": ["mcp-server-bigquery", "--project", "rj-iplanrio"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "<path-to-service-account.json>"
      }
    }
  }
}

Casos de Uso Municipais

Análise de Dados de Saúde (SMS)

Usuário: "Quais são as 5 clínicas da família com maior número de atendimentos 
          no mês passado e qual a variação em relação ao mês anterior?"

LLM → usa mcp-bigquery → gera e executa SQL → retorna análise formatada

Monitoramento de Pipelines (IplanRio)

Usuário: "Algum pipeline falhou nas últimas 24h? Se sim, qual o erro?"

LLM → usa mcp-prefect → lista runs com falha → resume o stack trace

Consulta ao RMI

Usuário: "Busca o telefone de contato do cidadão com CPF 123.456.789-00"

LLM → usa mcp-rmi → valida escopo → retorna dados com auditoria de acesso

Segurança e Conformidade

  • Autenticação: Todos os servidores MCP requerem tokens do Identidade Carioca
  • Auditoria: Cada tool call é registrada com identificação do usuário e timestamp
  • LGPD: Dados sensíveis (CPF, saúde) só são expostos com escopos específicos aprovados
  • Princípio do menor privilégio: Cada servidor MCP expõe apenas o mínimo necessário
Para obter acesso aos servidores MCP, entre em contato com a IplanRio via Discord no canal #peça-permissão.