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/serverStreamable 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:
- Asistentul deschide o fereastră de browser cu URL-ul de autorizare al monitorul.ai.
- Dacă nu ești autentificat, te trimitem la /cont/intra. Apeși Conectare cu Google și treci prin selecția standard de cont Google.
- 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ă.
- 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:
{
"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/serverCodex CLI
Codex acceptă același tip de configurare ca Claude Desktop, prin mcp-remote:
{
"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.