mcpField
D
Dc Code

Dc Code

远程服务
pipeworx.io法律与政务03 天前更新

关于 Dc Code

Dc Code 是面向法律研究者及应用开发者的华盛顿特区法规 MCP 服务,可按条文编号获取现行全文,也可按官方标题搜索或浏览章节。条文文本按请求实时获取,并附有状态及立法注释。

主要功能

  1. 01按引文查询法规全文
  2. 02按官方标题搜索主题
  3. 03按标题浏览章节条目
  4. 04返回条文状态与历史注释

适用场景

  1. 01核查特定法规条文及状态
  2. 02查找涉及某主题的法规标题
  3. 03浏览某一法规标题下的章节

MCP 相关

向 MCP 客户端提供法规查询和搜索工具;可通过 Pipeworx 网关连接,也可作为本地 stdio MCP 服务运行。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.pipeworx.io/dc-code/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

@pipeworx/dc-code

哥伦比亚特区法典(D.C. Code — DC 法规)——按引注获取完整条文,并可根据官方标题搜索主题和章节。

属于 Pipeworx——一个将 AI Agent 连接到 1878+ 个实时数据源的 MCP 网关。这是独立的非官方集成,与上游提供方无关联,未经其认可,也并非由其发布。

工具

  • dc_statute(citation) — 获取一条哥伦比亚特区法典条文的完整现行文本(例如 "22-2101",一级谋杀),以及官方标题、 状态(有效/已废除/已转移/保留)、立法 历史注释、先前编纂版本和交叉引用。
  • dc_search(query?, title?, limit?) — 按主题/关键词搜索所有 条文的官方标题(例如 "eviction notice"、"concealed carry permit"),也可限定在某个 title 中。单独传入 title(不传 query)可列出该标题下的所有条文——即章节列表/浏览 模式。此工具不支持全文搜索——DC Council 不会发布全文索引。

身份验证

无需密钥。

数据源

  • https://raw.githubusercontent.com/DCCouncil/law-xml-codified/{branch}/us/dc/council/code/titles/{title}/sections/{citation}.xml — 单条条文的现行 XML(包含标题、正文和注释)。 dc_statute 每次请求都会实时调用此地址,固定使用下文 构建时写入的分支。
  • 同一仓库中的 us/dc/council/code/index.xml 和 titles/{title}/index.xml — 仅包含结构信息(标题/章/副章 标题及条文引注列表,不含条文标题)。仅供 scripts/bake-index.mjs 使用。
  • https://api.github.com/repos/DCCouncil/law-xml-codified/branches — 仅供 scripts/bake-index.mjs 使用,用于解析当前发布 分支(见下文)。

许可——公有领域,以及为何本工具包可以烘焙索引

code.dccouncil.gov 页脚注明:“本网站上的法典和法律均属于 公有领域。” 同一页脚还注明:“请勿抓取。请从 Council 的 GitHub 组织批量下载 HTML 或 XML。” 本工具包严格遵循这项指示——从不访问 code.dccouncil.gov,只使用 DCCouncil/law-xml-codified 中的 raw.githubusercontent.com 内容。公有领域内容加上发布方明确提供的 再分发渠道,意味着从该仓库烘焙条文标题索引无需另行授权(根目录 CLAUDE.md 中的“mirror-needs-grant-proxy-does-not”——属于 许可允许的分支,而不是未明确许可/禁止的分支)。法规文本本身也绝不会被烘焙—— dc_statute 始终在每次调用时实时获取。

默认分支陷阱

GET /repos/DCCouncil/law-xml-codified 返回 default_branch: "publication/2021-10-18"——这是实际的 Git 元数据,停留在 2021 年的 编纂版本上,已经过时五年,尽管该仓库仍在持续发布: 烘焙时存在 406 个分支,最新分支是一个 在数日内更新的 publication/{base-date}.{amendment-date} 日期对。 GitHub 的“默认分支”设置与当前分支无关。 scripts/bake-index.mjs 会列出所有分支(分页,约需 5 次未经身份验证的 请求),并选择字典序最新的名称——这样做是安全的,因为每个名称都是 ISO-8601 日期或由两个日期组成的点分隔形式,因此字符串排序顺序 就是时间顺序。解析出的名称会作为 DC_CODE_BRANCH 烘焙,并用于固定 dc_statute 的实时获取分支。

Section XML 结构

简短的 section 是一个扁平的 <text> 元素;包含字母或数字小节的 section 则会嵌套 <para> 元素,每个元素都带有自己的 <num>(“(a)”)和 <text>,并可重复嵌套——有时还会再深入嵌套一层。内容为“Repealed”(或 Reserved/Transferred)的 reason 元素表示一个非实质性占位条文,其正文文本字面上为“Repealed.”——此类信息会作为 disposition 返回,而不是留给调用方自行推断。末尾的 annotations 块(History、Prior Codifications、Cross References、Editor's Notes)会从正文文本遍历中排除,并作为单独的分组字段返回。

有一个值得了解的解析陷阱:num 或 heading 元素可能包含嵌套的内联元素(例如,Title 7 Chapter 2B 的章编号在其自身的 num 元素内嵌有生效日期注释标签)——严格禁止嵌套标签的正则表达式会悄悄丢弃该章编号,而不会报错。scripts/bake-index.mjs 会剥除任何嵌套标签的内容,而不是假设 num/heading 始终不含标签。

功能——两项可用,两项不可用

  • 引文查询——dc_statute。根据引文直接构造 URL;无需查询索引(title 是引文中第一个 - 之前的前缀)。
  • 主题/章节搜索——dc_search,仅搜索官方标题(见下文)。匹配 24,198 个 section 的真实标题,每次运行 scripts/bake-index.mjs 时烘焙一次——有关为何无法避免逐个 section 获取,请参阅脚本头部说明(与 South Dakota 或 Oklahoma 的同类工具不同,索引树不包含条文标题)。
  • 修正/制定历史——部分可用。每个修订过的 section 的 annotations 块都包含一个或多个 type="History" 条目,列出制定或修正该条文的 Act;dc_statute 会将这些作为 history 返回。没有独立于这些引文的单一规范“生效日期”字段。
  • 历史版本(修正前的文本)——不可用。DCCouncil/law-xml-codified 仅发布当前编纂后的文本,没有逐次修订的存档,也没有返回旧版本文本的端点。

刷新流程

DC Council 大约每隔几天发布一个新的修正分支,每年发布几次新的基础编纂版本。当调用方的 index_live_mismatch 或过时的 data_as_of 表明烘焙后的索引落后于在线分支时,重新运行 node scripts/bake-index.mjs > src/dc-index-data.ts——工具包中的其他内容无需更改;dc_statute 始终会实时获取 section 文本,并固定到最近一次烘焙时解析出的分支。此流程没有定时工作流(与此系列中的所有同类州法典工具包一样),需要手动重新运行。

快速开始

添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):

{
  "mcpServers": {
    "dc-code": {
      "url": "https://gateway.pipeworx.io/dc-code/mcp"
    }
  }
}
此端点实际提供的内容

https://gateway.pipeworx.io/dc-code/mcp 上的 tools/list 会返回上表中的工具,以及 Pipeworx 共享元工具——ask_pipeworx、 discover_tools、search_within、remember/recall 和其余整个网关通用的工具集。因此,你看到的工具数量会多于表格中的数量:目前,单个工具包端点除了列出该工具包自己的工具,还会列出大约 30 个共享工具。连接的 initialize 响应会说明其确切范围,是当天情况的权威依据。

这是有意设计的,并非意外的多路复用。元工具让受限范围的连接也能回答此工具包未涵盖的问题——通过 ask_pipeworx 在整个目录中进行路由——无需再添加第二个 MCP 服务。目前无法挂载不含这些元工具的工具包端点;如果额外的架构定义占用的上下文超过了路由带来的价值,请只连接一次完整网关,而不要连接多个工具包端点。

也可以连接完整的 Pipeworx 网关,直接列出每个工具包的工具,而不仅仅是当前工具包的工具:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://gateway.pipeworx.io/mcp"
    }
  }
}

两个 URL 都连接到同一个网关和同一组 1878+ 个数据源。唯一的区别是哪个工具包的工具会被直接列出;从任一端点都可以通过 ask_pipeworx 访问所有工具。

没有 MCP 客户端?通过 HTTP 调用

curl -X POST https://gateway.pipeworx.io/v1/tools/dc_statute \
  -H 'Content-Type: application/json' \
  -d '{"citation":"22-2101"}'

首次调用无需账户。查看任意工具:GET https://gateway.pipeworx.io/v1/tools/dc_statute。查找工具:使用 {"query":"..."} 调用 POST https://gateway.pipeworx.io/v1/tools/search_packs。

独立运行(无需网关账户)

此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经由网关:

{
  "mcpServers": {
    "dc-code": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-dc-code"]
    }
  }
}

也可以直接运行,以确认它能启动:

npx -y @pipeworx/mcp-dc-code

它通过 stdin/stdout 使用 MCP,并针对仅此工具包的工具响应 initialize/tools/list/tools/call——不包含上述网关连接所添加的任何共享元工具。源代码相同,工具相同,但没有 ask_pipeworx 路由。

搭配 ask_pipeworx 使用

除了直接调用工具,你还可以用通俗易懂的英语提问——上面的工具包端点和完整网关都支持此功能:

ask_pipeworx({ question: "your question about Dc Code data" })

网关会选择合适的工具并自动填入参数。

更多信息

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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