关于 South Dakota Code
South Dakota Code 为法律研究者和开发者提供 South Dakota 法规的实时条文查询,并可按官方标题关键词搜索。来源提供时,还会单独返回制定和修订历史;不提供历史版本文本。
主要功能
- 01按引文实时查询法规全文
- 02搜索官方条文及章节标题
- 03提供制定和修订历史
- 04返回废止状态及处置文本
适用场景
- 01查询 South Dakota 法规条文
- 02按主题或关键词查找规定
- 03查看条文列出的修订历史
MCP 相关
通过 MCP 工具 `sd_statute` 和 `sd_search` 提供法规查询。可作为本地 stdio MCP 服务运行,也可通过 Pipeworx 网关连接。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gateway.pipeworx.io/south-dakota-code/mcpclaude mcp add --transport http pipeworx-io-south-dakota-code https://gateway.pipeworx.io/south-dakota-code/mcp{"mcpServers":{"pipeworx-io-south-dakota-code":{"type":"http","url":"https://gateway.pipeworx.io/south-dakota-code/mcp"}}}在 Cursor 中打开{"servers":{"pipeworx-io-south-dakota-code":{"type":"http","url":"https://gateway.pipeworx.io/south-dakota-code/mcp"}}}在 VS Code 中打开{"mcpServers":{"pipeworx-io-south-dakota-code":{"type":"http","url":"https://gateway.pipeworx.io/south-dakota-code/mcp"}}}{"mcpServers":{"pipeworx-io-south-dakota-code":{"serverUrl":"https://gateway.pipeworx.io/south-dakota-code/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
@pipeworx/south-dakota-code
南达科他州编纂法典(南达科他州州法)——按引文获取完整条文,并根据官方条文标题进行主题/关键词搜索。
属于 Pipeworx 的一部分——一个将 AI Agent 连接到 1784+ 个实时数据源的 MCP 网关。这是独立的非官方集成,与上游提供方无关联、未获其认可,也非由其发布。
工具
sd_statute(citation)— 获取一条南达科他州编纂法典(SDCL)条文的现行完整文本(例如"22-16-4",一级谋杀),并附官方条文标题、 章节/标题上下文,以及在该条文包含时列出制定或修订该条文的每项州议会会期法案的 “Source:” 行;该内容会拆分到history中。sd_search(query, limit?)— 在立法机构官方条文标题和章节标题中搜索主题/关键词,覆盖全部 71 个标题(例如"landlord"、"concealed pistol permit")。不支持全文搜索——南达科他州并未发布全文搜索。
身份验证
无需密钥。
数据源
https://sdlegislature.gov/api/Statutes/Statute/{citation}— 以 JSON 格式获取某条条文 (或章节或标题)的现行文本,其中包含Html字段。 对于符合条文格式的引文,sd_statute会在每次请求时实时调用此接口。https://sdlegislature.gov/api/Statutes/Title— 全部 71 个标题的列表。 仅供scripts/bake-index.mjs使用,以驱动下方按标题逐一获取数据的操作。
功能 — 三项可用,一项不可用
南达科他州官方出版物支持:
- 按引文查找 —
sd_statute。 - 主题/关键词搜索 —
sd_search,仅搜索条文标题(见下文)。 - 修订/制定历史 — 部分可用。现行条文的文本末尾会附有一行
“Source: SDC 1939, § 13.2007 (1); SL 1979, ch
160, § 2; ...”,列出制定或修订该条文的每项州议会会期法案
(已通过
22-16-4实时验证)。sd_statute会将其拆分到history中,而不是仅将其保留在text内。已废止/转移的条文会返回一行处置说明 (例如:“22-16-9. Repealed by SL 2005, ch 120, § 158, eff. July 1, 2006.”),放在disposition_text中;同时会根据 API 自身的标记读取repealed: true。 - 历史版本(修订前的文本)——不可用。sdlegislature.gov 仅发布当前在线版本:没有 按年份划分的存档,没有“查看截至某日”的日期选择器,也没有返回先前版本文本的接口(已检查网站自身的 JS bundle,确认不存在)。 Source: 行会说明条文何时、由哪项州议会会期法案修订,但不会返回修订前的文本。
来源与结构——触碰解析器前请先阅读
sdlegislature.gov 是一个 Vue 单页应用。8 月的州法调查
(docs/state-law-probe.md)正确指出 HTML 外壳不包含任何法规——只是调查
止步于更外层。SPA 本身由 /api/Statutes/ 下的无需密钥的公开 JSON API
提供数据(通过在网站自己的 JS 包中搜索 /api/Statutes 发现——没有对应的文档
页面):GET /api/Statutes/Statute/{citation} 接受条文引用
("22-16-4")、章节引用("22-16")或标题编号("22"),并
返回一个 JSON 信封,其 Html 字段是该层级的内容——条文返回完整文本,
章节或标题则返回纯目录列表(章节标题 + 每个条文的引用和标题,不含正文)。
未观察到身份验证、密钥或速率限制。
sd_statute 只会在每次请求时实时调用条文形式——绝不预先烘焙。
sd_search 需要结构化索引(每个引用 + 其官方标题)用于搜索,但没有搜索端点,
也没有像 North Dakota 发布的那种单一的“全法典”列表页面。要构建索引,
唯一方法是对 71 个标题逐一调用标题级形式,并解析其目录 Html 文本块。
scripts/bake-index.mjs 会离线执行一次,并将结果写入 src/sd-index-data.ts——
绝不会在请求时执行。
解析器为何处理扁平化文本,而不是 HTML 锚点。 每个标题的 Html 文本块由
几十年间分别编写并导出为 HTML 的章节拼接而成,因此锚点标记并不统一:有些
章节将条文引用链接为现代锚点(sdlegislature.gov/Statutes?Statute=X),
另一些则使用旧式 DisplayStatute.aspx?Type=Statute&Statute=X 锚点形式,
而废止条目会在真正的标题前立即重复显示其自身引用作为文本标签。与其逐一
处理各种锚点形式,烘焙脚本会剥除所有标签(也会丢弃 style/script 元素的内容——
该脚本的第一版曾将原始 CSS 文本泄漏到标题中,因为这些内容位于标签之间,
而非标签内部),然后扫描扁平化文本,查找以已知标题编号开头的引用格式词元。
这种方式与标记无关:它只依赖网站已经以纯文本形式显示的引用字符串,且在
各个时期的文档中都保持一致。完整细节请参阅脚本自身的头部注释,其中包括
如何处理重复词元伪影和罕见的真实重复引用(出现在不到 5% 的条文中)——
绝不会悄悄处理,而是始终选择较长的标题,因为此索引仅用于搜索排名,
sd_statute 始终会实时重新获取实际文本。
刷新方式: 南达科他州重新编纂法典时运行
node scripts/bake-index.mjs > src/sd-index-data.ts(每次立法会期结束后,
都会将新的会期法纳入其中)。工具包中的其他内容无需更改。
已知限制
sd_search匹配官方标题(条文和章节名称),而非完整的法规正文—— 南达科他州不提供全文搜索,本工具包也不声称提供。工具描述和每条“无匹配” 响应中都会说明这一点。- 如果烘焙索引中存在某条引用,但实时 API 返回 404(例如自上次烘焙索引后
条文已重新编号或废止),则会明确返回
reason: "index_live_mismatch", 绝不会只返回没有解释的found: false。
快速开始
添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):
{
"mcpServers": {
"south-dakota-code": {
"url": "https://gateway.pipeworx.io/south-dakota-code/mcp"
}
}
}
此端点实际提供的内容
https://gateway.pipeworx.io/south-dakota-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 都连接到同一个网关和相同的 1784+ 个数据源。唯一的区别是直接列出哪个工具包的工具;无论连接哪一个,ask_pipeworx 都可以访问所有工具。
没有 MCP 客户端?通过 HTTP 调用
curl -X POST https://gateway.pipeworx.io/v1/tools/sd_statute \
-H 'Content-Type: application/json' \
-d '{"citation":"22-16-4"}'
首次调用无需账户。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/sd_statute。查找工具:使用 {"query":"..."} 向 https://gateway.pipeworx.io/v1/tools/search_packs 发送 POST 请求。
独立运行(无需网关账户)
此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经由网关:
{
"mcpServers": {
"south-dakota-code": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-south-dakota-code"]
}
}
}
或者直接运行它,确认服务能够启动:
npx -y @pipeworx/mcp-south-dakota-code
它通过 stdin/stdout 使用 MCP,并对 initialize/tools/list/tools/call 作出响应,仅提供此工具包的工具——不包含上文网关连接额外提供的任何共享元工具。数据源相同,工具相同,但没有 ask_pipeworx 路由功能。
使用 ask_pipeworx
你也可以用自然语言提问,而不是直接调用工具——此功能既适用于上文的工具包端点,也适用于完整网关:
ask_pipeworx({ question: "your question about South Dakota Code data" })
网关会自动选择合适的工具并填写参数。
更多信息
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。