diario-oficial-mcp
Downloads the Colombian Diario Oficial daily PDF from the Imprenta Nacional public consultation portal, providing tools to list recent editions and download by date or number.
README
Diario Oficial MCP
🌐 English | Español
An MCP server that obtains the Colombian
Diario Oficial daily PDF from the Imprenta Nacional public consultation
portal (https://svrpubindc.imprenta.gov.co/diario/).
The server's job is acquisition: it downloads the official PDF and returns its file path plus metadata. Reading the document or building alerts on top of it is left to the calling agent / user.
Disclaimer. This is an unofficial, community project. It is not affiliated with, endorsed by, or supported by the Imprenta Nacional de Colombia. It works by reading the public consultation portal's current HTML, so it may break if the site changes. Use it responsibly and keep request volume modest against a government service.
Tools
| Tool | Description |
|---|---|
list_recent_editions |
List the most recent editions (numero, tipo, fecha). No download. |
download_latest_edition |
Download the newest published edition. |
download_edition_by_date |
Download the edition for a given day (dd/MM/yyyy). |
download_edition_by_number |
Download a specific edition by number (53524 or 53.524). |
Each download tool saves the PDF and returns:
{
"numero": "53.524",
"tipo": "Ordinaria",
"fecha": "16/06/2026",
"path": "/Users/you/Downloads/diario-oficial/DiarioOficial_53524_2026-06-16.pdf",
"size_bytes": 13265672
}
Where PDFs are saved
In order of precedence:
- The
output_dirargument passed to the tool. - The
DIARIO_OFICIAL_DIRenvironment variable. - Default:
~/Downloads/diario-oficial.
Use it (recommended: no clone)
You only need uv installed. uv fetches the
code from git, sets up an isolated environment, and runs the server — no manual
clone or install. Add this to your MCP config:
- Kiro:
.kiro/settings/mcp.json(workspace) or~/.kiro/settings/mcp.json(global) - Claude Desktop:
claude_desktop_config.json
{
"mcpServers": {
"diario-oficial": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/jkamilo81/diario-oficial-mcp",
"diario-oficial-mcp"
],
"env": {
"DIARIO_OFICIAL_DIR": "/Users/you/Documents/diario-oficial"
},
"disabled": false,
"autoApprove": ["list_recent_editions"]
}
}
}
Pin a released version by appending a tag, e.g.
git+https://github.com/jkamilo81/diario-oficial-mcp@v0.1.0.
Verify it runs at all:
uvx --from git+https://github.com/jkamilo81/diario-oficial-mcp diario-oficial-mcp
(The process starts and waits for an MCP client on stdio; press Ctrl+C to exit.)
A colleague can then ask their agent things like "download today's Diario Oficial" or "get edition 53.510", then read or set up alerts on the saved PDF.
Local development
git clone https://github.com/jkamilo81/diario-oficial-mcp
cd diario-oficial-mcp
uv venv
uv pip install -e ".[dev]"
uv run diario-oficial-mcp # run over stdio
pytest -q # smoke tests against the live portal
Config pointing at your local checkout instead of git:
{
"mcpServers": {
"diario-oficial": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/diario-oficial-mcp", "diario-oficial-mcp"]
}
}
}
How it works
The portal is a JSF/PrimeFaces application. Downloading an edition is a
session-bound, three-step flow handled by client.py:
GET /diario/— obtain theJSESSIONIDcookie and JSFViewState; the landing page already lists the most recent editions with per-row "Ver Diario" buttons.POSTthe row button — returns a viewer page containing a PrimeFaces streamed-content URL.GETthat streamed-content URL (same session) — returns the PDF bytes.
Search by date or number is a POST of the search form that re-renders the
editions table with the matching row, after which the same download flow runs.
Troubleshooting
- No editions returned / "Could not find ... ViewState". The portal HTML
likely changed. The brittle parts are the PrimeFaces component ids in
client.py(e.g.dtbDiariosOficiales:*:j_idt38). Runpytest -qto confirm and update the parsing. No edition found for date .... No edition was published that day (weekends/holidays), or the date is not indd/MM/yyyyformat.- TLS / certificate errors.
httpxbundles its own CA store, so this is usually a network/proxy issue rather than the portal. - The server "hangs" when run manually. Expected — it waits for an MCP client on stdio. It's meant to be launched by Kiro / Claude Desktop.
Notes & limitations
- Depends on the portal's current HTML structure; see Troubleshooting.
- Editions are typically large scanned PDFs (10+ MB). Text extraction / OCR for reading or alerting is intentionally out of scope for this server.
- Be considerate with request volume against a government service.
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.