sicop_mcp
sicop_mcp
SICOPデータサーバー(コスタリカの公共調達、オープンデータ2020-2026)を API REST および MCPサーバー としてAIアシスタント向けに公開。
データ: SICOPパッケージの
Salidas/(Postgresに約430万行、31テーブルにロード済み: 2020〜2026年の13データセット + 派生ゴールド18テーブル)。スタック: Django 6 + DRF + Celery + Postgres + Redis。mwt/consola-mwt-oneと同じパターン。
ドメインルール: プロバイダーのビジネス数値はすべて測定レベルを宣言する (captacion = 落札 · ejecucion = 発注書 · entrega = 受領)。
ローカル起動
要件: Python 3.12+(3.14でテスト済み)、ローカルPostgreSQL 16/18、Redis(または使用するブローカー)。
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:8000Celery経由でのデータロード(スタックのパターン)
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(実行 vs 捕捉)、sicop_mercado_familia、
sicop_competencia_procedimiento、sicop_producto、sicop_producto_historia(年別価格シリーズ)、
sicop_cara_a_cara(2プロバイダー比較)、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)が付属: nivel_medicion、
cobertura_cruce(0.626)、moneda、caveats。
API REST
リソース | 例 |
| 落札明細行 |
| プロバイダー別集計(金額、明細行、機関) |
| 機関別集計 |
| 製品カタログ |
| 年別の実行 vs 捕捉 |
| プロバイダー別納品履行率 |
| 明細行別の入札者 |
| ゴールド層 |
| 2プロバイダーの直接比較 |
| 製品の年別提示価格シリーズ |
| 最安値を提示して落札を逃した明細行 |
| カタログ、プロバイダー、機関の検索 |
| 手続きの評価要素と重み |
| 診断 |
列名の完全一致による等価フィルタ(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を統合 → ウォッチリストのシグナル → 優先キュー → ゴールド + テストゲート。
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/): クライアント参加/落札/落選、入札書類異議申立、新規制裁、 監視対象機関、僅差で落選(watchlist.json)。監視(
/api/v1/vigilancia/): 対象月のETag/Content-Length vsctl_mes_fuente。
MCPツール: sicop_registrar_resultado、sicop_resultado、sicop_senales、sicop_vigilancia、
sicop_ciclo_diario、sicop_consolidar_resultados。
フェーズ 3 — 物理的エンフォースメント + 2レーン + 記録
エンフォースメント(
/api/v1/politica/): 生パス(/salidas/、.csv、.zip、file://、..\)や シークレットを含むリクエストを403でブロックするミドルウェア。ポリシーテスト (自由SQLなし、通貨混在なし、生パスなし)→ 5/5 PASS。2レーン:
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行)、捕捉はパターンを再現(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からのブロンズ、生の行をそのまま)。P11resultado_decisionはフェーズ2でクローズ済み。
計画の追加 — Atlas、CGR、BCCR
Atlas(
/atlas/): コーパス閲覧アプリ。計画の決定を尊重: 数値は単独で移動しない(各画面がエンベロープを表示)、品質が最優先 (/atlas/calidad/: 年別派生、テストゲート、実行、監視、トラップ)、 ブロックされたトラップは文書化しない(UIは通貨比較やCLなしの年跨ぎ価格比較を警告)、 そしてアプリはハーネスに顔を向ける(当日のシグナルを表示)。 画面: ダッシュボード、検索、プロバイダー、プロバイダーフィーチャ、製品(履歴)、 手続き(案件+競争+評価方式+招待+リソース)、ファミリ別市場。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 — 正規レイヤー(ブロンズ + シルバー + コントロール)
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_campoブロンズ(
/api/v1/bronze/): 不変の生行 +HASH_FILA+CORRIDA_ID+ 月。シルバー — 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ごとに1行、TOTAL_ORDENは1回のみ、CRCのみ合算可能)·/fact-recepcion。コントロール(
/api/v1/ctl-*): 実行、ソース月(zipハッシュ)、スキーマ、隔離、テストをゲートとして。catalogo_campo(
/api/v1/catalogo-campo/): ナビゲーション可能なデータ辞書(型、入力率、キー、トラップ、単位、結合ルール)。アトミック公開: ゲートテストが失敗した場合、ゴールドは公開されない(前のバージョンが残る)。
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