Skip to main content
Glama

MCP SECOP II Colombia

Servidor MCP (Model Context Protocol) e Inspector Web Suizo de Tonalidades Claras para SECOP II y Colombia Compra Eficiente, conectado en puente bidireccional con el proyecto SCRAPPING y generador de pipelines RAG.

License: MIT Python 3.12+ MCP SDK 2.x Managed with uv Ruff Archify Showcase


📖 Descripción general

MCP SECOP II Colombia (mcp-secop) es un servidor Model Context Protocol (MCP) de grado de producción que expone las capas técnicas del Sistema Electrónico para la Contratación Pública (SECOP II) y Colombia Compra Eficiente a cualquier agente LLM (Claude Desktop, Cursor, Google Antigravity, OpenCode), operando además en puente bidireccional en vivo con el proyecto SCRAPPING (http://127.0.0.1:8010 y workspace local ../SCRAPPING).

Incluye un Centro de Control Web en Minimalismo Suizo Institucional de tonalidades claras (http://127.0.0.1:8020) para invocar las 8 herramientas MCP desde el navegador, inspeccionar la taxonomía oficial de 6 dominios de SECOP II, lanzar el motor Spider sobre portales ASP.NET Vortal y exportar fragmentos vectoriales (.jsonl y Markdown contextual) listos para Qdrant, Chroma, pgvector, LangChain y LlamaIndex.

📘 La verdad técnica central —stack, decisiones, convenciones y flujo— vive en CONSTITUTION.md.

Related MCP server: mcp-colombia-secop

📑 Tabla de contenidos

⚡ Capacidades MCP (8 Tools, 4 Resources, 2 Prompts)

Código

Herramienta MCP (Tool)

Función Principal

TOOL-01

secop_search_processes

Búsqueda multidimensional SODA SoQL en p6dx-8zbt (Procesos) y jbjy-vk9h (Contratos) por palabra clave, entidad, NIT, departamento, modalidad, cuantía COP y código UNSPSC.

TOOL-02

secop_spider_crawl

Motor Spider asíncrono sobre colombiacompra.gov.co y community.secop.gov.co con detección de sesiones ASP.NET __VIEWSTATE y clasificación documental RAG.

TOOL-03

secop_inspect_opportunity

Inspector DOM profundo de expedientes OpportunityDetail (noticeUID=CO1.NTC.*), tablas contractuales y pliegos anexos.

TOOL-04

secop_generate_rag_chunks

Sintetizador de chunks Markdown con cabecera contextual institucional inyectada, hash SHA-256 y metadatos filtrables para bases vectoriales.

TOOL-05

secop_get_taxonomy_map

Catálogo estructurado de los 6 dominios y 11 enlaces principales del ecosistema SECOP II.

TOOL-06

secop_manage_rag_feeds

Listado y creación de feeds dinámicos (/api/v1/feeds/{slug}/rag y .jsonl) sincronizados con SCRAPPING.

TOOL-07

secop_bridge_status

Diagnóstico en tiempo real del puente HTTP (:8010) y detección de módulos en el workspace ../SCRAPPING.

TOOL-08

secop_analyze_procurement_budget

Analítica financiera en pesos colombianos (COP), distribución por modalidad/departamento y Top 5 de procesos de mayor cuantía.

Recursos MCP (Resources):

  • secop://taxonomy/catalog — Mapa completo de los 6 dominios de SECOP II.

  • secop://bridge/scrapping-status — Estado en vivo del puente con SCRAPPING.

  • secop://rag/default-feeds — Feeds RAG preconfigurados y snippets para LangChain/LlamaIndex.

  • secop://schemas/soql-dictionary — Diccionario técnico SoQL para Datos Abiertos Colombia.

Prompts MCP (Prompts):

  • auditoria_licitacion_secop2 — Auditoría integral legal, técnica y presupuestal de pliegos.

  • ingesta_rag_contratacion — Orquestación de ingesta vectorial hacia Qdrant/Chroma.

🔗 Puente Bidireccional con el proyecto SCRAPPING

El módulo scrapping_bridge.py conecta automáticamente este servidor MCP con el proyecto hermano SCRAPPING:

  1. Delegación HTTP en Vivo (ONLINE_HTTP_BRIDGE): Si el backend de SCRAPPING está activo en http://127.0.0.1:8010, las herramientas MCP delegan y sincronizan feeds directamente con él.

  2. Motor Híbrido Autónomo (LOCAL_WORKSPACE_HYBRID): Si SCRAPPING no está en ejecución por red, mcp-secop detecta el workspace local ../SCRAPPING y ejecuta de forma autónoma las consultas Socrata SODA SoQL, el Spider ASP.NET y el chunker RAG sin interrupción.

🛠️ Stack tecnológico

Categoría

Tecnología

Lenguaje

Python 3.12+

Gestor de paquetes

uv (uv_build src-layout)

Servidor MCP

mcp (MCPServer 2.x)

Pasarela Web & UI

FastAPI + Uvicorn + Minimalismo Suizo Institucional Claro (#F6F6F3 / #FFFFFF / #0D0E11 / #D9381E)

Scraping & SODA

httpx asíncrono + BeautifulSoup4 + Socrata SoQL

Calidad

Ruff (lint + format) · ty (typecheck) · pytest (7/7 pruebas AAA) · pre-commit

Arquitectura Viva

Archify (docs/arquitectura.html)

🚀 Primeros pasos y ejecución

git clone https://github.com/LUISBENJUMEARIVERA/MCP-SECOP.git
cd MCP-SECOP

# 1. Sincronizar entorno determinista con uv
uv sync

# 2. Verificar el puente con el proyecto SCRAPPING
uv run mcp-secop --check-bridge

# 3. Iniciar el Centro de Control Web Suizo (Tonalidades Claras) en http://127.0.0.1:8020
uv run mcp-secop --web

# 4. Ejecutar el servidor MCP en modo STDIO (para Claude Desktop / Cursor / Antigravity)
uv run mcp-secop --transport stdio

# 5. Ejecutar verificación completa (Ruff + ty + Pytest)
make check

🔌 Configuración en Clientes MCP

Agrega este bloque en tu archivo claude_desktop_config.json o configuración MCP de Cursor / Google Antigravity / OpenCode:

{
  "mcpServers": {
    "mcp-secop-colombia": {
      "command": "uv",
      "args": [
        "--directory",
        "C:/Users/luisa/OneDrive/Escritorio/SKILLS/mcp secop",
        "run",
        "mcp-secop"
      ],
      "env": {
        "SCRAPPING_API_URL": "http://127.0.0.1:8010"
      }
    }
  }
}

🗺️ Arquitectura del proyecto

Mapa de arquitectura interactivo autocontenido generado y validado con Archify en perfil showcase:

📂 Estructura del repositorio

mcp-secop/
├── src/mcp_secop/
│   ├── __init__.py          # Metadatos del paquete
│   ├── models.py            # Modelos Pydantic v2 (SODA, Spider, RAG, Bridge)
│   ├── taxonomy_spider.py   # Catálogo de 6 dominios SECOP II + Spider ASP.NET
│   ├── secop_engine.py      # Constructor SoQL, analítica COP y chunker RAG
│   ├── scrapping_bridge.py  # Puente bidireccional hacia el proyecto SCRAPPING (:8010)
│   ├── mcp_server.py        # Servidor MCP (8 Tools, 4 Resources, 2 Prompts)
│   ├── ui_template.py       # Interfaz Web en Minimalismo Suizo Claro
│   ├── web_app.py           # Pasarela HTTP FastAPI (:8020)
│   └── cli.py               # CLI unificada (mcp-secop)
├── tests/
│   └── test_mcp_secop.py    # Pruebas automatizadas pytest (patrón AAA)
├── docs/
│   ├── arquitectura.json    # Fuente tipada Archify
│   └── arquitectura.html    # Artefacto interactivo Archify
├── CONSTITUTION.md          # Fuente única de verdad del proyecto
├── AGENTS.md                # Contexto operativo para agentes IA
├── Makefile                 # Automatización de tareas
├── pyproject.toml           # Configuración uv, Ruff, pytest y scripts
└── uv.lock                  # Lockfile determinista versionado

📄 Licencia

Distribuido bajo la Licencia MIT.


Available Tools

8 tools
secop_analyze_procurement_budgetC

Ejecuta un análisis financiero y de concentración contractual en COP sobre procesos o contratos de SECOP II.

NameRequiredDescriptionDefault
limitNo
datasetNoprocesos
keywordNo
modalidadNo
departamentoNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral-disclosure burden. It mentions COP and SECOP II scope, but does not state whether the tool is read-only, what permissions or data freshness constraints apply, or how the analysis is computed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler, so it is efficiently concise. Its brevity reflects under-specification for a five-parameter analysis tool rather than wasteful wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained in the description. However, for a no-annotation analysis tool with five parameters and zero schema coverage, the description omits usage guidance and parameter semantics that an agent would need to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for five parameters. The description only indirectly maps to the dataset parameter by mentioning 'procesos o contratos'; it does not explain limit, keyword, modalidad, or departamento, so it fails to compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it executes a financial and contractual-concentration analysis in COP over SECOP II processes or contracts. It is clear what the tool does, but it does not explicitly distinguish itself from siblings such as secop_search_processes or secop_inspect_opportunity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus the sibling search or inspection tools. It implies that it performs analysis on processes or contracts, but offers no prerequisites, exclusions, or alternative-selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

secop_bridge_statusA

Diagnostica el estado en vivo del puente bidireccional entre MCP-SECOP y el proyecto SCRAPPING.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden: it does convey that this is a live status check ('estado en vivo') rather than a mutation, which is valuable. However it does not say whether it performs an outbound/network probe, whether it can be slow or fail, or what side effects (if any) a call has.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the core object of the diagnosis is stated immediately. It is slightly jargon-dense ('puente bidireccional', 'proyecto SCRAPPING') but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (0 params) and an output schema exists, so the description needn't explain return values. What is still missing is any notion of what the status result means or what a degraded bridge implies, but overall the description is sufficient to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No parameter guidance is needed or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb ('Diagnostica') bound to a specific resource ('estado en vivo del puente bidireccional entre MCP-SECOP y el proyecto SCRAPPING'), so an agent can tell this is a health/diagnostics probe. It does not explicitly differentiate itself from the listed siblings, though the resource is distinct enough that confusion is unlikely.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The diagnostic framing implies the usage context (checking connectivity between MCP-SECOP and the SCRAPPING project), but the description never states when to call it, when not to, or what alternative exists if a diagnostic fails. Usage must be inferred from the verb alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

secop_generate_rag_chunksC

Genera chunks semánticos en Markdown con cabecera contextual institucional y metadatos para RAG (Qdrant/Chroma).

NameRequiredDescriptionDefault
limitNo
estadoNo
datasetNoprocesos
entidadNo
keywordNosoftware
modalidadNo
cuantia_minNo
departamentoNo
chunk_size_charsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations the description carries the full burden. It usefully discloses the output form (Markdown chunks with institutional headers and metadata) and target systems (Qdrant/Chroma), but says nothing about whether chunks are persisted/embedded, side effects, permissions, or idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero waste. It is efficient, though the brevity contributes to under-specification given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with no annotations and 0% schema coverage, the description is too thin. The output schema means return values needn't be explained, but the filtering semantics and operational context an agent needs to call it correctly are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Nine parameters with 0% schema description coverage, yet the description mentions none of them. Filters like estado, dataset, entidad, keyword, modalidad, cuantia_min, departamento, and chunk_size_chars are left entirely to bare schema names with no added meaning or default behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Genera chunks semánticos en Markdown' with contextual headers and metadata for RAG stores. The purpose is clear and distinct from search/crawl/inspect siblings, though it never explicitly names an alternative to differentiate itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when/when-not guidance, no mention of prerequisites (e.g., whether source data must be ingested or the bridge healthy), and no explanation of how to choose filters versus the seven sibling tools. Usage is only implied by the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

secop_get_taxonomy_mapC

Devuelve el mapa taxonómico de 6 dominios y 11 enlaces principales de SECOP II y Colombia Compra Eficiente.

NameRequiredDescriptionDefault
category_codeNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and discloses almost nothing: it does not say whether this is a pure read of static reference data, whether results are cached, or whether any side effects occur. Only the output schema hints at the return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with the resource front-loaded and no filler. It is concise, though brevity costs it the parameter and usage detail it needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return values need not be explained. However, the meaning of the sole optional parameter and the intended usage context are both missing, which leaves real gaps for an agent deciding whether to filter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never mentions 'category_code', so an agent cannot tell what the optional filter does or what values it accepts (no enum). With one undocumented parameter, the description fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Devuelve') and resource ('mapa taxonómico') and even quantifies scope (6 dominios, 11 enlaces). It is clearly distinct from search/crawl siblings, though it never names those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to call this versus the other SECOP tools, and no mention of prerequisites or typical workflow position. The only implicit cue is that this is reference/discovery data rather than a search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

secop_inspect_opportunityB

Inspecciona en profundidad una URL OpportunityDetail de SECOP II (tablas DOM, __VIEWSTATE y pliegos anexos).

NameRequiredDescriptionDefault
process_urlNohttps://community.secop.gov.co/Public/Tendering/OpportunityDetail/Index?noticeUID=CO1.NTC.6184920

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full behavioral burden. It hints at the mechanism (DOM tables, __VIEWSTATE, attached documents), which suggests a live page fetch/parse that could be slow or fail on a changed page, but it says nothing about cost, auth, rate limits, failure modes, or what happens with a malformed URL. For a network-scraping tool with zero annotation coverage this is a real gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence with the resource and the extracted artifacts front-loaded; nothing is wasted. It is arguably too terse for a network-fetching tool rather than padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the description does list the extracted artifacts. What is missing for a 1-param scraping tool is operational context: prerequisites, expected URL form, and rough cost/latency expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single process_url parameter, so the description must compensate. It does identify the expected input as an 'OpportunityDetail' URL, which adds meaning beyond the bare parameter name, but it gives no format details or says whether other URL shapes are accepted or rejected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Inspecciona en profundidad') and a specific resource (an OpportunityDetail URL from SECOP II), and enumerates what it extracts (DOM tables, __VIEWSTATE, attached pliegos). This clearly reads as a deep-page scraper and is distinguishable from secop_search_processes, though the description never names a sibling to contrast with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'en profundidad' implies a deep-dive usage relative to lighter tools, but there is no explicit when-to-use, when-not-to-use, or named alternative among the seven siblings. The agent must infer that this is the follow-up step after finding a notice UID.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

secop_manage_rag_feedsC

Lista o crea feeds dinámicos de API RAG sincronizados con el proyecto SCRAPPING.

NameRequiredDescriptionDefault
nameNo
slugNo
actionNolist
keywordNo
modalidadNo
departamentoNo
chunk_size_charsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and discloses almost nothing: it does not say what creating a feed actually does, whether it is idempotent or destructive, what 'sincronizado' means operationally, or which parameters are required for creation versus listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single compact sentence with the verb front-loaded, so there is no padding, but the brevity comes at the cost of under-specification rather than economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, but for a zero-required-parameter, seven-parameter tool with two distinct actions and no annotations, the description is far too thin to let an agent invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All seven parameters have 0% schema description coverage and the description mentions none of them. The meaning of name, slug, keyword, modalidad, departamento, and chunk_size_chars, and how they differ between list and create, is entirely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names two verbs (list/create) and a resource (dynamic RAG API feeds), which gives a rough sense of the tool, but 'feeds dinámicos de API RAG' is left undefined and 'sincronizados con el proyecto SCRAPPING' is opaque jargon. It does not differentiate itself from the conceptually adjacent sibling secop_generate_rag_chunks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to list versus when to create, no prerequisites, and no mention of alternatives among the seven sibling tools. The agent must infer the intended action from parameter defaults alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

secop_search_processesC

Busca procesos de contratación o contratos electrónicos en SECOP II (SODA SoQL + Puente SCRAPPING).

NameRequiredDescriptionDefault
limitNo
ciudadNo
estadoNo
datasetNoprocesos
entidadNo
keywordNo
modalidadNo
cuantia_maxNo
cuantia_minNo
nit_entidadNo
unspsc_codeNo
departamentoNo
spider_enrich_top_nNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden and fails it: nothing about whether scraping is a fallback or always-on, how costly spider_enrich_top_n is, pagination/limits, rate limits, or auth. The mentions of SoQL and 'Puente SCRAPPING' gesture at backend behavior but remain opaque jargon rather than actionable context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. It is efficient, though its brevity reflects under-specification rather than disciplined economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool with zero annotation coverage, one sentence is nowhere near sufficient. Even granting that an output schema exists and return values needn't be described, the agent gets no guidance on filter interactions, the dataset switch, or what spider enrichment does.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 13 parameters, and the description only implicitly touches one of them by naming the two datasets ('procesos o contratos') that map to the dataset enum. Filters such as ciudad, estado, entidad, nit_entidad, unspsc_code, cuantia_min/max and especially spider_enrich_top_n get no explanation of format (e.g. NIT without check digit) or effect.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (busca) plus a concrete resource (procesos de contratación o contratos electrónicos) and the platform (SECOP II), so an agent knows the domain. It does not distinguish this from siblings like secop_spider_crawl or secop_inspect_opportunity, which plausibly also retrieve procurement records, leaving overlap unresolved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this search versus spider_crawl or inspect_opportunity, no prerequisites, and no exclusions. The parenthetical '(SODA SoQL + Puente SCRAPPING)' hints at two retrieval paths but doesn't tell the agent which conditions trigger which.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

secop_spider_crawlC

Ejecuta el Spider web asíncrono sobre SECOP II / Colombia Compra Eficiente clasificando enlaces y __VIEWSTATE.

NameRequiredDescriptionDefault
seed_urlNohttps://www.colombiacompra.gov.co/secop-ii
max_linksNo
category_filterNo
follow_internal_depthNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing beyond 'asíncrono'. It does not say whether the crawl hits the live network, how long it may run, whether it needs credentials, or if it is rate-limited — all critical for a web-crawling operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, which is efficient. The brevity is under-specification rather than verbosity, but structurally it is clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. But for a 4-parameter tool with no annotations and 0% schema coverage, the description leaves too much unexplained — crawl behavior, network implications, and parameter meaning are all missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% with 4 parameters (seed_url, max_links, category_filter, follow_internal_depth), none of which are explained in the description. 'clasificando enlaces' faintly hints at link handling and max_links, but the seed URL, depth control, and filter semantics are left undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a verb ('Ejecuta') and resource ('Spider web asíncrono') scoped to SECOP II / Colombia Compra Eficiente, which gives a rough sense of the action. However, 'clasificando enlaces y __VIEWSTATE' is internal jargon that will not mean much to an agent, and nothing distinguishes this crawling tool from siblings like secop_search_processes or secop_inspect_opportunity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no indication of when an agent should crawl versus use the more targeted siblings secop_search_processes or secop_inspect_opportunity. No prerequisites, no exclusions, no alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv1.0.0
    • First observedsecop_analyze_procurement_budget
    • First observedsecop_bridge_status
    • First observedsecop_generate_rag_chunks
    • First observedsecop_get_taxonomy_map
    • First observedsecop_inspect_opportunity
    • First observedsecop_manage_rag_feeds
    • First observedsecop_search_processes
    • First observedsecop_spider_crawl

TDQS

B3.1/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have clearly distinct roles: search, crawl, inspect, RAG chunking, taxonomy, bridge diagnostics, feed management, and budget analysis. Some potential overlap exists between search, spider crawl, and opportunity inspection since all involve retrieving SECOP II data, but descriptions make the intended granularity reasonably clear.

Naming Consistency4/5

All tools use the secop_ prefix and snake_case, which is highly predictable. Minor deviations appear in action-style consistency, especially secop_bridge_status and secop_spider_crawl, where the verb_noun pattern is less clean than in tools like secop_search_processes or secop_generate_rag_chunks.

Tool Count5/5

Eight tools is well-scoped for an integration server covering SECOP II search, crawling, inspection, RAG preparation, taxonomy, bridge diagnostics, feed management, and budget analysis. Each tool appears to serve a distinct function rather than bloating the surface.

Completeness4/5

The surface covers the main procurement data workflows: discovery, detailed inspection, crawling, RAG chunk generation, taxonomy mapping, bridge health, feed management, and financial analysis. Minor lifecycle gaps exist, such as no update/delete for RAG feeds and no obvious dedicated contract-by-ID retrieval tool, but core workflows are represented.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables access to Chile's government procurement data (Mercado Público / ChileCompra) via MCP, allowing AI agents to query public procurement information.
    269 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to query Ecuador government procurement (SERCOP/Compras Públicas) data without API keys, via natural language or direct tools.
    273 npm
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI agents to query Paraguay's public procurement data via the official DNCP API v3 (OCDS), including tender processes, awards, contracts, suppliers, contracting entities, product catalog, and visualizations.
    17
    MIT