Publicado el
- 13 min read
Comprender el lenguaje de consultas MCP: una guía técnica en profundidad
Comprender el Lenguaje de Consultas MCP: Guía técnica profunda
Los repositorios MCP solo son tan potentes como las preguntas que puedas hacerles. El Lenguaje de Consultas MCP es la forma de formular preguntas precisas y estructuradas en lugar de deseos vagos.
1. ¿Por qué un lenguaje de consultas para MCP?
Los prompts tradicionales mezclan instrucciones, solicitudes de datos y restricciones en un mismo bloque de texto. Eso funciona hasta que:
- Necesitas un comportamiento reproducible y auditable.
- Quieres orquestar múltiples herramientas a través de repositorios MCP.
- Te importa el rendimiento y el coste previsibles.
- Necesitas integrar capacidades de IA en sistemas de producción en lugar de chats ad hoc.
El Lenguaje de Consultas MCP (MQL, por abreviar en este artículo) se sitúa entre el lenguaje natural y las APIs de bajo nivel. Te permite:
- Dirigirte a herramientas y repositorios MCP específicos.
- Describir entradas, filtros, joins y proyecciones de forma precisa.
- Controlar cuánto contexto puede recuperar el modelo.
- Codificar restricciones que pueden validarse antes de la ejecución.
Piénsalo como SQL para tu entorno MCP, pero adaptado a herramientas, modelos y contenido semiestructurado en lugar de solo tablas.
2. Objetivos de diseño principales del Lenguaje de Consultas MCP
Aunque las implementaciones exactas pueden variar entre repositorios MCP, el diseño subyacente del Lenguaje de Consultas MCP suele seguir algunos objetivos concretos:
-
Determinismo frente a sensaciones
Misma consulta, mismo entorno, mismo conjunto de resultados. El lenguaje natural está permitido, pero se encierra en un envoltorio más rígido. -
Enfocado en herramientas, no en modelos
En lugar de “modelo, decide qué hacer”, expresas qué herramientas (y servidores MCP) llamar y cómo encadenar sus entradas y salidas. -
Operaciones composables
Las consultas pueden encadenar varios pasos: search → filter → transform → summarize. El lenguaje ofrece una gramática de composición para esto. -
Validación estática
Las consultas pueden comprobarse frente a los esquemas de las herramientas MCP (tipos, campos requeridos, enums) antes de su ejecución para detectar errores pronto. -
Transparencia de ejecución
La estructura de una consulta hace también las veces de plan de ejecución. Puedes registrarla, comparar versiones y enviarla en configuraciones versionadas.
3. El objeto de consulta MCP: forma general
Conceptualmente, una consulta MCP es un objeto estructurado (JSON, YAML o un AST equivalente). Un esquema conceptual mínimo se ve así:
{
"version": "1.0",
"targets": [
{
"server": "docs-index",
"tool": "search",
"params": {
"query": "vector databases",
"limit": 10
},
"alias": "doc_results"
}
],
"pipeline": [
{
"op": "filter",
"input": "doc_results",
"where": {
"field": "score",
"op": ">=",
"value": 0.75
},
"alias": "high_conf_docs"
}
],
"output": {
"format": "json",
"source": "high_conf_docs"
}
}
No todos los entornos MCP usan exactamente esta forma, pero la mayoría compartirá varios elementos:
version– versión del lenguaje; clave para compatibilidad.targets– qué servidor MCP + herramienta invocar y con qué parámetros.pipeline– pasos de post‑procesado, a menudo independientes de la herramienta específica.output– qué devolver, en qué formato y a veces con qué nivel de detalle.
El Lenguaje de Consultas MCP es consciente de las herramientas: no se limita a disparar peticiones HTTP. Conoce el esquema de la herramienta y puede mantenerte dentro de parámetros válidos.
4. Direccionando repositorios y herramientas MCP
Una de las tareas centrales de MQL es especificar qué recurso MCP quieres.
4.1 Dirección de repositorio y servidor
Patrones comunes para direccionar un servidor MCP:
-
Por nombre lógico:
server: "search-index" -
Por identificador tipo URI:
server: "mcp://infra/docs" -
Por nombre de entorno con scope (p. ej., dev/prod):
server: "prod:search-index"
Dentro del lenguaje de consulta, esto es normalmente una cadena simple, pero las herramientas que lo rodean suelen añadir:
- resolución de namespaces (p. ej., por defecto al proyecto actual)
- comprobaciones de políticas (¿está permitido este servidor en este entorno?)
- comportamiento de fallback (preferir instancia MCP local y luego remota)
4.2 Selección y descubrimiento de herramientas
Cada servidor MCP expone un conjunto de herramientas y esquemas correspondientes. MQL opera contra ese registro. Atributos típicos:
tool: nombre lógico de operación, comosearch,get_file,execute_query.params: un objeto que coincide con el esquema de entrada de la herramienta.
Los desarrolladores suelen confiar en una caché de esquemas MCP o un mecanismo de descubrimiento para que el editor pueda:
- ofrecer autocompletado para herramientas y parámetros;
- validar tipos de parámetros y campos requeridos;
- mostrar documentación en línea.
Ejemplo:
{
"targets": [
{
"server": "code-repo",
"tool": "get_file",
"params": {
"path": "src/core/mcp_client.ts"
},
"alias": "core_client_file"
}
]
}
Los alias (alias) permiten que pasos posteriores hagan referencia explícita a resultados previos, soportando flujos de trabajo multietapa.
5. Parámetros, tipos y restricciones
El Lenguaje de Consultas MCP se define frente a esquemas fuertemente tipados para cada herramienta. Ahí es donde difiere de los prompts libres.
5.1 Objetos de parámetros
Cada objeto params se comprueba por tipos frente al esquema de su herramienta. Por ejemplo:
{
"tool": "search",
"params": {
"query": "indexing strategies",
"limit": 20,
"filters": {
"tag": ["mcp", "architecture"],
"lang": "en"
}
}
}
Características de esquema comúnmente soportadas:
- Tipos escalares:
string,number,boolean. - Tipos estructurados:
object,array. - Enums: valores restringidos de cadena, p. ej.
"mode": "semantic" | "keyword". - Opcional vs requerido: definido por el contrato de la herramienta MCP.
- Valores por defecto: asumidos si se omiten.
5.2 Lenguaje natural embebido en la estructura
MQL no elimina el lenguaje natural; lo restringe a dónde puede vivir.
En el ejemplo anterior, query es intencionalmente texto humano abierto, pero todo lo demás es rígido:
{
"query": "How does the indexer handle deletion of stale documents?",
"limit": 5,
"mode": "semantic"
}
El modelo puede razonar sobre query, pero el resto es estático y verificable por máquina.
6. Filtros, proyecciones y ordenaciones
Más allá de los parámetros crudos de las herramientas, MQL suele añadir operadores de estilo relacional. Piénsalos como un pequeño álgebra de consultas sobre los outputs de las herramientas.
6.1 Expresiones de filtro
Las cláusulas de filtro (where, filter, etc.) usan un vocabulario lógico mínimo:
- Comparación:
=,!=,<,<=,>,>= - Cadenas:
contains,starts_with,ends_with,matches(regex) - Conjuntos:
in,not_in - Booleano:
and,or,not
Ejemplo:
{
"op": "filter",
"input": "doc_results",
"where": {
"and": [
{ "field": "score", "op": ">=", "value": 0.8 },
{ "field": "metadata.lang", "op": "=", "value": "en" }
]
},
"alias": "filtered_docs"
}
Los campos anidados como "metadata.lang" dependen de un resolutor de rutas con notación de puntos, similar a JSONPath pero menos complejo.
6.2 Proyecciones
Las proyecciones definen la forma que quieres de los outputs:
- Conservar solo ciertos campos.
- Renombrar campos para mayor claridad.
- Insertar constantes.
{
"op": "project",
"input": "filtered_docs",
"select": [{ "field": "id", "as": "doc_id" }, { "field": "title" }, { "field": "score" }],
"alias": "compact_docs"
}
Esto mantiene la respuesta pequeña y más predecible, crítico para controlar el uso de tokens cuando los resultados alimentan luego un modelo LLM.
6.3 Ordenación y límite
La mayoría de runtimes de consultas MCP entienden cláusulas simples de ordenación y límite como operaciones de primera clase:
{
"op": "sort",
"input": "compact_docs",
"by": [{ "field": "score", "direction": "desc" }],
"alias": "ranked_docs"
}
Junto con limit en un paso anterior o posterior, esto refleja el ORDER BY y LIMIT de SQL.
7. Pipelines y ejecución multi‑paso
Una fortaleza central del Lenguaje de Consultas MCP es poder orquestar múltiples herramientas en una única pipeline declarativa.
7.1 Pipeline multietapa sobre un único target
Ejemplo: buscar en docs, luego resumir los 3 mejores resultados mediante un sumario de otra herramienta MCP.
{
"version": "1.0",
"targets": [
{
"server": "docs-search",
"tool": "search",
"params": { "query": "MCP query language basics", "limit": 10 },
"alias": "raw_results"
}
],
"pipeline": [
{
"op": "filter",
"input": "raw_results",
"where": { "field": "score", "op": ">=", "value": 0.7 },
"alias": "high_conf"
},
{
"op": "limit",
"input": "high_conf",
"count": 3,
"alias": "top_docs"
},
{
"op": "tool_call",
"server": "text-utils",
"tool": "summarize",
"params_from": {
"input": "top_docs",
"mapping": {
"texts": "content"
}
},
"alias": "summary"
}
],
"output": {
"format": "json",
"source": "summary"
}
}
Observaciones:
params_fromes un patrón típico: mapear la salida de la pipeline a la entrada de otra herramienta.- El motor de ejecución puede paralelizar donde sea seguro, pero respeta las dependencias declaradas (vía
input/alias).
7.2 Composiciones entre múltiples servidores
Las consultas suelen cruzar múltiples repositorios MCP: código, docs, métricas, tickets. MQL hace esto explícito:
{
"targets": [
{
"server": "ticketing",
"tool": "search_tickets",
"params": { "query": "MCP query language", "status": "open" },
"alias": "open_tickets"
},
{
"server": "docs-search",
"tool": "search",
"params": { "query": "MCP query language", "limit": 5 },
"alias": "docs"
}
],
"pipeline": [
{
"op": "join",
"left": "open_tickets",
"right": "docs",
"on": {
"left_field": "topic",
"right_field": "tags"
},
"alias": "ticket_doc_pairs"
}
],
"output": {
"format": "json",
"source": "ticket_doc_pairs"
}
}
Esta historia de cross‑repository es donde los repositorios MCP realmente brillan: el lenguaje de consultas se convierte en una única vista sobre sistemas que de otro modo están fragmentados.
8. Control de contexto y coste
Los entornos impulsados por modelos LLM necesitan restricciones sobre el tamaño del contexto y el comportamiento. El Lenguaje de Consultas MCP incorpora varios mecanismos para eso.
8.1 Moldeado de resultados para control de tokens
Antes de que los datos lleguen a un modelo, MQL puede:
- limitar el número de resultados;
- eliminar campos no usados;
- preagregar o resumir.
Esto es vital para mantenerse dentro de las ventanas de contexto y mantener los tiempos de respuesta previsibles.
8.2 Pistas de ejecución
Algunas implementaciones soportan hints opcionales:
{
"hints": {
"max_tokens": 4096,
"timeout_ms": 8000,
"priority": "low"
}
}
Estos hints no cambian el significado lógico, pero permiten al runtime ajustar la planificación, resultados parciales o estrategias de truncado.
8.3 Streaming y salidas parciales
Los bloques de output pueden especificar opciones de streaming:
{
"output": {
"format": "json",
"source": "summary",
"stream": true,
"chunk_size": 1024
}
}
El cliente MCP puede entonces enlazar esto con streaming en UI, WebSockets o una barra de progreso en CLI.
9. Control de acceso y hooks de política
Cualquier despliegue serio necesitará que el Lenguaje de Consultas MCP encaje con las políticas de seguridad.
9.1 Campos conscientes de políticas
Algunas implementaciones de MQL extienden las consultas con campos como:
{
"auth": {
"user_id": "alice",
"roles": ["dev", "reader"]
}
}
El runtime de la consulta pasa esto a los servidores MCP, que pueden aplicar:
- filtros a nivel de fila por usuario o rol,
- enmascaramiento de campos sensibles,
- registro y auditoría ligados a la identidad del usuario.
9.2 Comprobaciones de política estáticas
Las políticas a menudo definen guardrails como:
- qué servidores MCP están permitidos,
- qué herramientas están prohibidas (p. ej.,
exec_shell), - límites máximos en
limit,timeout_msomax_tokens.
Esto significa que una consulta puede ser rechazada antes de llegar a cualquier repositorio MCP subyacente, reduciendo riesgos y efectos secundarios inesperados.
10. Lenguaje natural, system prompts y plantillas
El Lenguaje de Consultas MCP no está diseñado para competir con el lenguaje natural; le aporta estructura.
10.1 Dónde vive el lenguaje natural
Lugares comunes:
params.querypara herramientas tipo búsqueda.params.instructionsal invocar una herramienta genérica de completado LLM.templatespara salida estructurada, p. ej., “Return a JSON list of…”
Ejemplo:
{
"targets": [
{
"server": "llm-server",
"tool": "structured_completion",
"params": {
"instructions": "Given the list of documents, extract the three main design decisions about the MCP query language.",
"schema": {
"type": "object",
"properties": {
"decisions": {
"type": "array",
"items": { "type": "string" }
}
},
"required": ["decisions"]
}
},
"alias": "decision_summary"
}
]
}
La estructura es fija; solo el campo instructions es lenguaje natural.
10.2 Plantillas reutilizables
Muchos equipos factoran consultas MQL en plantillas con placeholders:
{
"version": "1.0",
"targets": [
{
"server": "docs-search",
"tool": "search",
"params": {
"query": "{{user_query}}",
"limit": "{{limit|10}}"
},
"alias": "raw_results"
}
]
}
{{user_query}} se rellena desde la aplicación, mientras que {{limit|10}} muestra un valor por defecto. Así es como los frontends pueden exponer de forma segura consultas “power user” sin abrir la puerta a llamadas arbitrarias a herramientas.
11. Manejo de errores y diagnóstico
Los bordes afilados del lenguaje son útiles solo si vienen con diagnósticos igualmente precisos.
11.1 Errores de validación
Antes de la ejecución, MQL suele validarse frente a:
- esquema base (¿la consulta está sintácticamente bien formada?);
- esquemas de herramientas (¿son válidos los
params?); - políticas (¿está permitida la consulta?).
Las formas de error suelen verse así:
{
"error": "validation_error",
"details": [
{
"path": "targets[0].params.limit",
"message": "Value must be <= 100"
}
]
}
Como todo está estructurado, los IDEs y CLIs pueden resaltar con precisión el campo problemático.
11.2 Errores en tiempo de ejecución
Una vez en marcha, la consulta puede fallar por muchas razones: problemas de red, timeouts, errores de herramientas. Los buenos runtimes MCP añaden contexto:
{
"error": "tool_error",
"tool": "docs-search.search",
"message": "Index not reachable",
"code": "UNAVAILABLE",
"retryable": true
}
Como MQL es composicional, algunos motores soportan éxito parcial; por ejemplo, un target puede fallar mientras otro tiene éxito, ajustando las etapas del pipeline en consecuencia.
12. Patrones prácticos para usar el Lenguaje de Consultas MCP
Los desarrolladores que adoptan repositorios MCP convergen rápidamente en algunos patrones prácticos de uso.
12.1 Patrón: Buscar + Ground + Responder
Un flujo de trabajo común de recuperación aumentada:
- Buscar en docs.
- Filtrar y rankear.
- Pasar a un LLM para responder una pregunta usando solo esos docs.
{
"version": "1.0",
"targets": [
{
"server": "docs-search",
"tool": "search",
"params": {
"query": "{{user_question}}",
"limit": 20,
"mode": "semantic"
},
"alias": "docs_raw"
}
],
"pipeline": [
{
"op": "filter",
"input": "docs_raw",
"where": { "field": "score", "op": ">=", "value": 0.65 },
"alias": "docs_filtered"
},
{
"op": "limit",
"input": "docs_filtered",
"count": 6,
"alias": "docs_top"
},
{
"op": "tool_call",
"server": "llm-server",
"tool": "answer_with_context",
"params_from": {
"input": "docs_top",
"mapping": {
"context": "content"
}
},
"extra_params": {
"question": "{{user_question}}",
"style": "concise",
"include_sources": true
},
"alias": "final_answer"
}
],
"output": {
"format": "json",
"source": "final_answer"
}
}
Las piezas son reutilizables, testeables y versionables.
12.2 Patrón: Refactorización consciente del repositorio
Con repositorios MCP orientados al código, MQL puede orquestar:
- listar archivos;
- leer y analizar código;
- proponer refactors;
- generar parches.
No confías ciegamente en el modelo; diseñas el flujo de datos.
13. Herramientas alrededor del Lenguaje de Consultas MCP
El lenguaje por sí solo es solo sintaxis. El ecosistema alrededor es donde se vuelve práctico.
13.1 Editores y linters
Es de esperar:
- esquemas JSON/YAML para MQL, habilitando autocompletado en IDE;
- linters estilo ESLint o personalizados para:
- pasos inalcanzables;
- alias no usados;
- herramientas riesgosas en entornos sensibles.
13.2 Arneses de pruebas y fixtures
MQL es naturalmente adecuado para pruebas:
- Puedes almacenar consultas en control de versiones.
- Adjuntar fixtures que simulen respuestas de las herramientas MCP.
- Hacer aserciones sobre la forma y contenido del
outputfinal.
Esto acerca la lógica habilitada por IA a las pruebas unitarias e de integración tradicionales en lugar de la “magia del prompt”.
13.3 Observabilidad
Dado que cada consulta está estructurada:
- Los logs pueden registrar el objeto de consulta exacto.
- Las trazas pueden anotar cada
targety etapa depipelinecon latencia y estado. - Los dashboards pueden mostrar las herramientas más usadas, filtros más comunes y distribución de costes.
Este bucle de observabilidad retroalimenta la afinación de consultas para fiabilidad y eficiencia.
14. En qué difiere el Lenguaje de Consultas MCP de SQL y GraphQL
Es tentador ver MQL como “otro lenguaje de consultas más”. No es intercambiable con SQL o GraphQL, aunque toma ideas de ambos.
- SQL asume un esquema relacional fijo y almacenamiento de datos; MQL se dirige a herramientas, algunas de las cuales ni siquiera almacenan datos de forma permanente.
- GraphQL se centra en tipado y forma para datos jerárquicos; MQL se centra en flujos de trabajo que pueden cruzar múltiples repositorios MCP y orquestar LLMs.
- MQL presta mucha atención a:
- esquemas de herramientas y efectos secundarios;
- composición de pipelines;
- gestión del contexto para modelos.
En la práctica, aún podrías consultar una base de datos relacional detrás de MCP con SQL, pero MQL sería la capa exterior que decide cuándo y por qué hacerlo, y cómo unir el resultado en una acción más amplia impulsada por IA.
15. Primeros pasos: un modelo mental mínimo
Para hacer concreto el Lenguaje de Consultas MCP en el trabajo diario, ten en cuenta el siguiente atajo mental:
- Targets = qué herramientas MCP llamar.
- Params = qué entradas estructuradas reciben.
- Pipeline = cómo transformas y encadenas resultados.
- Output = qué forma quieres de vuelta y cómo se entrega.
Una vez que veas las consultas como pequeños programas explícitos sobre repositorios MCP, el camino hacia sistemas robustos habilitados por IA se parece menos a la magia de los prompts y más a la ingeniería normal.
External Links
Model Context Protocol (MCP) Explained - by Nir Diamant - DiamantAI MCP 101: Understanding the Model Context Protocol - Itential Understanding Model Context Protocol (MCP) : A Full Deep Dive + … What is Model Context Protocol (MCP)? A guide | Google Cloud Model Context Protocol (MCP): A comprehensive introduction for …