sicop_mcp
sicop_mcp
SICOP 数据服务器(哥斯达黎加公共采购,2020-2026 年开放数据) 以 API REST 和 MCP 服务器 形式提供给 AI 助手。
数据: SICOP 包的
Salidas/(约 430 万行加载到 Postgres 的 31 张表中: 2020-2026 年每年 13 个数据集 + 18 张 gold 派生表)。技术栈: Django 6 + DRF + Celery + Postgres + Redis。与 mwt/consola-mwt-one 相同的模式。
领域规则: 供应商的每项业务金额都声明其计量级别 (captacion = 中标 · ejecucion = 订单 · entrega = 验收)。
本地启动
要求:Python 3.12+(已在 3.14 上测试)、本地 PostgreSQL 16/18、Redis(或你使用的 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:8000通过 Celery 加载数据(技术栈模式)
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 服务器
python -m sicop.mcp_server # stdio (para clientes MCP)
python -m sicop.mcp_server streamable-http --port 9010 # HTTPMCP 工具(18 个):sicop_ficha_proveedor(ejecucion 对比 captacion)、sicop_mercado_familia、
sicop_competencia_procedimiento、sicop_producto、sicop_producto_historia(按年份的
价格序列)、sicop_cara_a_cara(两家供应商对比)、sicop_expediente、
sicop_adjudicaciones、sicop_carteles_objetados、sicop_representantes、
sicop_representante_competencia、sicop_excepciones、sicop_sanciones、
sicop_precios_institucion、sicop_perdidas_baratas(报价最低却落标)、
sicop_campo_buscar、sicop_regimen_evaluacion、sicop_resumen。
所有业务响应都带有信封(计划 §5.4 中的 envelope):nivel_medicion、
cobertura_cruce(0.626)、moneda 和 caveats。
API REST
资源 | 示例 |
| 已中标行 |
| 按供应商汇总(金额、行数、机构) |
| 按机构汇总 |
| 产品目录 |
| 按年份的 ejecucion 对比 captacion |
| 按供应商的交付履约情况 |
| 按行的投标人 |
| gold 层 |
| 两家供应商直接对比 |
| 某产品按年份的报价价格序列 |
| 报价最低却落标的行 |
| 在目录、供应商和机构中搜索 |
| 某程序的评估因素和权重 |
| 诊断 |
按精确列名进行等值过滤(CEDULA_PROVEEDOR、NRO_SICOP、ANO、……),
文本类资源支持 ?search=。
Related MCP server: chile-procurement
阶段 2 — 每日循环(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:15每日循环:重写监控(当前月 + 3 个已关闭月份 + 2 个轮换月份)→ 合并结果的 PENDIENTES → 观察列表信号 → 优先队列 → gold + tests-gate。
resultado_decision(SCH_RESULTADO v1,/api/v1/resultados/,POST/api/v1/resultado-registrar/): 粒度为(nro_sicop, nro_linea, decision_id),仅追加,必须携带冻结的上下文 (build_id/snapshot_ts/modelo_version/features_hash),override为关键字段。信号(
/api/v1/senales/):cliente_participa/adjudicado/perdio、cartel_objetado、sancion_nueva、 institucion_vigilada、perdio_por_poco(watchlist.json)。监控(
/api/v1/vigilancia/):目标月份的 ETag/Content-Length 对比ctl_mes_fuente。
MCP 工具:sicop_registrar_resultado、sicop_resultado、sicop_senales、sicop_vigilancia、
sicop_ciclo_diario、sicop_consolidar_resultados。
阶段 3 — 物理强制 + 双通道 + 记录
强制(
/api/v1/politica/):中间件,对任何包含 原始路径(/salidas/、.csv、.zip、file://、..\)或机密的请求以 403 阻止;策略测试 (无自由 SQL、不混用货币、无原始路径)→ 5/5 通过。双通道:
SICOP_CARRIL=operacion(规范通道)或SICOP_CARRIL=laboratorio(所有响应标记为NO_APTO_PARA_DECISION、decision_eligible:false)。 实验室通道额外提供sicop_lab_sql工具(只读 SQL,仅 SELECT/WITH, 最多 200 行,拒绝 DELETE)。响应记录(
/api/v1/registro/,工具sicop_registro):每次 MCP 调用和 API 请求都会记录到registro_respuesta(代理、工具、参数、build_id、计数、 通道、耗时、状态)。
阶段 4 — 测试(ESOSA 档案、回测、留出集)+ 待办 P1-P11
python manage.py fase4 --json # ficha ESOSA desde gold + backtest + holdout (gate de muerte)
python manage.py pendientes --json # P1-P7ESOSA 档案(
/api/v1/prueba-fase4/?solo=ficha,工具sicop_ficha_esosa):从规范层 复现 — 履约情况完全一致(98.6% / 577 行),captacion 复现了模式(2022 年峰值、2023 年崩溃), 竞争/面对面对比限于交叉覆盖范围(62.6%),直到恢复的数据加载完成。回测(工具
sicop_backtest_invitaciones):回放过去的邀请(获胜所需折扣)。留出集 + 死亡门(工具
sicop_holdout):用 <=2024 训练,在 2025-26 上测试;如果模型未超过 标书的锚点则弃用(保留记忆 + 监控)。待办:
p1_conversion_cartera(隐含汇率 460-690 CRC/USD,BCCR 官方门待定)·p3_catalogo_familias(9,295 个派生家族)·p5_recurrente_vs_recurrido·p6_sanciones_vigencia(1 名受制裁者仍在有效中标)·p7_tamano_historico(1.04% 变化 → 不做 SCD2)·p10_bronze_zip_miembro(从 zip 生成 bronze,原始字面行)。P11resultado_decision已在阶段 2 关闭。
计划的额外内容 — Atlas、CGR、BCCR
Atlas(
/atlas/):语料库导航应用。遵循计划中的决策: 任何数字都不单独出现(每个屏幕都显示其信封),质量优先 (/atlas/calidad/:按年份派生、tests-gate、运行、监控、陷阱), 已阻止的陷阱不予记录(UI 警告不要比较货币和 无 CL 的跨年份价格),以及应用为 harness 赋予面孔(当日信号可见)。 屏幕:仪表盘、搜索、供应商、供应商档案、产品(历史)、 程序(案卷+竞争+制度+受邀者+资源)、按家族的市场。CGR 搜索器(
/api/v1/cgr/?termino=,工具sicop_cgr_buscar):原生文本决议的 PDF。 定向使用,禁止批量扫描;法律门待定(CGR 条款未阅读)。BCCR 汇率(
/api/v1/bccr-tc/?fecha=,工具sicop_bccr_tc):BCCR 官方(序列 317/318) 如果.env中有BCCR_TOKEN/BCCR_EMAIL;无令牌则返回来源的隐含汇率 (CRC/USD 年度中位数)并标记为隐含。邀请:已加载 4,220 万行 +
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/salidas阶段 1 — 规范层(bronze + silver + control)
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/):不可变的原始行 +HASH_FILA+CORRIDA_ID+ 月份。Silver — 6 个事实表(正确粒度、
DECIMAL(18,4)、货币三元组、双时态OBSERVADO_DESDE/HASTA/ES_VIGENTE):/fact-requerimiento(标书、程序 x 行 x 预算项)·/fact-oferta(程序 x 报价 x 行)·/fact-adjudicacion(行为 x 程序 x 行 x 供应商)·/fact-contrato-linea·/fact-orden(每个 NRO_ORDEN 一行,TOTAL_ORDEN只出现一次,仅 CRC 可加总)·/fact-recepcion。控制(
/api/v1/ctl-*):运行、源月份(zip 哈希)、模式、隔离、测试作为门。catalogo_campo(
/api/v1/catalogo-campo/):可浏览的数据字典(类型、填充率、键、陷阱、单位、连接规则)。原子发布:如果门的任何测试失败,gold 不发布(保留先前版本)。
MCP 工具:sicop_fact_requerimiento/oferta/adjudicacion/contrato/orden/recepcion、sicop_catalogo_campo、
sicop_ctl_deriva、sicop_regimen、sicop_competencia_por_regimen、sicop_gold_status。
数据
计量级别:
cartera将MONTO_EJECUTADO_CRC(仅科朗,按NRO_ORDEN去重) 与MONTO_ADJUDICADO_CRC进行比较。按中标计量会低估最多 59 倍(SONDEL 2026 案例:64 倍)。货币: 订单带有 5 种货币(CRC/USD/EUR/JPY/GBP);只加总科朗。
覆盖率:
competencia_por_linea覆盖报价 x 投标人交叉的 62.6%(已在包中记录)。隐私:
inhibiciones包含公职人员;未经明确决定不得发布汇总数据(第 8968 号法律)。清理:金额/日期的无效单元格加载为 NULL(在
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