关于 Diario Oficial de la Federación (unofficial)
dof-mcp 是面向墨西哥《联邦官方公报》的只读 MCP 服务和 TypeScript 类型化客户端,基于公开的 SIDOF JSON API。它为开发者和 Agent 提供规范化的公告及金融指标,并附带来源信息。
主要功能
- 01每日公告摘要
- 02支持分页获取公告文本
- 03FIX、UDI 和 TIIE 指标
- 04验证并规范化 API 响应
- 05来源网址、抓取时间和哈希
- 06stdio 与 Streamable HTTP 传输
适用场景
- 01查看某日发布的官方公告
- 02获取特定公告的文本
- 03查询某日期的金融指标
- 04根据官方来源核验数据
MCP 相关
提供每日摘要、公告详情和金融指标三个只读工具。支持 stdio 和 Streamable HTTP,并在结果中附上官方网址及 SIDOF 来源信息。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| date | string | 否 | 要汇总的日期,格式为 YYYY-MM-DD。默认为今天。 |
| limit | integer | 否 | 要列出的注记数上限;统计始终涵盖整天 |
| edition | enum | 否 | 仅包含此版次matutina | vespertina | extraordinaria |
| organization | string | 否 | 仅包含所属机构名称中含有此文本的注记(不区分大小写) |
详细介绍
dof-mcp
面向墨西哥联邦官方公报(Diario Oficial de la Federación,DOF)的 MCP 服务和类型化 TypeScript 客户端,基于公开的 SIDOF JSON API 构建,让 AI Agent(Claude Code、Claude Desktop、Cursor 等)能够读取官方公告和金融指标。
为什么要用
DOF 是联邦法律、法令、税务和海关规则及官方指标的发布平台。其 JSON API 公开可用,但官方文档非常有限(https://sidof.segob.gob.mx/datos_abiertos),npm 上也没有适用于它的类型化客户端或 MCP 服务。本项目为其提供封装,并加入验证、来源信息和稳定、规范化的数据结构。
MCP 服务
提供三个只读工具:
| 工具 | 返回内容 |
|---|---|
dof_daily_summary | 某一天的公告,包含按版次和机构统计的数量;可按版次或机构筛选 |
dof_get_note | 一则纯文本公告;对于较长的公告,可通过 offset / maxChars 分页 |
dof_get_indicators | 某一天的 FIX 汇率、UDI 和 TIIE 利率,或某项指标的每日序列 |
每个结果都包含:
officialUrl:dof.gob.mx 上的公告链接,方便读者核对官方文本provenance:数据来源的 SIDOF URL、数据获取时间(UTC)以及原始响应的 SHA-256
安装
需要 Node.js 22 或更高版本。服务通过 stdio 运行;将其添加到 MCP 客户端:
{
"mcpServers": {
"dof": { "command": "npx", "args": ["-y", "dof-mcp"] }
}
}
- **Claude Desktop:**Settings → Developer → Edit Config,该操作会打开
claude_desktop_config.json(Windows 上为%APPDATA%\Claude\,macOS 上为~/Library/Application Support/Claude/)。 - **Cursor:**项目中的
.cursor/mcp.json,或供所有项目使用的~/.cursor/mcp.json。 - Claude Code:
claude mcp add dof -- npx -y dof-mcp - **Windows:**如果客户端无法直接启动
npx,请使用"command": "cmd", "args": ["/c", "npx", "-y", "dof-mcp"]。
托管端点(无需安装)
一个公共实例运行于 https://mcp.aldomatias.com/mcp(Streamable HTTP,无需身份验证,设有速率限制)。可在支持远程 MCP 服务的客户端中使用,例如 Claude 的自定义连接器,或:
claude mcp add --transport http dof https://mcp.aldomatias.com/mcp
它提供与 npm 软件包相同的工具和版本。这是一项免费、尽力而为的服务,不提供 SLA;如需大量使用,请自行运行该软件包。
**隐私。**该端点不会存储 IP 地址、工具参数或结果。对于每个请求,它会记录 HTTP 方法和路径、状态、耗时、JSON-RPC 方法、工具名称,以及 MCP 客户端报告的自身名称和版本(例如 claude-ai)。这些日志会在 AWS CloudWatch 中保留 7 天,仅用于统计使用量和检测故障。流量会经过 Cloudflare,由其根据自身的隐私政策处理 IP 地址,以实施速率限制和 DDoS 防护。如有疑问,请联系:[email protected]。
Streamable HTTP
npx dof-mcp --http --port 3000 # endpoint http://127.0.0.1:3000/mcp, probe /healthz
HTTP 传输是无状态的,会绑定到 127.0.0.1,并验证 Host 和 Origin 标头(--allowed-host <name> 可添加主机名)。它不提供身份验证或速率限制:如需将其暴露给 localhost 之外的网络,请将其置于会添加这些保护措施的反向代理后面。请参阅 SECURITY.md。
客户端
该软件包采用 ESM。import 可在所有环境中使用;在 Node.js 22.12 及更高版本中,require("dof-mcp") 也可使用(require(esm))。
import { DofClient } from "dof-mcp";
const dof = new DofClient();
const notes = await dof.getNotes("2026-10-16");
// [{ id: 5801377, title: "Acuerdo por el que se crea ...", date: "2026-10-16",
// edition: "matutina", branch: "PODER EJECUTIVO",
// organization: "SECRETARIA DE SEGURIDAD Y PROTECCION CIUDADANA", page: 4,
// hasPdf: true, hasHtml: true,
// officialUrl: "https://dof.gob.mx/nota_detalle.php?codigo=5801377&fecha=16/10/2026" }, ...]
const note = await dof.getNote(5801457); // full text as plain text
const fix = await dof.getIndicatorSeries("fix", "2026-10-01", "2026-10-16");
const { data, source } = await dof.getNotesWithSource("2026-10-16");
// source: { sourceUrl, fetchedAt, sha256, bytes }
选项(均为可选):
| 选项 | 默认值 | |
|---|---|---|
timeoutMs | 15000 | 单次请求超时时间 |
retries | 2 | 网络错误、429 和 5xx 响应的重试次数,采用指数退避和完全抖动;遵循 Retry-After,最长 30 s |
maxResponseBytes | 10 MiB | 超出限制的响应将不会被解析 |
cacheTtlMs | 10 min | 内存缓存;相同的并发请求共用一次获取结果。设为 0 可禁用 |
cacheMaxEntries | 256 | LRU 上限 |
maxCacheableBytes | 512 KiB | 超出限制的响应会返回,但不会缓存 |
maxConcurrency | 4 | 同时向 SIDOF 发出的请求数 |
maxQueue | 64 | 等待可用名额的请求数;超过此数时,将快速失败并返回 DofQueueFullError |
设计说明
- 在边界处进行校验。 每个响应都会通过 Zod 解析;遇到意外的数据结构时会明确报错,而不会让
undefined泄漏到调用方。 - 数据规范化。 SIDOF 将章节标题和出版物混列在一个列表中,并将一些缺失值写成字符串
"null";客户端只返回带标题的出版物,并提供 ISO 日期、布尔值和纯文本内容。 - 礼貌对待数据源。 使用可识别的
User-Agent、并发限制、缓存,且不跟随重定向。SIDOF 对单独的Accept: application/json返回406,因此客户端会发送带备用选项的请求头。 - 记录的测试样例。 测试使用真实记录的响应;每晚运行的契约测试会检查线上 API 是否仍符合预期。
路线图
- 用于每日出版物、说明详情和指标(FIX、UDIS、TIIE)的类型化客户端
- MCP 服务(stdio + Streamable HTTP),包含
dof_daily_summary、dof_get_note、dof_get_indicators - 加固:大小限制、带抖动的退避、缓存、来源信息;每晚运行契约测试
- 发布流程:采用可信发布和来源证明的 npm 发布、MCP Registry
- 可选:托管端点、本地搜索索引(
dof_search_notes;SIDOF 自带的搜索功能已损坏)
开发
参阅 CONTRIBUTING.md 和 RELEASING.md。
npm install
npm run lint && npm run typecheck && npm test && npm run build
npm run test:live # contract tests against the live API
免责声明
这是一个非官方项目,与 Secretaría de Gobernación 无关联。数据来自 SIDOF 公共 API,且可能随时变更,恕不另行通知。此软件包返回的文本是纯文本转换结果,并非官方版本:DOF 的官方版本是 dof.gob.mx 上的签名 PDF,因此请务必以其为准。
MIT 许可证适用于此代码,不适用于 DOF 内容。SIDOF 的法律声明允许在注明来源的前提下,为非商业目的复制其内容;商业用途须获得 Secretaría de Gobernación 的书面许可。如果你重新发布通过此软件包获取的内容,请注明 Diario Oficial de la Federación 为来源。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。