Skip to main content
Glama
juandavidsernav

secop-mcp-server

SECOP MCP Server

Servidor MCP (Model Context Protocol) para consultar la contratación pública de Colombia a través de SECOP I y SECOP II.

Los datos se obtienen en tiempo real desde datos.gov.co (API SODA de Socrata) y son 100% públicos. No se almacena ningún dato localmente.

¿Para qué sirve?

Este servidor permite que modelos de lenguaje como Claude consulten directamente los datos de contratación pública del Estado colombiano. Esto facilita:

  • Control político: Investigar contratos de entidades públicas y funcionarios.

  • Transparencia: Verificar contratistas, montos y modalidades de contratación.

  • Periodismo de datos: Cruzar información de proveedores y entidades.

  • Veeduría ciudadana: Cualquier persona puede consultar cómo se gastan los recursos públicos.

Related MCP server: peru-gob-mcp

Datasets disponibles

Dataset

Descripción

Fuente

SECOP I - Procesos

Datos históricos de procesos de compra pública

datos.gov.co

SECOP II - Procesos

Procesos de contratación transaccionales

datos.gov.co

SECOP II - Contratos

Contratos electrónicos con valores pagados/facturados

datos.gov.co

SECOP II - Proveedores

Proveedores registrados en la plataforma

datos.gov.co

Herramientas (Tools)

Tool

Descripción

buscar_secop1

Buscar procesos en SECOP I por entidad, contratista, objeto, departamento, rango de fechas, etc.

buscar_procesos_secop2

Buscar procesos de contratación en SECOP II con filtros temporales

buscar_contratos_secop2

Buscar contratos electrónicos en SECOP II con filtros temporales

buscar_proveedores

Buscar proveedores registrados en SECOP II

buscar_por_persona

Buscar en TODOS los datasets por cédula/NIT o nombre de una persona

resumen_contratacion

Vista condensada de contratos (campos clave: entidad, proveedor, valor, estado, fecha)

agregaciones_contratacion

Totales agrupados por proveedor, entidad, departamento o modalidad

consulta_libre

Consulta SoQL avanzada sobre cualquier dataset

listar_datasets

Ver todos los datasets y sus campos disponibles

Instalación

Requisitos

  • Python 3.11+

  • uv (recomendado) o pip

Opción 1: Desde PyPI (recomendada)

# Con uv (más rápido)
uvx secop-mcp-server

# Con pip
pip install secop-mcp-server

Opción 2: Desde GitHub

uvx --from git+https://github.com/juandavidsernav/secop-mcp-server secop-mcp

Opción 3: Desde el código fuente

git clone https://github.com/juandavidsernav/secop-mcp-server.git
cd secop-mcp-server
uv sync

Configuración

Claude Code

# Instalación rápida desde PyPI
claude mcp add secop-colombia -- uvx secop-mcp-server

# O desde código fuente
claude mcp add secop-colombia -- uv run --directory /ruta/al/secop-mcp-server secop-mcp

Claude Desktop

Edita el archivo de configuración:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "secop-colombia": {
      "command": "uvx",
      "args": ["secop-mcp-server"]
    }
  }
}

App Token (opcional pero recomendado)

Sin token funciona, pero con rate-limiting agresivo (~60 peticiones/hora). Obtén uno gratis:

  1. Regístrate en datos.gov.co

  2. Ve a tu perfil > Developer Settings

  3. Crea un nuevo App Token

Configúralo como variable de entorno:

{
  "mcpServers": {
    "secop-colombia": {
      "command": "uvx",
      "args": ["secop-mcp-server"],
      "env": {
        "SOCRATA_APP_TOKEN": "tu-token-aqui"
      }
    }
  }
}

Ejemplos de uso

Una vez configurado, puedes pedirle a Claude cosas como:

  • "Busca los contratos de la Alcaldía de Bogotá por más de 1000 millones"

  • "¿Qué contratos tiene la persona con cédula 12345678?"

  • "Muestra los procesos de licitación pública en Antioquia"

  • "¿Cuáles son los contratos más grandes de SECOP II este año?"

  • "Busca todos los contratos asociados a la empresa XYZ"

  • "¿Cuánto ha contratado el municipio de Medellín en prestación de servicios?"

  • "Dame un resumen de los contratos de EPM en 2024"

  • "¿Cuáles son los proveedores con más contratos en Antioquia?"

  • "Agrupa por modalidad los contratos de la Alcaldía de Medellín"

  • "Muestra los contratos firmados entre enero y marzo de 2025 en el Valle del Cauca"

Estructura del proyecto

secop-mcp-server/
├── secop_mcp/
│   ├── __init__.py    # Documentación del paquete
│   ├── server.py      # Servidor MCP y definición de herramientas (tools)
│   ├── client.py      # Cliente HTTP para la API SODA de Socrata
│   └── datasets.py    # Catálogo de datasets SECOP y sus metadatos
├── pyproject.toml     # Configuración del paquete Python
├── LICENSE            # Licencia MIT
└── README.md          # Este archivo

¿Cómo funciona?

Claude (LLM) <--MCP/stdio--> secop-mcp-server <--HTTP/SoQL--> datos.gov.co (API SODA)
  1. Claude invoca una herramienta MCP (ej: buscar_contratos_secop2).

  2. El servidor construye una consulta SoQL con los filtros proporcionados.

  3. Se ejecuta la petición HTTP a la API de datos.gov.co.

  4. Los resultados se formatean en texto legible y se retornan a Claude.

  5. Claude analiza los datos y responde al usuario.

Todo corre localmente en tu máquina. No hay servidor intermedio ni se almacenan datos.

Contribuir

Las contribuciones son bienvenidas:

  1. Fork del repositorio

  2. Crea una rama para tu feature (git checkout -b feature/nueva-funcionalidad)

  3. Commit de tus cambios (git commit -m 'Agrega nueva funcionalidad')

  4. Push a la rama (git push origin feature/nueva-funcionalidad)

  5. Abre un Pull Request

Ideas para contribuir

  • Agregar más datasets de datos.gov.co

  • Traducciones del README

  • Alertas o monitoreo de nuevos contratos

  • Exportación a CSV/Excel

Licencia

MIT - Libre para uso personal, comercial, modificación y redistribución.

Available Tools

10 tools
agregaciones_contratacionA

Agrega contratos de SECOP II por proveedor, entidad, departamento o modalidad.

Retorna totales (número de contratos, valor total, valor pagado) agrupados por el campo seleccionado. Útil para detectar concentración de contratos, comparar entidades o analizar modalidades de contratación.

ParametersJSON Schema
NameRequiredDescriptionDefault
agrupar_porYes
entidadNo
proveedorNo
departamentoNo
fecha_desdeNo
fecha_hastaNo
limiteNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavior. It describes the return (totals of contracts, value, paid value), which is useful. However, it does not mention whether the operation is read-only, any required permissions, rate limits, or side effects. Given the aggregation nature, it is likely safe, but transparency is moderate.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action and output, and every sentence adds value. No unnecessary words.

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?

Given 7 parameters, 0% schema coverage, and no annotations, the description covers the main purpose and output but leaves most filter parameters unexplained. The existence of an output schema helps, but the description still lacks details on valid values for 'agrupar_por' (no enum) and how filters interact. More completeness would be beneficial.

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 coverage is 0%, so the description must compensate. It explains the 'agrupar_por' parameter (grouping field) by listing possible values (proveedor, entidad, departamento, modalidad), but it does not explain the other 6 filter parameters (entidad, proveedor, departamento, fechas, limite). Without descriptions, the agent may not know how to use filters correctly.

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

Purpose5/5

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

The description clearly states it aggregates SECOP II contracts by provider, entity, department, or modality, and returns totals. It also provides concrete use cases (concentration detection, entity comparison, modality analysis), distinguishing it from sibling tools that are likely search-oriented.

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

Usage Guidelines4/5

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

The description implies use for analytical tasks like detecting concentration and comparing entities, but it does not explicitly state when not to use or name alternative tools. The context is clear but lacks exclusion criteria.

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

buscar_contratos_secop2B

Busca contratos electrónicos en SECOP II (plataforma vigente).

Los contratos electrónicos contienen información detallada incluyendo valores pagados, facturados y pendientes de pago. Es el dataset más completo para analizar la ejecución financiera de la contratación.

Busca aquí PRIMERO antes de buscar en SECOP I. Si conoces el NIT del proveedor, usa nit_proveedor para búsqueda exacta.

ParametersJSON Schema
NameRequiredDescriptionDefault
entidadNo
proveedorNo
nit_proveedorNo
objetoNo
departamentoNo
modalidadNo
estadoNo
valor_minimoNo
fecha_desdeNo
fecha_hastaNo
busqueda_textoNo
limiteNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations provided, so description must convey behavioral traits. It mentions the tool returns detailed financial data (values paid, billed, pending) and that it is the most complete dataset. However, it does not disclose safety (likely read-only), rate limits, authentication needs, or pagination behavior beyond what is in the schema.

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

Conciseness5/5

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

Four sentences with no wasted words. Front-loaded with the core purpose, then provides key context about data richness and priority. Efficient and well-structured.

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?

Given 13 parameters with no schema descriptions and no annotations, the description is insufficient. It lacks details on parameter usage, date formats, value constraints, and output interpretation, even though an output schema exists.

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%, so description is critical. Only 'nit_proveedor' is explained as offering exact search. Other parameters like 'entidad', 'proveedor', 'fecha_desde' are not described, leaving their meaning and format unclear.

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 clearly states it searches for electronic contracts in SECOP II and distinguishes from SECOP I by advising to try this first. However, it does not explicitly differentiate from sibling tools like 'buscar_procesos_secop2' which may have overlapping scope.

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

Usage Guidelines4/5

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

Provides explicit guidance to use this tool before SECOP I and suggests using 'nit_proveedor' for exact searches. It mentions this dataset is most complete for financial execution, but does not cover when to use other related tools.

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

buscar_por_personaA

Busca en TODOS los datasets de SECOP por número de documento o nombre de una persona/empresa.

Útil para encontrar todos los contratos, procesos y registros asociados a un contratista o proveedor específico. Busca simultáneamente en SECOP II Procesos, SECOP II Contratos, SECOP II Proveedores y SECOP I.

IMPORTANTE: Si tienes el NIT o cédula, úsalo en el parámetro 'documento'. Es mucho más confiable que buscar por nombre.

Esta es la herramienta más completa para investigar el historial de contratación de una persona natural o jurídica con el Estado colombiano.

ParametersJSON Schema
NameRequiredDescriptionDefault
documentoNo
nombreNo
limiteNo
detalleNoauto

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the tool searches simultaneously across multiple datasets and prioritizes document numbers, but lacks details on pagination, rate limits, aggregation behavior, or result format. This is adequate but not rich.

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

Conciseness5/5

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

The description is concise and well-structured: purpose first, then usage context, then a tip. Every sentence adds value with no fluff.

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?

Given the complexity (4 params, no annotations) and presence of output schema, the description covers the broad search purpose well but lacks parameter details for 'limite' and 'detalle', and does not mention pagination or result handling. Output schema may cover return values, but parameter gaps reduce completeness.

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 coverage is 0%, so description must compensate. It explains 'documento' and 'nombre' search fields, but fails to describe 'limite' (limit) and 'detalle' (detail level) parameters. Missing semantics for half the parameters leaves agents underinformed.

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

Purpose5/5

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

The description clearly states the tool searches across all SECOP datasets by document number or name, explicitly listing the datasets covered (SECOP II Procesos, SECOP II Contratos, SECOP II Proveedores, SECOP I). It distinguishes from siblings by being the most comprehensive tool for investigating contracting history, while siblings are more specific.

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

Usage Guidelines4/5

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

The description advises using 'documento' over 'nombre' for reliability, and indicates the tool is for finding all contracts/processes/records for a specific contractor. It provides clear use context but does not explicitly state when to use sibling tools or when not to use this tool.

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

buscar_procesos_secop2A

Busca procesos de contratación en SECOP II (plataforma vigente).

SECOP II es la plataforma VIGENTE de contratación pública electrónica. Busca aquí PRIMERO antes de buscar en SECOP I.

Los procesos incluyen información sobre la entidad contratante, el proveedor seleccionado, valores y estado del procedimiento.

Tip: El campo nombre_procedimiento busca en el título del proceso, que a menudo contiene el nombre del proyecto o descripción corta.

ParametersJSON Schema
NameRequiredDescriptionDefault
entidadNo
proveedorNo
nit_proveedorNo
objetoNo
nombre_procedimientoNo
departamentoNo
modalidadNo
faseNo
estadoNo
valor_minimoNo
fecha_desdeNo
fecha_hastaNo
busqueda_textoNo
limiteNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Given no annotations, the description carries full burden but only states that the tool searches and includes fields like entity, provider, values, and status. It does not disclose pagination, auth needs, rate limits, or whether it is read-only. Adequate but not detailed.

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 front-loaded with purpose and uses three short paragraphs. It is moderately concise with no fluff, but could be slightly tighter by removing redundant platform emphasis.

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?

Given the complexity (15 parameters, no schema descriptions, no annotations), the description is insufficient. It lacks parameter details, output format (despite output schema existing), and comparisons with sibling tools like buscar_contratos_secop2. Significant gaps remain.

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?

With 0% schema description coverage and 15 parameters, the description must compensate. It only explains the nombre_procedimiento parameter and vaguely references entity, provider, values, and status. Most parameters remain unexplained, leaving the agent to infer from names.

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

Purpose5/5

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

The description clearly states the tool searches for contracting processes in SECOP II, specifying the resource (processes) and the platform. It distinguishes itself from SECOP I by instructing to search here first, and from siblings like buscar_secop1.

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

Usage Guidelines4/5

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

The description provides clear context: search here first before SECOP I, and includes a tip about the nombre_procedimiento field. However, it does not explicitly state when to use alternatives like buscar_contratos_secop2 or when not to use this tool.

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

buscar_proveedoresC

Busca proveedores registrados en SECOP II.

Permite identificar proveedores por nombre, NIT o ubicación geográfica. Útil para verificar el registro de un proveedor en la plataforma.

ParametersJSON Schema
NameRequiredDescriptionDefault
nombreNo
nitNo
departamentoNo
ciudadNo
limiteNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It does not state that the operation is read-only, nor does it explain pagination behavior (limite, offset) or any required authentication. The description only implies searching without deeper behavioral 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?

The description is short (three sentences) and front-loaded with the main action. Each sentence adds information, though the second sentence ('Permite identificar...') is somewhat redundant with the first. Still, it remains concise and to the point.

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?

Given the tool has 6 parameters, no schema descriptions, and no annotations, the description is insufficient. It does not explain pagination, combining filters, or the output (though output schema exists, reducing some burden). The description leaves significant gaps for effective use.

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%, so the description must compensate. It only explains nombre, nit, and geographic location (departamento and ciudad loosely), but omits the pagination parameters 'limite' and 'offset'. Users must infer their purpose from names alone.

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 clearly states the tool searches for suppliers (proveedores) in SECOP II and lists specific search criteria (name, NIT, location). It differentiates from sibling tools that search contracts or processes, though it could be more explicit about the distinct resource type.

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 description suggests use for verifying supplier registration ('Útil para verificar el registro de un proveedor'), but provides no guidance on when not to use it or how it compares to alternatives like buscar_por_persona or buscar_contratos_secop2.

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

buscar_secop1A

Busca procesos de compra pública en SECOP I (datos históricos).

IMPORTANTE: SECOP I es el sistema ANTERIOR, ya NO se usa. Busca primero en SECOP II (buscar_procesos_secop2 o buscar_contratos_secop2). Solo usa esta herramienta si no encontraste resultados en SECOP II o si el contrato es anterior a ~2020.

Todos los filtros son opcionales y combinables entre sí (operador AND).

ParametersJSON Schema
NameRequiredDescriptionDefault
entidadNo
contratistaNo
identificacion_contratistaNo
numero_procesoNo
numero_contratoNo
objetoNo
departamentoNo
modalidadNo
estadoNo
cuantia_minimaNo
fecha_desdeNo
fecha_hastaNo
busqueda_textoNo
limiteNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses that data is historical and system no longer used, and that filters are AND combinable. However, it does not mention any side effects, rate limits, or data freshness. For a search tool, this is adequate but not comprehensive.

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

Conciseness5/5

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

The description is short, front-loaded with purpose, includes critical usage guidance, and has no unnecessary words. Every sentence adds value.

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?

With 15 parameters, no schema descriptions, and no annotations, the description is insufficient to fully understand parameter semantics (e.g., valid values for 'modalidad', meaning of 'estado'). The existence of output schema does not cover parameter meaning. The description missing details for many parameters.

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 has 15 parameters with 0% description coverage. The description only states 'All filters are optional and combinable (AND)', which is a general note but does not explain each parameter's meaning. Given the low coverage, the description should compensate but fails to do so.

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

Purpose5/5

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

The description clearly states the tool searches public procurement processes in SECOP I (historical data), and distinguishes it from siblings by explicitly mentioning it is the older system and advising to use SECOP II first.

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool (only if no results in SECOP II or contract is before ~2020) and directs to use SECOP II tools (siblings) first.

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

consulta_libreA

Consulta libre con SoQL sobre cualquier dataset SECOP.

Para consultas avanzadas que las otras herramientas no cubren. Permite escribir cláusulas SoQL directamente, similar a SQL.

Documentación SoQL: https://dev.socrata.com/docs/queries/

Ejemplos de cláusulas $where: - "valor_del_contrato > 1000000000" - "departamento = 'Antioquia' AND estado_contrato = 'En ejecución'" - "fecha_de_firma > '2024-01-01'"

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYes
whereNo
selectNo
orderNo
busqueda_textoNo
limiteNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It describes the tool as allowing direct SoQL queries similar to SQL, and provides examples. However, it does not mention whether the tool is read-only, whether it has side effects, authentication needs, or error handling. The examples only cover one parameter ($where). While it gives a basic understanding, more transparency about safety and limitations would be beneficial.

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 relatively concise, fitting the main purpose in two sentences and then providing examples. It starts with the primary purpose and then adds detail. Could be slightly more structured to separate explanation from examples, but overall efficient and not verbose.

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?

Given 7 parameters, 0% schema description coverage, no annotations, and an output schema that is present but not described, the description is incomplete. It does not explain return values or pagination (though 'limite' and 'offset' suggest it), nor does it cover all parameters. The link to documentation helps but the description itself lacks full context. For a complex tool, more completeness is needed.

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%, meaning the input schema provides no parameter descriptions. The description only adds context for the 'where' parameter via examples. Other parameters like 'dataset', 'select', 'order', 'busqueda_texto', 'limite', and 'offset' are not explained. The description should have provided meaning for all parameters to compensate for the lack of schema documentation. Without that, the agent may misuse parameters.

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

Purpose5/5

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

The description clearly states 'Consulta libre con SoQL sobre cualquier dataset SECOP,' indicating it's a free-form query tool. It specifies that it handles advanced queries not covered by other tools, and explains it allows writing SoQL clauses directly. This distinguishes it from sibling tools that likely have more constrained queries.

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

Usage Guidelines5/5

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

The description says 'Para consultas avanzadas que las otras herramientas no cubren,' providing explicit guidance on when to use this tool. It implies that for simpler or common queries, other tools should be used. It also includes a link to SoQL documentation for learning, and gives concrete examples of $where clauses, aiding correct usage.

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

contar_personas_contratadasB

Cuenta personas contratadas y valores por año para una entidad.

Ideal para KPIs de contratación. Retorna por cada año:

  • Personas/proveedores únicos contratados

  • Total de contratos

  • Valor total contratado

  • Valor pagado

Distingue entre personas naturales (Cédula de Ciudadanía, Cédula de Extranjería) y personas jurídicas (NIT).

ParametersJSON Schema
NameRequiredDescriptionDefault
entidadYes
aniosYes
solo_personas_naturalesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/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. It discloses the behavior of distinguishing person types but lacks information on safety (e.g., read-only, destructive), authentication needs, or rate limits. For a tool with zero annotations, this is insufficient.

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 concise and structured with bullet points for return values. It is front-loaded with the tool's purpose. One minor issue: the first sentence is somewhat passive ('Cuenta personas contratadas y valores por año'), but overall efficient.

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 tool has 3 parameters and no annotations but has an output schema. The description explains the output well but lacks full parameter descriptions and usage guidance. For a relatively simple aggregation tool, it is adequate but not complete.

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%. The description mentions 'entidad' indirectly and 'por año' for 'anios', but does not explain the 'solo_personas_naturales' boolean parameter explicitly, though it relates to the natural vs legal person distinction. Given low coverage, the description should provide more detail.

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

Purpose5/5

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

The description clearly states the tool counts hired people and values per year for an entity, listing specific return fields (unique persons/providers, total contracts, total contracted value, total paid value). It also distinguishes between natural and legal persons, which differentiates it from sibling tools like 'agregaciones_contratacion'.

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 description mentions 'Ideal para KPIs de contratación', implying a usage context, but does not explicitly state when to use this tool versus alternatives or provide any when-not guidance. No sibling tool names are referenced.

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

listar_datasetsA

Lista todos los datasets SECOP disponibles con sus campos de búsqueda.

Útil para conocer qué datasets se pueden consultar y qué campos están disponibles para filtrar en cada uno. Esta información es necesaria para usar la herramienta consulta_libre().

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, and the description only mentions listing datasets and fields. It does not disclose any behavioral traits like pagination, limits, or side effects, but the tool is straightforward with no parameters and an output schema.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main action, and each sentence adds value. It is concise and well-structured.

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

Completeness5/5

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

Given no parameters and an output schema, the description fully covers the tool's purpose and its relationship to consulta_libre. It is complete for a listing tool.

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?

No parameters exist, and the schema coverage is 100%. The description does not need to add parameter info, so baseline score of 4 is appropriate.

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

Purpose5/5

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

The description clearly states it lists all available SECOP datasets and their search fields. It uses a specific verb+resource and explains the tool's utility, making it easy for an agent to understand its purpose.

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

Usage Guidelines4/5

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

The description provides context on when to use this tool, noting it is necessary for using consulta_libre. While it doesn't explicitly exclude alternatives, the usage guidance is clear.

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

resumen_contratacionA

Resumen condensado de contratos con solo los campos clave.

Retorna una vista simplificada con: entidad, proveedor, objeto (truncado), valor, estado y fecha. Ideal para explorar resultados antes de pedir el detalle completo con buscar_contratos_secop2.

ParametersJSON Schema
NameRequiredDescriptionDefault
entidadNo
proveedorNo
nit_proveedorNo
departamentoNo
objetoNo
fecha_desdeNo
fecha_hastaNo
limiteNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses a simplified view with truncated object, but does not explain search behavior, pagination, or if parameters are exact/fuzzy matches.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, no fluff. Every sentence adds value.

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?

Provides overview purpose and output structure, but lacks guidance on parameter usage (dates, matching) despite 8 parameters with 0% schema coverage. Adequate for a summary tool but incomplete for effective invocation.

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%, yet the description does not explain input parameters. It lists output fields but not input semantics, failing to compensate for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states it provides a condensed summary of contracts with key fields, and explicitly differentiates from sibling 'buscar_contratos_secop2' which gives full detail.

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

Usage Guidelines5/5

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

The description explicitly says 'Ideal para explorar resultados antes de pedir el detalle completo con buscar_contratos_secop2', providing clear usage context and a direct alternative.

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. 10 tool updatesv0.5.0
    • First observedagregaciones_contratacion
    • First observedbuscar_contratos_secop2
    • First observedbuscar_por_persona
    • First observedbuscar_procesos_secop2
    • First observedbuscar_proveedores
    • First observedbuscar_secop1
    • First observedconsulta_libre
    • First observedcontar_personas_contratadas
    • First observedlistar_datasets
    • First observedresumen_contratacion

TDQS

A3.9/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: searching contracts, processes, providers, people, aggregating, free querying, listing datasets, summarizing, and counting. Descriptions explicitly differentiate them, and no two tools overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in Spanish (e.g., buscar_contratos_secop2, listar_datasets, contar_personas_contratadas). The naming is uniform with lowercase and underscores, making it predictable for agents.

Tool Count5/5

10 tools is well-scoped for the domain of Colombian public procurement. Each tool addresses a specific need without being excessive, covering search, aggregation, listing, free query, and summary.

Completeness5/5

The tool set covers the full range of typical procurement data exploration: searching both current and historical platforms, by various criteria, aggregating, summarizing, and counting. The free query tool ensures flexibility for advanced use cases.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    An MCP server for Brazilian company and public procurement data, enabling CNPJ lookup, company search, tender resolution, and more via paid USDC-based API calls.
    15
    63 npm
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Peruvian government data, enabling search and anomaly detection in public procurement (OSCE) and legislative tracking (Congress), plus semantic search over both domains.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server that gives AI agents structured access to Public Procurement Registry data, allowing natural language queries for planned procurements, open tenders, contract awards, buyers, and winning suppliers.
    -