mcp-impo
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-imposearch normas about social security"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-impo
MCP server for IMPO Uruguay datos abiertos API with SQLite caching.
Install
pip install mcp-impoRelated 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 --helpMCP Tools
schema- Retrieve IMPO JSON schema documentationnorma- Get a specific norma or avisosearch- Search normas/avisosbases- 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 toolsbasesA
Get information about available bases in IMPO.
Returns metadata about the available databases and their structure from IMPO's datos abiertos service.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | Optional TTL in seconds for cache. Defaults to 1 hour (3600s). Use 0 to bypass cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | Yes | Type of norm (e.g., "ley", "decreto", "resolucion", "aviso", "convenio", "contrato", "licitacion") | |
| anio | Yes | Year of the norm (e.g., 2024) | |
| nro | Yes | Number of the norm (e.g., "19850") | |
| sec | No | Optional sequence identifier | |
| ttl | No | Optional TTL in seconds for cache. Defaults to 1 hour (3600s). Use 0 to bypass cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | Optional TTL in seconds for cache. Defaults to 24 hours (86400s). Use 0 to bypass cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
searchB
Search for normas or avisos in IMPO database.
Performs a search across IMPO's database of Uruguayan legislation and official notices. Results can be filtered by type and year.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query string (searches in norm titles and content) | |
| tipo | No | Optional filter by norm type (e.g., "ley", "decreto", "resolucion") | |
| anio | No | Optional filter by year | |
| limit | No | Maximum number of results (default: 50, max: 100) | |
| ttl | No | Optional TTL in seconds for cache. Defaults to 10 minutes (600s). Use 0 to bypass cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as idempotency, cache behavior (though ttl parameter exists), or any side effects. The read-only nature of a search is implied but not explicitly stated, requiring the agent to assume based on the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, completely front-loaded with the main purpose. Every word serves a function. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description is sufficiently complete for a search tool. It covers the core functionality and filtering options. Minor missing context like pagination defaults are handled by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with well-described parameters. The description adds minimal value beyond the schema, essentially reiterating that results can be filtered. Baseline 3 is appropriate as the schema already does heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for normas or avisos in the IMPO database, using the verb 'search' and specifying the resource. It effectively conveys the tool's purpose, though it does not explicitly differentiate from siblings like 'norma' or 'bases'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions filtering by type and year, implying usage for legislative searches. However, it lacks explicit guidance on when not to use the tool or alternatives among siblings, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
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.
Tool names are all single lowercase nouns (bases, norma, schema, search), following a consistent, predictable pattern without mixing conventions.
Four tools is well-scoped for a legislation/norm search service: metadata, schema, search, and retrieval cover the core functionality without excess or deficiency.
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
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
MCP server for Brazilian Federal Senate open data (legislative, administrative, e-Cidadania).
Hosted MCP server for live public-data APIs and Skills for AI agents.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceAn 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.
- AlicenseAqualityCmaintenanceMCP 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.14193MIT
- AlicenseAqualityDmaintenanceMCP 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.265MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that enables searching and retrieving judicial decisions from the Uruguayan National Public Jurisprudence Database (BJN).
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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