Skip to main content
Glama
README.md
# mcp-impo

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

[![PyPI](https://img.shields.io/pypi/v/mcp-impo.svg)](https://pypi.org/project/mcp-impo/)
[![Python](https://img.shields.io/pypi/pyversions/mcp-impo.svg)](https://pypi.org/project/mcp-impo/)

## Install

```bash
pip install mcp-impo
```

## Usage

```python
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

```bash
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

```bash
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/
```

TDQS

A3.7/5.0

Scored across 4 tools

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
ResponsivenessNo issues