monitorul.ai
/

Server MCP·Monitorul.ai·Acces public · Google OAuth

MCP — Server pentru asistenți AI

monitorul.ai expune corpusul parlamentar (818 mii de discursuri din ședințele Camerei și Senatului din 2000 încoace) ca server Model Context Protocol. Orice asistent AI care vorbește MCP poate cere date direct din arhivă: căutare după nume sau temă, dosare de parlamentar, agregări, redarea unei ședințe întregi. Răspunsurile vin cu link-uri verificabile pe acest site.

Endpoint

https://monitorul.ai/mcp/server

Streamable HTTP, autentificat cu OAuth 2.0 (Google). La prima conectare asistentul îți deschide o fereastră de browser pentru autentificare; conectările următoare sunt silențioase până la revocare din /cont. Limita: 30 cereri/min per cont și per IP; 20 cereri/min pentru căutare hibridă (RRF / kNN-only). Vezi Limite și costuri.

Ce este MCP

Model Context Protocol (MCP) este un protocol deschis prin care asistenții AI primesc acces la surse de date și la instrumente externe. Un server MCP nu este un chatbot — este un strat de date pe care îl deschizi pentru orice client compatibil. Asistentul vede o listă de instrumente, decide singur care îi trebuie pentru o întrebare anume, și construiește răspunsul din rezultatele acelor instrumente.

Acest server expune 16 instrumente, toate citindu-se din aceeași bază de date Elasticsearch care alimentează website-ul. Nu este un strat redundant: site-ul și serverul MCP sunt două interfețe peste același corpus, cu aceleași identificatoare stabile și aceleași URL-uri canonice.

Endpoint și conectare

Pentru orice client MCP modern, conectarea înseamnă să-i dai URL-ul de mai sus. Clientul face un handshake (initialize), descoperă serverul de autorizare prin /.well-known/oauth-protected-resource, parcurge dansul OAuth 2.0 cu PKCE și DCR, citește lista de instrumente (tools/list), apoi le invocă pe rând (tools/call). Toată conversația se întâmplă peste HTTP cu transport streamable HTTP.

Configurația din clientul tău rămâne aceeași indiferent de autentificare — mcp-remote (învelișul npx pe care îl recomandăm pentru Claude Desktop și Codex) gestionează transparent fluxul OAuth: îți deschide o fereastră de browser la prima cerere, salvează cheile local, le reîmprospătează când expiră.

Prima conectare

Pașii pe care îi vezi în browser, în ordine:

  1. Asistentul deschide o fereastră de browser cu URL-ul de autorizare al monitorul.ai.
  2. Dacă nu ești autentificat, te trimitem la /cont/intra. Apeși Conectare cu Google și treci prin selecția standard de cont Google.
  3. După autentificare, îți afișăm un ecran de consimțământ care arată numele asistentului, URL-ul lui de redirect și ce permisiuni cere. Apeși Acceptă și conectează.
  4. Browserul închide fereastra (sau te lasă să o închizi tu) și asistentul are de acum o cheie de acces și o cheie de reîmprospătare.

Conectările ulterioare sunt silențioase — atâta timp cât nu revoci accesul din /cont, mcp-remote își reîmprospătează automat cheia când expiră (la ~24 ore) și asistentul tău nu observă niciodată că autentificarea s-a întâmplat.

Claude Desktop

Adaugă serverul în fișierul de configurare al aplicației:

~/Library/Application Support/Claude/claude_desktop_config.json (macOS)%APPDATA%\Claude\claude_desktop_config.json (Windows)
{
  "mcpServers": {
    "monitorul-ai": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://monitorul.ai/mcp/server"
      ]
    }
  }
}

Repornește Claude Desktop. Iconița de instrumente (ciocanul) ar trebui să afișeze cele 16 tool-uri sub monitorul-ai. Pentru o conversație de testare: „Folosește monitorul-ai: ce a spus Diana Șoșoacă despre vaccinuri în 2021?”

Cursor și Cline

Atât Cursor cât și Cline acceptă URL-ul serverului direct, fără proxy. În setările MCP ale clientului, alege Add server, transportul streamable-http sau http, și introdu:

https://monitorul.ai/mcp/server

Codex CLI

Codex acceptă același tip de configurare ca Claude Desktop, prin mcp-remote:

~/.codex/config.toml
{
  "mcp_servers": {
    "monitorul-ai": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://monitorul.ai/mcp/server"
      ]
    }
  }
}

Cele 16 instrumente

Surfaceul este organizat pe patru funcții: identificare unică (lookup), căutare, listare, și agregări. Fiecare instrument este un wrapper Zod-tipat peste o funcție din stratul de acces ES — same shape, same caps, same defaults ca pe site.

Lookup — extragere după id

describe_corpus
Camere, topice, tipuri de referințe, intervale, totaluri
get_document
Un număr al MO după mo://YYYY/PART/ISSUE
get_agenda_item
Un punct de pe ordinea de zi
get_speech
Un discurs cu textul integral (pentru citate)
get_report
Un raport instituțional
person_page
Dosar complet pentru un parlamentar
committee_page
Dosar complet pentru o comisie

Search — căutare cu evidențiere

search_speeches
Căutare hibridă (BM25 + kNN/RRF) peste discursuri
search_persons
Căutare fuzzy de parlamentari, miniștri, președinți

List — listare în ordine

list_document_children
Toate înregistrările dintr-un număr al MO, în ordine
list_documents_by_date
Ședințele de pe o anumită dată
list_committee_meetings
Ședințele unei comisii

Index și agregări

politicians_index
Top 100 parlamentari pentru un an
committees_index
Top 100 comisii pentru un an
sessions_index
Toate ședințele dintr-un an
agg_speeches_by_party_year
Agregare partid × an

Întrebări tipice

Compoziția e treaba asistentului — el alege ce tool-uri să apeleze și în ce ordine. Câteva tipare de întrebare care merg bine:

  • „Ce a spus George Simion despre UE în 2024?”search_persons → search_speeches cu speaker_person_id și years
  • „Redă întreaga ședință a Senatului de ieri.”list_documents_by_date → list_document_children
  • „Cine a vorbit cel mai mult despre locuințe în 2024?”search_speeches cu q + agg_speeches_by_party_year pentru cohorte
  • „Construiește un dosar pe senatorul X.”search_persons → person_page → search_speeches filtrat pe persoană
  • „Caută toate intervențiile care fac referire la Codul muncii.”search_speeches cu rank_fusion="bm25-only" pentru exactitate

Limite și costuri

Serverul este public și gratuit. Aplicăm rate-limit pe două axe (per cont și per IP) și în două nivele de strictețe (general și greu pentru căutarea hibridă). Cererile trebuie să treacă pe ambele axe — așa o cheie scursă peste mai multe IP-uri și un IP împărțit de mai multe conturi sunt limitate independent.

  • 30 cereri / minut / cont și 30 cereri / minut / IP — orice apel de tool. Suficient pentru conversații normale, inclusiv lanțuri de tool-uri în care asistentul rulează 5–10 apeluri pe rând.
  • 20 cereri / minut / cont și 20 cereri / minut / IP — căutare hibridă cu RRF sau kNN. Aceste apeluri ating serviciul de embeddings; limita strânsă previne folosirea disproporționată.

Cheile de acces durează ~24 ore; cheile de reîmprospătare ~30 zile sau până la revocare din /cont. Răspunsurile la căutare sunt în cataloguer mode: hit-urile vin cu identificator, URL absolut verificabil, fragment de 240 de caractere și metadata vorbitorului. Textul integral al unui discurs se cere separat prin get_speech(record_id) — în felul acesta o conversație lungă se încadrează în context window-ul asistentului fără paginări inutile.

Metodologie și sursă

Datele și URL-urile sunt aceleași ca pe site. Pentru detalii despre pipeline, identitatea înregistrărilor și algoritmul de căutare, vezi nota metodologică. Pentru contractul tehnic complet al MCP-ului (forma hit-urilor, modurile de fuziune, tier-urile de rate-limit, planuri V2), vezi docs/mcp.md în repo.

Erori sau lacune în corpus pot fi semnalate prin canalele descrise în nota metodologică. Sursa primară rămâne Monitorul Oficial; arhiva este un strat de citare și descoperire peste documentele publice.