Skip to main content
Glama

mcp-impo

MCP server for IMPO Uruguay datos abiertos API with SQLite caching.

PyPI Python

Install

pip install mcp-impo

Related MCP server: bora-mcp

Usage

from mcp_impo import get_schema, get_norma, search_normas, get_base_info

# Get schema
schema = get_schema()

# Get specific norm
norma = get_norma("ley", 2024, "19850")

# Search
results = search_normas("seguridad social", tipo="ley", limit=10)

# Get available bases
bases = get_base_info()

CLI

mcp-impo --help

MCP Tools

  • schema - Retrieve IMPO JSON schema documentation

  • norma - Get a specific norma or aviso

  • search - Search normas/avisos

  • bases - Get information about available bases

Cache

The server uses SQLite caching with configurable TTL:

  • Schema: 24 hours

  • Base info: 1 hour

  • Norma data: 1 hour

  • Search results: 10 minutes

Override TTL per request by passing ttl parameter (seconds).

mcp-name: io.github.daedalus/mcp-impo

Development

git clone https://github.com/daedalus/mcp-impo.git
cd mcp-impo
pip install -e ".[test]"

# run tests
pytest

# format
ruff format src/ tests/

# lint
ruff check src/ tests/

# type check
mypy src/

Available Tools

4 tools
basesA

Get information about available bases in IMPO.

Returns metadata about the available databases and their structure from IMPO's datos abiertos service.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNoOptional TTL in seconds for cache. Defaults to 1 hour (3600s). Use 0 to bypass cache.

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?

With no annotations provided, the description carries full burden. It indicates the tool is read-only (returns metadata) and specifies the source (IMPO's datos abiertos service). However, it does not disclose caching behavior or any other side effects, though the TTL parameter implies caching.

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 very concise: one sentence defining purpose, one sentence elaborating on the return type. No unnecessary words or repetition. Front-loaded with the key action.

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 listing tool with one optional parameter and an output schema, the description is complete. It clarifies the resource ('bases' = databases in IMPO) and the return content (metadata and structure). Could be slightly more explicit about the meaning of 'bases' for users unfamiliar with IMPO.

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

Parameters3/5

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

Schema description coverage is 100% for the only parameter (ttl), and its description in the schema is clear. The tool description adds no additional meaning beyond what is already in the schema, thus baseline 3.

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 retrieves information about available bases (databases) in IMPO, using a specific verb 'Get' and resource 'bases'. It distinguishes from siblings by focusing on listing all available databases, while siblings like 'schema' likely deal with individual schemas.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description only states what it does, not when it should be used over 'norma', 'schema', or 'search'. The agent must infer from context.

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

normaC

Get a specific norma or aviso from IMPO.

Retrieves detailed information about a specific legal norm or notice from IMPO's database in JSON format.

ParametersJSON Schema
NameRequiredDescriptionDefault
tipoYesType of norm (e.g., "ley", "decreto", "resolucion", "aviso", "convenio", "contrato", "licitacion")
anioYesYear of the norm (e.g., 2024)
nroYesNumber of the norm (e.g., "19850")
secNoOptional sequence identifier
ttlNoOptional TTL in seconds for cache. Defaults to 1 hour (3600s). Use 0 to bypass cache.

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?

No annotations provided, so description must convey behavior. It states the tool retrieves data in JSON format but does not mention read-only nature, idempotency, or any side effects. Lacks disclosure of cache behavior beyond schema parameter ttl.

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 sentences, efficient and front-loaded with purpose. No verbose or redundant content, but could be slightly expanded for completeness without losing conciseness.

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 5 parameters, required fields, output schema, and sibling tools, the description is minimal. It does not explain what JSON format contains, nor how it relates to search or schema tools. Missing context for effective agent use.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline 3. Description adds little beyond the schema; it does not explain parameter semantics further. The schema already describes each parameter sufficiently.

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?

Description clearly states 'Get a specific norma or aviso from IMPO', specifying verb and resource. However, it does not differentiate from sibling tools like 'bases', 'schema', or 'search'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (bases, schema, search). There is no description of prerequisites or contextual triggers.

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

schemaA

Retrieve IMPO JSON schema documentation.

Returns the JSON schema defining the structure for normas and avisos from IMPO's datos abiertos API. This schema describes all available fields for Uruguayan legislation and official notices.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNoOptional TTL in seconds for cache. Defaults to 24 hours (86400s). Use 0 to bypass cache.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 carries the full burden. It correctly indicates the tool is read-only (retrieving schema) and describes the return content, but does not mention caching behavior, authentication needs, or potential side effects beyond default TTL in the parameter.

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 extremely concise—two sentences that front-load the action and then provide necessary detail. Every sentence adds value without redundancy.

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?

Given the tool is simple (one parameter, output schema exists), the description adequately explains the purpose and content. It doesn't need to detail return values because the output schema handles that. A slightly higher score could be justified, but it lacks explicit note about cache parameter usage.

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

Parameters3/5

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

The input schema coverage is 100%, and the single parameter 'ttl' is fully documented in the schema with description. The description does not add additional meaning beyond what the schema provides, meeting the baseline for high coverage.

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 retrieves the JSON schema documentation for IMPO's datos abiertos API, specifying it covers norms and official notices. It distinguishes from sibling tools like 'norma' and 'search' by focusing on schema structure rather than data retrieval.

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 implies the tool is for understanding data structure before querying, but it does not explicitly state when to use this tool over siblings or provide prerequisites. Usage guidance is implied but not direct.

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

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: 'bases' retrieves database metadata, 'schema' provides the data structure, 'search' performs queries, and 'norma' fetches a specific record. No overlap or ambiguity.

Naming Consistency5/5

Tool names are all single lowercase nouns (bases, norma, schema, search), following a consistent, predictable pattern without mixing conventions.

Tool Count5/5

Four tools is well-scoped for a legislation/norm search service: metadata, schema, search, and retrieval cover the core functionality without excess or deficiency.

Completeness4/5

The set covers key operations: explore databases, understand schema, search, and retrieve specific items. Missing a direct 'list all normas' endpoint, but search can approximate it, so minor gap.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    An MCP server deployed on Cloudflare Workers that provides access to Uruguayan legislation from the official IMPO database. It enables users to search for legal norms, retrieve full texts, and query specific articles from laws, decrees, and the constitution.
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for searching and extracting official announcements, decrees, and resolutions from the Argentine Official Gazette (Boletín Oficial de la República Argentina). It enables LLMs to perform real-time searches and retrieve verbatim legal text with complete juridical fidelity.
    14
    19
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for querying Spanish government open data APIs including grants, legislation, company registry, statistics, and open data catalog. Enables LLMs to access Spanish public information on-the-fly.
    26
    5
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server that enables searching and retrieving judicial decisions from the Uruguayan National Public Jurisprudence Database (BJN).

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/daedalus/mcp-impo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server