mcpField
D
Diario Oficial de la Federación (unofficial)

Diario Oficial de la Federación (unofficial)

本地服务
github.com/amatiasdev法律与政务02 周前更新

关于 Diario Oficial de la Federación (unofficial)

dof-mcp 是面向墨西哥《联邦官方公报》的只读 MCP 服务和 TypeScript 类型化客户端,基于公开的 SIDOF JSON API。它为开发者和 Agent 提供规范化的公告及金融指标,并附带来源信息。

主要功能

  1. 01每日公告摘要
  2. 02支持分页获取公告文本
  3. 03FIX、UDI 和 TIIE 指标
  4. 04验证并规范化 API 响应
  5. 05来源网址、抓取时间和哈希
  6. 06stdio 与 Streamable HTTP 传输

适用场景

  1. 01查看某日发布的官方公告
  2. 02获取特定公告的文本
  3. 03查询某日期的金融指标
  4. 04根据官方来源核验数据

MCP 相关

提供每日摘要、公告详情和金融指标三个只读工具。支持 stdio 和 Streamable HTTP,并在结果中附上官方网址及 SIDOF 来源信息。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"amatiasdev-dof": {
"command": "npx",
"args": [
"-y",
"dof-mcp"
]
}
}
}
启动命令npx -y dof-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmdof-mcp0.2.2

工具

3

收录的工具列表 · 更新于 1 周前

参数类型必填说明
datestring否要汇总的日期,格式为 YYYY-MM-DD。默认为今天。
limitinteger否要列出的注记数上限;统计始终涵盖整天
editionenum否仅包含此版次matutina | vespertina | extraordinaria
organizationstring否仅包含所属机构名称中含有此文本的注记(不区分大小写)

详细介绍

dof-mcp

CI Contract OpenSSF Scorecard OpenSSF Best Practices npm

面向墨西哥联邦官方公报(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 }

选项(均为可选):

选项默认值
timeoutMs15000单次请求超时时间
retries2网络错误、429 和 5xx 响应的重试次数,采用指数退避和完全抖动;遵循 Retry-After,最长 30 s
maxResponseBytes10 MiB超出限制的响应将不会被解析
cacheTtlMs10 min内存缓存;相同的并发请求共用一次获取结果。设为 0 可禁用
cacheMaxEntries256LRU 上限
maxCacheableBytes512 KiB超出限制的响应会返回,但不会缓存
maxConcurrency4同时向 SIDOF 发出的请求数
maxQueue64等待可用名额的请求数;超过此数时,将快速失败并返回 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。