关于 Dc Code
Dc Code 是面向法律研究者及应用开发者的华盛顿特区法规 MCP 服务,可按条文编号获取现行全文,也可按官方标题搜索或浏览章节。条文文本按请求实时获取,并附有状态及立法注释。
主要功能
- 01按引文查询法规全文
- 02按官方标题搜索主题
- 03按标题浏览章节条目
- 04返回条文状态与历史注释
适用场景
- 01核查特定法规条文及状态
- 02查找涉及某主题的法规标题
- 03浏览某一法规标题下的章节
MCP 相关
向 MCP 客户端提供法规查询和搜索工具;可通过 Pipeworx 网关连接,也可作为本地 stdio MCP 服务运行。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gateway.pipeworx.io/dc-code/mcpclaude mcp add --transport http pipeworx-io-dc-code https://gateway.pipeworx.io/dc-code/mcp{"mcpServers":{"pipeworx-io-dc-code":{"type":"http","url":"https://gateway.pipeworx.io/dc-code/mcp"}}}在 Cursor 中打开{"servers":{"pipeworx-io-dc-code":{"type":"http","url":"https://gateway.pipeworx.io/dc-code/mcp"}}}在 VS Code 中打开{"mcpServers":{"pipeworx-io-dc-code":{"type":"http","url":"https://gateway.pipeworx.io/dc-code/mcp"}}}{"mcpServers":{"pipeworx-io-dc-code":{"serverUrl":"https://gateway.pipeworx.io/dc-code/mcp"}}}命令在终端中运行;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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。