sicop_mcp
sicop_mcp
SICOP-Datenserver (öffentliche Beschaffung in Costa Rica, offene Daten 2020-2026) als API REST und als MCP-Server für KI-Assistenten bereitgestellt.
Daten:
Salidas/des SICOP-Pakets (~4,3 Mio. Zeilen in Postgres in 31 Tabellen geladen: 13 Datensätze pro Jahr 2020-2026 + 18 abgeleitete Gold-Tabellen).Stack: Django 6 + DRF + Celery + Postgres + Redis. Gleiches Muster wie mwt/consola-mwt-one.
Domänenregel: Jede Geschäftszahl eines Anbieters deklariert ihre Messstufe (Erfassung = Zuschläge · Ausführung = Bestellungen · Lieferung = Empfänge).
Lokaler Start
Erfordert: Python 3.12+ (getestet mit 3.14), lokales PostgreSQL 16/18, Redis (oder den von dir verwendeten Broker).
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
# crear DB (una vez):
# createuser -U postgres sicop -P
# createdb -U postgres -O sicop sicop
python manage.py migrate
python manage.py load_sicop --sync # carga los CSV de Salidas/ (SICOP_DATA_DIR en .env)
python manage.py runserver 127.0.0.1:8000Daten über Celery laden (Stack-Muster)
celery -A config worker -l info # worker
python manage.py load_sicop # encola una tarea por archivo
python manage.py load_sicop --only contratos --forceMCP-Server
python -m sicop.mcp_server # stdio (para clientes MCP)
python -m sicop.mcp_server streamable-http --port 9010 # HTTPTools MCP (18): sicop_ficha_proveedor (Ausführung vs. Erfassung), sicop_mercado_familia,
sicop_competencia_procedimiento, sicop_producto, sicop_producto_historia (Preisreihe pro Jahr),
sicop_cara_a_cara (zwei Anbieter), sicop_expediente,
sicop_adjudicaciones, sicop_carteles_objetados, sicop_representantes,
sicop_representante_competencia, sicop_excepciones, sicop_sanciones,
sicop_precios_institucion, sicop_perdidas_baratas (bot am günstigsten und verlor),
sicop_campo_buscar, sicop_regimen_evaluacion, sicop_resumen.
Jede Geschäftsantwort trägt den Umschlag (Envelope des Plans §5.4): nivel_medicion,
cobertura_cruce (0.626), moneda und caveats.
REST-API
Ressource | Beispiel |
| zugeschlagene Zeilen |
| Aggregat nach Anbieter (Betrag, Zeilen, Institutionen) |
| Aggregat nach Institution |
| Produktkatalog |
| Ausführung vs. Erfassung pro Jahr |
| Liefererfüllung nach Anbieter |
| Bieter pro Zeile |
| Gold-Schicht |
| Direkter Vergleich zweier Anbieter |
| Preisreihe angebotener Preise pro Jahr eines Produkts |
| Zeilen, in denen er am günstigsten bot und verlor |
| Suche in Katalog, Anbietern und Institutionen |
| Bewertungsfaktoren und -gewichte eines Verfahrens |
| Diagnose |
Gleichheitsfilter mit exaktem Spaltennamen (CEDULA_PROVEEDOR, NRO_SICOP, ANO, ...)
und ?search= in den Ressourcen mit Text.
Related MCP server: chile-procurement
PHASE 2 — täglicher Zyklus (cron 06:00)
python manage.py ciclo_diario # corrida manual del ciclo
celery -A config worker -l info # worker (ya en tu stack)
celery -A config beat -l info # cron: ciclo-diario 06:00 · vigilancia 06:05 · consolidar 06:15Täglicher Zyklus: Überwachung der Neufassung (aktueller Monat + 3 abgeschlossene + 2 rotierende) → offene Ergebnisse konsolidieren → Signale der Watchlist → priorisierte Warteschlange → Gold + Tests-Gate.
resultado_decision(SCH_RESULTADO v1,/api/v1/resultados/, POST/api/v1/resultado-registrar/): Granularität(nro_sicop, nro_linea, decision_id), append-only, obligatorischer eingefrorener Kontext (build_id/snapshot_ts/modelo_version/features_hash),overrideals Schlüsselfeld.Signale (
/api/v1/senales/): cliente_participa/adjudicado/perdio, cartel_objetado, sancion_nueva, institucion_vigilada, perdio_por_poco (watchlist.json).Überwachung (
/api/v1/vigilancia/): ETag/Content-Length der Zielmonate vs.ctl_mes_fuente.
Tools MCP: sicop_registrar_resultado, sicop_resultado, sicop_senales, sicop_vigilancia,
sicop_ciclo_diario, sicop_consolidar_resultados.
PHASE 3 — physische Durchsetzung + zwei Fahrspuren + Protokollierung
Durchsetzung (
/api/v1/politica/): Middleware, die jede Anfrage mit rohen Pfaden (/salidas/,.csv,.zip,file://,..\) oder Geheimnissen mit 403 blockiert; Richtlinientests (kein freies SQL, keine Währungsmischung, keine rohen Pfade) → 5/5 PASS.Zwei Fahrspuren:
SICOP_CARRIL=operacion(kanonisch) oderSICOP_CARRIL=laboratorio(jede Antwort mitNO_APTO_PARA_DECISION,decision_eligible:falsegekennzeichnet). Die Labor-Fahrspur fügt das Toolsicop_lab_sqlhinzu (SQL read-only, nur SELECT/WITH, max. 200 Zeilen, lehnt DELETE ab).Antwortprotokollierung (
/api/v1/registro/, Toolsicop_registro): Jeder MCP-Aufruf und jede API-Anfrage wird inregistro_respuestagespeichert (Agent, Tool, Parameter, build_id, Anzahl, Fahrspur, Dauer, Status).
PHASE 4 — Test (ESOSA-Datenblatt, Backtest, Holdout) + offene Punkte P1-P11
python manage.py fase4 --json # ficha ESOSA desde gold + backtest + holdout (gate de muerte)
python manage.py pendientes --json # P1-P7ESOSA-Datenblatt (
/api/v1/prueba-fase4/?solo=ficha, Toolsicop_ficha_esosa): aus der kanonischen Schicht reproduziert — EXAKTE Leistung (98,6% / 577 Zeilen), Erfassung reproduziert das Muster (Spitze 2022, Zusammenbruch 2023), Wettbewerb/Gegenüberstellung auf die Kreuzabdeckung (62,6%) beschränkt, bis die Wiederherstellung geladen ist.Backtest (Tool
sicop_backtest_invitaciones): Wiedergabe vergangener Einladungen (notwendiger Rabatt zum Gewinnen).Holdout + Todes-Gate (Tool
sicop_holdout): Trainieren <=2024, Testen 2025-26; wenn das Modell den Anker der Ausschreibungsunterlagen nicht übertrifft, wird es verworfen (bleibt Speicher + Überwachung).Offene Punkte:
p1_conversion_cartera(impliziter Wechselkurs 460-690 CRC/USD, offizielles BCCR-Gate ausstehend) ·p3_catalogo_familias(9.295 abgeleitete Familien) ·p5_recurrente_vs_recurrido·p6_sanciones_vigencia(1 sanktionierter, der aktuell gewinnt) ·p7_tamano_historico(1,04% Änderung → kein SCD2) ·p10_bronze_zip_miembro(Bronze aus ZIP, wörtliche Rohzeile). P11resultado_decisionin PHASE 2 geschlossen.
Extras des Plans — Atlas, CGR, BCCR
Atlas (
/atlas/): Navigations-App des Korpus. Planentscheidungen eingehalten: keine Zahl reist allein (jeder Bildschirm zeigt seinen Umschlag), Qualität kommt zuerst (/atlas/calidad/: Ableitung nach Jahr, Tests-Gate, Läufe, Überwachung, Fallen), blockierte Fallen nicht dokumentiert (die UI warnt vor dem Vergleich von Währungen und Preisen über Jahre hinweg ohne CL), und die App gibt dem Harness ein Gesicht (Tages-Signale sichtbar). Bildschirme: Dashboard, Suche, Anbieter, Anbieterprofil, Produkt (Historie), Verfahren (Akte+Wettbewerb+Regime+Eingeladene+Ressourcen), Markt nach Familie.CGR-Suche (
/api/v1/cgr/?termino=, Toolsicop_cgr_buscar): PDFs von Beschlüssen mit nativem Text. GEZIELTE NUTZUNG, kein Durchsuchen; rechtliches Gate ausstehend (CGR-Bedingungen nicht gelesen).BCCR-Wechselkurs (
/api/v1/bccr-tc/?fecha=, Toolsicop_bccr_tc): offizieller BCCR (Serien 317/318) wennBCCR_TOKEN/BCCR_EMAILin.env; ohne Token wird der implizite Wechselkurs der Quelle (jährlicher Median CRC/USD) zurückgegeben, entsprechend gekennzeichnet.Einladungen: 42,2 Mio. Zeilen geladen +
invitados_vs_ofertantes.
Docker (VPS)
docker compose up -d --build
# expone 8400 -> django (puerto libre, no choca con 8100 de consola-mwt-one), con Salidas montado en /data/salidasPHASE 1 — kanonische Schicht (Bronze + Silber + Kontrolle)
python manage.py fase1 # bronze -> silver (6 hechos) -> tests-gate -> gold atomico
python manage.py fase1 --solo-tests # solo correr los tests como gate
python manage.py recalcular_derivadas # producto_firma, recursos_desenlace, tiempos_por_etapa, precios_identicos, invitados_vs_ofertantes, regimen_evaluacion, ctl_deriva, catalogo_campoBronze (
/api/v1/bronze/): unveränderliche Rohzeile +HASH_FILA+CORRIDA_ID+ Monat.Silber — 6 Fakten (korrekte Granularität,
DECIMAL(18,4), Währungstrio, BitemporalitätOBSERVADO_DESDE/HASTA/ES_VIGENTE):/fact-requerimiento(Ausschreibung, Verfahren x Zeile x Position) ·/fact-oferta(Verfahren x Angebot x Zeile) ·/fact-adjudicacion(Akt x Verfahren x Zeile x Anbieter) ·/fact-contrato-linea·/fact-orden(eine Zeile pro NRO_ORDEN,TOTAL_ORDENnur einmal, nur CRC summierbar) ·/fact-recepcion.Kontrolle (
/api/v1/ctl-*): Lauf, Quellmonat (ZIP-Hash), Schema, Quarantäne, Tests als Gate.catalogo_campo (
/api/v1/catalogo-campo/): navigierbares Datenwörterbuch (Typ, Füllung, Schlüssel, Falle, Einheit, Join-Regel).Atomare Veröffentlichung: Gold wird nicht veröffentlicht, wenn ein Gate-Test fehlschlägt (die vorherige Version bleibt erhalten).
Tools MCP: sicop_fact_requerimiento/oferta/adjudicacion/contrato/orden/recepcion, sicop_catalogo_campo,
sicop_ctl_deriva, sicop_regimen, sicop_competencia_por_regimen, sicop_gold_status.
Daten
MESSSTUFE:
carteravergleichtMONTO_EJECUTADO_CRC(nur Colones, Dedupe nachNRO_ORDEN) mitMONTO_ADJUDICADO_CRC. Die Messung nach Zuschlägen unterschätzt bis zu 59x (Fall SONDEL 2026: 64x).Währungen: Die Bestellungen enthalten 5 Währungen (CRC/USD/EUR/JPY/GBP); nur Colones werden summiert.
Abdeckung:
competencia_por_lineadeckt 62,6% der Kreuzung Angebot x Bieter ab (im Paket dokumentiert).Datenschutz:
inhibicionesenthält Beamte; keine Konsolidierungen ohne ausdrückliche Entscheidung veröffentlichen (Gesetz 8968).Bereinigung: Ungültige Zellen von Beträgen/Daten werden als NULL geladen (gezählt in
estado-carga).
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Public Data Ukraine Mcp connects AI agents to real public APIs via MCP. Tools include
100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
Real-time Amazon, WIPO & PACER data for AI agents — 19 tools via the MCP protocol.
Related MCP Servers
- AlicenseAqualityDmaintenanceAllows AI assistants to query public procurement opportunities, purchase orders, and government entities from Chile's Mercado Público (ChileCompra) API in real time.12131MIT
- AlicenseNot gradedqualityCmaintenanceEnables access to Chile's government procurement data (Mercado Público / ChileCompra) via MCP, allowing AI agents to query public procurement information.13MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query Colombian government procurement data via MCP tools or natural language questions.12MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query Ecuador government procurement (SERCOP/Compras Públicas) data without API keys, via natural language or direct tools.12MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ale241302/sicop_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server