Skip to main content
Glama

mcp-inegi

Servidor MCP para que cualquier asistente de IA (Claude, ChatGPT, Gemini, Cursor o un modelo local) consulte datos oficiales del INEGI y conteste citando la fuente:

  • Indicadores: población, inflación, empleo, PIB e IGAE, a nivel nacional, estatal y, para datos censales, municipal.

  • DENUE: el directorio de más de 5 millones de negocios, con su giro, tamaño, dirección, teléfono y coordenadas.

Forma parte de Itzamná, una familia de servidores MCP de código abierto sobre los datos públicos de México. Proyecto independiente, sin afiliación con el INEGI.

Qué puedes preguntarle

  • ¿Cuál fue la inflación anual de septiembre? → 3.45 % (INPC, indicador 910406, periodo 2026/09)

  • ¿Cuánta gente vive en Naucalpan? → 834,434 personas (Censo 2020, municipio 15057)

  • ¿Qué estados tienen más población desocupada? → compara las 32 entidades con la ENOE

  • ¿Cómo va el PIB? → variación anual, PIB real en millones de pesos de 2018 e IGAE mensual

  • Dame información de Naucalpan → perfil con población, desempleo y 36,542 negocios

  • ¿Cuántas tortillerías hay en Naucalpan? → 515 (DENUE, actividad SCIAN 311830)

  • ¿Qué cafés hay a 300 m del Zócalo? → nombre, dirección y distancia de cada uno

  • Dame dentistas en Coyoacán → nombre, dirección, teléfono y sitio web

Cada respuesta trae el ID del indicador, el periodo, la unidad, la fuente oficial y la fecha de última actualización, para que cualquiera la pueda verificar.

Related MCP server: Tlaloc MCP Server

Herramientas

Herramienta

Qué hace

perfil_area

Perfil de un lugar: población, mujeres y hombres, % indígena, desempleo y negocios

indicadores_clave

Catálogo de indicadores verificados, con su ID y cobertura geográfica

consultar_indicador

Último valor o serie de un indicador para el país, un estado o un municipio

comparar_areas

El mismo indicador en varios estados o municipios, ordenado de mayor a menor

buscar_municipio

Clave de un municipio o alcaldía por nombre, sin importar acentos

metadatos_indicador

Nombre oficial, unidad, frecuencia, fuente y periodo cubierto

contar_negocios

Cuántos negocios de un giro hay en el país, un estado o un municipio

buscar_negocios

Negocios por nombre o giro en un área, con dirección, contacto y tamaño

negocios_cercanos

Negocios alrededor de unas coordenadas, del más cercano al más lejano

buscar_actividad

Código SCIAN de un giro ("tortillerías" → 311830)

consultar_indicador acepta las claves del catálogo (INFLACION_ANUAL, POBLACION_TOTAL, TASA_DESOCUPACION, PIB_REAL, IGAE…) o cualquier ID numérico del Banco de Indicadores. Las áreas se pueden dar por nombre o por clave: estados (Jalisco, CDMX, 14) y los 2,478 municipios y alcaldías (Naucalpan, Juárez, Chihuahua, 15057). Si un nombre existe en varios estados, como Benito Juárez, el servidor devuelve los candidatos en lugar de adivinar.

Las herramientas del DENUE aceptan el giro en lenguaje natural ("gimnasio", "oxxo", "taller mecánico"): el servidor lo traduce al código SCIAN con el catálogo oficial incluido en el paquete y dice qué actividad usó, con alternativas por si no era esa. También se puede filtrar por tamaño (personal ocupado, de "0 a 5" hasta "251 y más").

Instalación

Opción 1: Endpoint remoto (sin instalar nada, sin token)

Hay una instancia pública hospedada en streamable-http. No necesitas Python ni pedir tu propio token del INEGI:

https://itzamna-mcp.duckdns.org/inegi/mcp

En Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "inegi": {
      "type": "streamable-http",
      "url": "https://itzamna-mcp.duckdns.org/inegi/mcp"
    }
  }
}

En Claude Code:

claude mcp add --transport http inegi https://itzamna-mcp.duckdns.org/inegi/mcp

Es un servicio comunitario en infraestructura propia, con límite de 30 consultas por minuto por IP. Para uso intensivo o en producción, instálalo localmente con tu propio token.

Opción 2: En tu computadora (con uvx)

  1. Pide tu token gratuito en el INEGI. Para las herramientas de negocios pide además el token del DENUE: es otro distinto.

  2. Verifica la conexión:

export INEGI_TOKEN="tu_token"
export DENUE_TOKEN="tu_token_denue"
uvx mcp-inegi --test
  1. Agrégalo a tu cliente MCP. En Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "inegi": {
      "command": "uvx",
      "args": ["mcp-inegi"],
      "env": { "INEGI_TOKEN": "tu_token", "DENUE_TOKEN": "tu_token_denue" }
    }
  }
}

En Claude Code:

claude mcp add inegi -e INEGI_TOKEN=tu_token -e DENUE_TOKEN=tu_token_denue -- uvx mcp-inegi

Servidor remoto propio

mcp-inegi --transport streamable-http --host 127.0.0.1 --port 8000 --allowed-host tu.dominio

Detrás de un proxy inverso, --allowed-host declara el nombre público para la protección contra DNS rebinding.

Notas sobre la API del INEGI

Cosas que descubrimos al construirlo (octubre de 2026) y que el servidor ya resuelve por ti:

  • El banco económico se llama BIE-BISE; con BIE a secas la API responde que no hay resultados.

  • Se pide siempre la serie completa: con reciente=true la API falla en municipios cuando el periodo nacional más nuevo (p. ej. 2025) no existe a ese nivel.

  • El token va en la URL, así que el servidor silencia los logs de httpx para no filtrarlo.

  • El catálogo de municipios viene incluido en el paquete (scripts/generar_municipios.py lo regenera desde el Marco Geoestadístico).

  • En el DENUE, el total nacional se pide con área 0 y se suman los estados: con 00 la API responde 0. La búsqueda por área sí usa 00 para todo el país, y "todos" no es comodín ahí.

  • El DENUE a veces devuelve el JSON doblemente codificado (un string que trae la lista adentro).

  • El catálogo SCIAN viene incluido (scripts/generar_scian.py lo regenera desde los catálogos 2023 y 2018 del INEGI; requiere openpyxl).

  • Si un lugar no tiene el dato (la tasa de desempleo no existe por municipio), se usa el de su estado o el nacional y la respuesta lo dice. La tasa de desempleo por estado se calcula como población desocupada / población económicamente activa, ambas de la ENOE trimestral.

  • Cada respuesta trae un campo resumen: una frase lista para citar con la cifra, el periodo y la fuente, pensada para que modelos pequeños no tengan que reformatear números.

  • Las series se guardan en caché una hora (INEGI_CACHE_TTL, en segundos) y los catálogos de unidades, fuentes, frecuencias y áreas durante 24 horas.

Desarrollo

uv venv && uv pip install -e ".[dev]"
pytest
ruff check .

Licencia MIT.

Available Tools

10 tools
buscar_actividadA

Busca el código SCIAN de una actividad económica ("tortillerías", "gimnasio").

El DENUE clasifica cada negocio con un código SCIAN; úsala para elegir el código correcto antes de contar o buscar negocios cuando la palabra es ambigua.

Args: descripcion: Giro en lenguaje natural, p. ej. 'farmacias', 'taller mecánico'.

NameRequiredDescriptionDefault
descripcionYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/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 more burden for behavioral disclosure. It implies a read-only lookup and explains DENUE's SCIAN classification, but it does not mention no-match behavior, whether multiple codes may be returned, rate limits, or authentication requirements.

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 purpose is front-loaded in the first sentence, followed by useful context and parameter guidance. There is minor redundancy in repeating examples, but the description remains compact and structured.

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?

For a simple one-parameter lookup with an output schema, the description covers the tool's purpose, intended usage, and parameter meaning adequately. It could be improved by mentioning edge-case behavior when no matching SCIAN code is found.

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?

Schema description coverage is 0%, so the description must compensate for the single parameter. It defines 'descripcion' as a natural-language business type and gives useful examples like 'farmacias' and 'taller mecánico'.

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 states a specific verb and resource: 'Busca el código SCIAN de una actividad económica', with clear examples such as 'tortillerías' and 'gimnasio'. It also distinguishes the tool's intended role from counting/searching businesses by explaining that it helps select the correct code first.

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?

It explicitly says to use the tool before counting or searching businesses when the word is ambiguous, which gives clear usage context. It references sibling capabilities conceptually but does not name the exact tools or specify when not to use it.

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

buscar_municipioA

Busca la clave geoestadística (5 dígitos) de un municipio o alcaldía por su nombre.

Úsala cuando un nombre sea ambiguo o para confirmar la clave antes de consultar.

Args: nombre: Nombre completo o parcial, sin importar acentos ('naucalpan', 'Juárez'). estado: Estado para acotar la búsqueda (opcional), p. ej. 'Chihuahua' o '08'.

NameRequiredDescriptionDefault
estadoNo
nombreYes

Output 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 are present, so the description carries the behavioral burden. It discloses useful input behavior (partial names accepted, accents ignored, estado narrows the search) but does not explain multiple-match handling, matching rules, or any access/rate constraints; with an output schema covering returns, this is adequate but incomplete.

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?

Front-loads purpose, then usage, then parameter notes; the four short lines all add information. The Args block is justified because the schema has no parameter descriptions.

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?

For a two-parameter lookup with an output schema, the description covers purpose, usage context, and both inputs. It leaves some behavioral edge cases (multiple matches, exact matching) unspecified and no annotations exist, but the core information needed to invoke it is present.

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?

Schema description coverage is 0%, so the description must explain parameters, and it does: nombre is full/partial with accents ignored and examples, estado is optional with examples like 'Chihuahua' or '08'. It adds clear semantics beyond the bare schema, though it does not specify exact matching rules for estado.

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 ('Busca') and exact resource ('clave geoestadística (5 dígitos) de un municipio o alcaldía por su nombre'), so the agent can tell this is a geographic-key lookup rather than an indicator, business, or area tool. It does not explicitly name or contrast a sibling, which keeps it at 4 rather than 5.

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 clear triggering context: use when a name is ambiguous or to confirm the clave before another query. It does not state when not to use it or name a specific alternative sibling, so it stops short of full when/when-not guidance.

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

buscar_negociosA

Busca negocios por nombre o giro en el país, un estado o un municipio (DENUE).

Devuelve nombre, giro, tamaño, dirección, teléfono, correo, sitio web y coordenadas.

Args: que: Texto a buscar en el nombre o la actividad ('Similares', 'tacos'). Opcional si se da actividad. area: País (por defecto), estado o municipio, por nombre o clave. actividad: Filtra por giro ('gimnasio') o código SCIAN de 2, 3, 4 o 6 dígitos. personal: Tamaño por personal ocupado, 1 a 7 (ver contar_negocios). limite: Máximo de negocios a devolver (1 a 50).

NameRequiredDescriptionDefault
queNo
areaNo
limiteNo
personalNo
actividadNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does convey the read-only, look-up nature and the result cap (1–50), but says nothing about truncation behavior when the limit is hit, whether a total match count is returned, or any institutional/rate constraints on the DENUE source. Useful but incomplete for an unannotated tool.

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?

Front-loaded purpose sentence followed by the return payload, then a compact Args block. No sentence is redundant; the Spanish text is dense and each line adds distinct information.

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?

With an output schema present, the description need not spell out return values (it does anyway, briefly), and it covers input semantics thoroughly. The only real gap is behavioral edge cases: what happens when results exceed the limit, and whether an empty or ambiguous 'area' string is resolved or rejected.

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

Parameters5/5

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

Schema coverage is 0% and the description fully compensates: every one of the five parameters is explained, including allowed SCIAN code lengths (2, 3, 4, 6 digits), the personal-size range 1–7 with a cross-reference to 'contar_negocios', the limit range, and the area defaulting to the country. This meaning is genuinely unavailable from the bare schema.

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?

States a specific verb ('Busca'), the resource ('negocios'), the search keys (nombre o giro), the geographic scope (país, estado, municipio) and the source (DENUE), then enumerates the returned fields. That scope description implicitly separates it from radius-based 'negocios_cercanos' and from the count-only 'contar_negocios'.

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?

It supplies a conditional usage rule ('Opcional si se da actividad') and points to 'contar_negocios' for interpreting the personal-size codes. However, it never says when to prefer this over 'negocios_cercanos' (proximity search) or when the geographic area argument is required versus defaulting to the whole country, so guidance remains implied rather than explicit.

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

comparar_areasA

Compara el último valor de un indicador entre varios estados o municipios.

Args: indicador: Clave del catálogo o ID numérico del INEGI. areas: Lista de áreas (nombres o claves), p. ej. ['CDMX', 'Jalisco', 'Nuevo León']. Usa ['estados'] para comparar las 32 entidades.

NameRequiredDescriptionDefault
areasYes
indicadorYes

Output Schema

NameRequiredDescription
resultYes

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 behavioral burden. It discloses that the tool uses the 'último valor' of an indicator, which is useful recency context, but it does not discuss permissions, read-only behavior, error conditions, or any limitations. Because an output schema exists, return-value details are appropriately out of scope.

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 the core comparison action, followed by a compact Args section that covers both required parameters. It is appropriately sized and contains little waste, though the Args formatting is slightly verbose relative to the small parameter set.

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?

For a two-parameter comparison tool with an output schema, the description covers both required inputs and the key special value ['estados']. The main remaining gap is usage guidance relative to sibling tools such as consultar_indicador and perfil_area.

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?

Schema description coverage is 0%, so the description must explain the parameters, and it does: 'indicador' accepts a catalog key or numeric INEGI ID, and 'areas' accepts names or keys with the special token ['estados'] for all 32 entities. This adds substantial meaning beyond the bare schema, though concrete ID or key examples for 'indicador' would help further.

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: compare the latest value of an indicator across multiple states or municipalities. The scope is clear enough to distinguish it from single-area or profile-oriented siblings, although no sibling is named explicitly.

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 comparison scope implies that this tool is for multi-area comparisons rather than single-indicator lookup, but it never explicitly says when to use it instead of consultar_indicador or perfil_area. No exclusions, prerequisites, or alternative-selection guidance are given.

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

consultar_indicadorA

Consulta el valor más reciente (o la serie) de un indicador del INEGI.

Args: indicador: Clave del catálogo (p. ej. 'INFLACION_ANUAL', 'POBLACION_TOTAL') o un ID numérico del INEGI (p. ej. '910406'). area: Área geográfica (opcional, por defecto nacional). Acepta el nombre del estado ('Jalisco', 'CDMX', 'Estado de México'), su clave de 2 dígitos ('14') o la nombre o clave de un municipio ('Naucalpan', 'Benito Juárez, CDMX', '15057'). observaciones: Cuántos periodos devolver, del más reciente hacia atrás (1 a 120).

NameRequiredDescriptionDefault
areaNo
indicadorYes
observacionesNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/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 the full behavioral burden. It discloses useful behavior such as the default national area and the 1–120 observation range, and 'Consulta' implies a read operation, but it does not state permissions, error behavior, or rate limits.

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 front-loaded with the core purpose and then uses a structured Args section. The examples and constraints are useful and there is no wasted text.

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?

For a three-parameter query tool with a required indicator and an output schema, the description covers all parameters and their formats well enough to call it correctly. The main missing piece is explicit routing guidance against sibling tools.

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

Parameters5/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, and it does: it explains the indicator key/ID formats, all accepted area formats with examples, the default national scope, and the observation count range and direction.

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 first sentence states a specific verb and resource: consult the most recent value or series of an INEGI indicator. It is clear what the tool does, but it does not explicitly differentiate itself from siblings such as metadatos_indicador or comparar_areas.

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 explains the parameters but gives no explicit guidance on when to use this tool versus alternatives like comparar_areas, indicadores_clave, or metadatos_indicador. Usage is only implied by the word 'Consulta'.

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

contar_negociosA

Cuenta los negocios de un giro en el país, un estado o un municipio (DENUE).

Args: actividad: Giro en lenguaje natural ('tortillerías', 'farmacias') o código SCIAN de 2 a 6 dígitos; varios códigos separados por comas se suman ('464111,464112'). area: País (por defecto), estado o municipio, por nombre o clave ('Naucalpan'). personal: Tamaño por personal ocupado (opcional): 1 = 0 a 5, 2 = 6 a 10, 3 = 11 a 30, 4 = 31 a 50, 5 = 51 a 100, 6 = 101 a 250, 7 = 251 y más.

NameRequiredDescriptionDefault
areaNo
personalNo
actividadYes

Output 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 are provided, so the description bears the full burden. It does disclose useful behavior: DENUE as the data source, that comma-separated SCIAN codes are summed into one total, and that area defaults to the whole country; however it says nothing about error behavior for unrecognized activities, empty results, or rate limits.

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?

Purpose is front-loaded in a single sentence, followed by a compact Args block where every line carries parameter information not present in the schema. There is no filler or repetition.

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 output schema is present, so return values need not be explained, and all three parameters are fully described. The remaining gap is operational context: when to prefer this over the sibling search/comparison tools.

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

Parameters5/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 entirely, and it does: it explains the natural-language or 2–6 digit SCIAN form of actividad with comma-summation semantics, the name-or-key form of area with the country default, and the full seven-bucket mapping for personal.

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 uses a specific verb ("Cuenta") plus resource ("negocios de un giro") and states the geographic scope (país, estado o municipio) and source (DENUE). This implicitly distinguishes counting from the sibling search tools (buscar_negocios, negocios_cercanos), but no sibling is named, so differentiation is left to inference.

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?

Counting versus listing is implied by the verb, and the default (país) is stated, but there is no explicit when-to-use guidance nor any routing to alternatives such as buscar_negocios for individual records or negocios_cercanos for proximity queries.

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

indicadores_claveA

Lista los indicadores verificados del catálogo, con su ID y cobertura geográfica.

Args: tema: Filtra por tema (opcional): 'Población', 'Precios', 'Empleo' o 'Actividad económica'.

NameRequiredDescriptionDefault
temaNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/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 carry behavioral context. It reveals that only verified indicators are listed and that ID/geographic coverage are returned, but does not explicitly confirm read-only behavior, pagination, ordering, or auth/rate-limit characteristics.

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 purpose is front-loaded in the first sentence, followed by a compact Args section. Every sentence adds useful information, and the parameter details earn their place because the schema lacks descriptions/enums.

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?

This is a low-complexity one-parameter catalog-listing tool with an output schema, and the description covers the purpose, optional filter, and key output fields. The main missing piece is explicit routing relative to sibling tools.

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?

Schema description coverage is 0%, so the description must explain the single optional 'tema' parameter. It does this well by naming the parameter, marking it optional, and enumerating the accepted theme values; only minor details like exact matching/case sensitivity are absent.

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 ('Lista') and resource ('indicadores verificados del catálogo'), and adds that results include ID and geographic coverage. It does not explicitly distinguish itself from siblings like consultar_indicador or metadatos_indicador.

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?

Explains the optional theme filter and its categorical values, implying discovery/catalog use. However, it gives no explicit when-to-use versus consultar_indicador or metadatos_indicador, and no exclusions.

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

metadatos_indicadorA

Ficha de un indicador: nombre oficial, unidad, frecuencia, fuente y periodo cubierto.

Args: indicador: Clave del catálogo o ID numérico del INEGI.

NameRequiredDescriptionDefault
indicadorYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/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 the full disclosure burden. It partially meets it: it discloses the concrete fields returned and that the input accepts either a catalog key or a numeric INEGI ID, but it says nothing about behavior on an invalid/nonexistent indicator, whether output is a single record, or the fact that this is a pure read (inferred rather than stated).

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?

Two very short blocks with zero filler, and the returned-field list is front-loaded. Minor structural weakness: there is no verb at all — 'Ficha de un indicador' is a noun phrase — and the raw 'Args:' docstring formatting is slightly out of place alongside the prose.

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?

An output schema exists, so return values needn't be spelled out (though the description helpfully does). For a single-param, read-only metadata lookup this is nearly sufficient; the only real gap is the missing pointer to the sibling that supplies valid catalog keys.

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?

Schema description coverage is 0%, so the description must compensate and largely does: it defines 'indicador' as a catalog key OR a numeric INEGI ID, which is the single most important disambiguation for the only parameter. It falls short of saying where catalog keys come from (presumably indicadores_clave) or what an ID looks like.

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 precisely what the tool returns: the metadata sheet for an indicator (official name, unit, frequency, source, covered period), which is a concrete, verifiable scope. However, it never contrasts with close siblings like consultar_indicador (likely the data-values counterpart) or indicadores_clave (likely where keys come from), so sibling differentiation is left to inference.

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?

Usage is only implied through the noun phrase 'Ficha de un indicador' — an agent can infer 'use this for metadata, not for values', but there is no explicit when-to-use statement, no exclusion of consultar_indicador, and no note that the catalog key should be obtained from indicadores_clave first.

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

negocios_cercanosA

Negocios alrededor de un punto, del más cercano al más lejano (DENUE).

Args: latitud: Latitud del punto, p. ej. 19.4785. longitud: Longitud del punto, p. ej. -99.2396. que: Nombre o giro a buscar ('cafetería'); vacío trae todos los negocios. radio_m: Radio de búsqueda en metros (máximo 5000). limite: Máximo de negocios a devolver (1 a 50).

NameRequiredDescriptionDefault
queNo
limiteNo
latitudYes
radio_mNo
longitudYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/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 the burden. It usefully discloses ordering (closest to farthest) and the DENUE source, and notes radio_m caps at 5000, which implies a read/search operation. It does not address permissions, rate limits, or pagination behavior beyond the limite cap.

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?

Purpose is front-loaded in the first line, followed by a compact Args block. The docstring style is slightly mechanical but every entry earns its place by adding param meaning.

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?

With an output schema present, return values needn't be explained, and all five params are documented with constraints. Behavior and ordering are covered; only explicit read-only/permission context and sibling routing are missing.

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?

Schema coverage is 0%, so the description must compensate and largely does: it documents all five params with concrete examples (latitud 19.4785, longitud -99.2396), explains 'que' empty-returns-all behavior, and gives hard bounds (radio max 5000m, limite 1-50). This adds substantial value beyond the bare schema.

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+resource: returns businesses around a geographic point, sorted nearest-to-farthest from the DENUE dataset. The spatial framing ('alrededor de un punto') implicitly distinguishes it from non-spatial siblings like contar_negocios and buscar_negocios, though it never names them.

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 spatial 'nearby a point' framing implies usage, but the description never states when to pick this over buscar_negocios or contar_negocios, nor any prerequisites. Guidance is inferred rather than explicit.

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

perfil_areaA

Perfil de un lugar: población (total, mujeres, hombres), % indígena, nacidos en otro país, desempleo y número de negocios con sus giros principales, cada cifra con su periodo.

Úsala para preguntas generales como "dame información de Naucalpan" o "¿cómo es Jalisco?".

Args: area: Estado o municipio, por nombre o clave ('Naucalpan', 'Jalisco', '15057').

NameRequiredDescriptionDefault
areaYes

Output 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 the full behavioral burden; it does disclose that every figure carries its period, which is useful output context. However, it says nothing about data coverage, missing values, units, or failure behavior for an unknown area name.

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 metric list is front-loaded, the usage cue follows, and the argument note comes last, which is a sensible order. The metric enumeration is long but each item adds real information about scope.

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?

An output schema exists, so return structure need not be explained; the description covers purpose, typical question shape, and argument format. Remaining gaps are edge-case behavior and the boundary against the more specific indicator and business tools.

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?

Schema coverage is 0%, so the description must compensate, and it does: the single parameter is described as a state or municipality accepted either by name or by numeric key, with concrete examples ('Naucalpan', 'Jalisco', '15057'). That is the key parsing information an agent needs and it is absent from the schema.

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 concrete resource ('Perfil de un lugar') and enumerates exactly what is included: population by sex, indigenous share, foreign-born, unemployment, and business counts by sector, each with its period. This is far more specific than a tautology, though it does not explicitly contrast itself with siblings like consultar_indicador or contar_negocios.

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?

It gives a clear usage rule ('Úsala para preguntas generales') backed by two concrete example phrasings. The word 'generales' implicitly steers specific-indicator questions elsewhere, but no alternative tool is named and no exclusion is stated.

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.3.0
    • First observedbuscar_actividad
    • First observedbuscar_municipio
    • First observedbuscar_negocios
    • First observedcomparar_areas
    • First observedconsultar_indicador
    • First observedcontar_negocios
    • First observedindicadores_clave
    • First observedmetadatos_indicador
    • First observednegocios_cercanos
    • First observedperfil_area

TDQS

A3.9/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct resource and action: indicator catalog, query, comparison, metadata, location lookup, area profile, activity code resolution, business counting, business search, and proximity search. Overlap between business tools is minimal and clarified by descriptions (e.g., counting vs. searching vs. nearby).

Naming Consistency3/5

All names use snake_case, which is consistent, but the naming pattern mixes verb-first (consultar_indicador, buscar_municipio, contar_negocios) with noun-first (indicadores_clave, perfil_area, negocios_cercanos, metadatos_indicador). The inconsistency makes the set less predictable, though still readable.

Tool Count5/5

Ten tools fit the INEGI domain well: indicators, geography, and businesses each have a small, focused set of operations. No tool feels redundant, and the scope is neither too narrow nor too broad.

Completeness4/5

The surface covers indicator discovery, querying, comparison, metadata, and business counting/searching/nearby, plus geographic lookup and area profiles. Minor gaps exist (e.g., no bulk data export or full list of states/municipalities), but core workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides access to Mexico's INEGI (national statistics office) indicators API, enabling AI agents to query statistical data through natural language or direct tool calls.
    7 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI assistants with live, authenticated access to official Mexican data sources including CURP, RFC, postal codes, phone numbers, SPEI payments, CFDI status, DOF semantic search, and geocoding via INEGI/INE.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants and agents to query official Mexican economic data from Banxico, including USD/MXN exchange rates, inflation (INPC), UDIS, and interest rates.
    6
    54 PyPI
    6
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to look up metadata and fetch data values for Statistics Portugal (INE) indicators, including the valid dimension slots and dimension-value codes needed to slice a series. Supports both remote gateway and local stdio use, returning indicator titles, periodicity, units, time ranges, and filtered data points.
    6 npm
    MIT