mcpField
U
uk-legislation-mcp-server

uk-legislation-mcp-server

远程服务
github.com/cyanheads法律与政务23 天前更新
代码仓库

关于 uk-legislation-mcp-server

面向法律研究者和政策分析人员的 UK 法律资料 MCP 服务,可按日期检索和阅读 legislation.gov.uk 法规,并解析引文、查看修订及追踪发布记录。

主要功能

  1. 01按文本、标题和年份检索法规
  2. 02按现行、制定时或指定日期阅读
  3. 03解析法规引文及条款位置
  4. 04查询法规修订与影响记录
  5. 05追踪法规发布变更

适用场景

  1. 01核对法规在历史日期的文本
  2. 02从引文快速定位法规条款
  3. 03分析法规的修订及未生效影响
  4. 04监测指定时间段内的法规发布

MCP 相关

通过 MCP 提供法规检索、阅读、引文解析、修订查询和变更追踪工具,并提供资源查询词汇表的工具。支持 STDIO 和 Streamable HTTP。

配置

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

服务地址https://uk-legislation.caseyjhand.com/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 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npm@cyanheads/uk-legislation-mcp-server0.1.3

工具

6
参数类型必填说明
pageinteger否页码(1–10,000)。
textstring否全文查询。支持 AND/OR、"quoted phrases" 和词干提取。省略则执行标题搜索或列表查询。
yearinteger否日历年份(也适用于按王室纪年编号的 1963 年以前法案)。不能与 year_from/year_to 组合。
as_ofstring否时间点 YYYY-MM-DD:仅返回该日期有效的法律(排除尚未颁布或制定的条目)。省略则查询现行法律。不能与 extent 组合。legislation.gov.uk 尚未记录许多近期条款的条款级适用范围,因此结果为空并不能证明没有条款适用于该地区。
limitinteger否每页结果数(1–50)。
titlestring否必须全部出现在标题中的词语。对于已知简称或引文,uklaw_lookup_citation 可精确查找。
typesarray否类型代码(ukpga、uksi、asp、eur、…)和/或分组(all、primary、secondary、eu-origin、draft)。"all" 涵盖英国及源自 EU 的法律,但不包括草案,并会覆盖其他任何值。uklaw_list_reference topic types 可列出代码。
extentarray否地域适用范围:england、wales、scotland、ni。如果某条法律的任一条款适用于该地区,则该法律匹配。不能与 as_of 组合。legislation.gov.uk 尚未记录许多近期条款的条款级适用范围,因此结果为空并不能证明没有条款适用于该地区。
year_tointeger否范围的最晚日历年份;另一端可省略。
year_frominteger否范围的最早日历年份;另一端可省略。
extent_matchenum否仅与 extent 搭配使用。applicable:条款适用于指定范围内的任何部分;exact:条款仅适用于该范围。applicable | exact

详细介绍

@cyanheads/uk-legislation-mcp-server

通过 MCP 搜索和阅读任意日期的英国法律,解析引文、列出修订,并追踪变更。支持 STDIO 或 Streamable HTTP。

6 个工具

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


概览

legislation.gov.uk 收录的英国成文法:适用于英国、英格兰、苏格兰、威尔士和北爱尔兰的主要立法、次级立法及源自欧盟的立法。解析引文,按文本或标题搜索;阅读当前生效、颁布时或过去某个日期的条文,并追踪修订。无需 API 密钥。

工具
工具描述
uklaw_search_legislation按全文或标题搜索,或按类型和年份列出,并按适用范围和时间点筛选
uklaw_get_document阅读项目或条文的修订版、颁布或制定时的版本,或指定日期的版本,并查看其编辑状态和未应用的效力
uklaw_get_amendments列出针对某项目记录的效力(修订、废止、生效、修改),或由该项目产生的效力
uklaw_track_changes阅读 legislation.gov.uk 的发布日志,查询最长 31 天的时间段
uklaw_lookup_citation将引文、简称或 legislation.gov.uk URI 解析为规范项目和条文
uklaw_list_reference离线解读类型代码、适用范围、版本关键词、注释字母、引文格式及其他词汇

功能参考

uklaw_search_legislation 工具
  • text(全文搜索:AND/OR、“带引号的短语”、词干匹配)和/或 title(每个词都必须出现),也可不提供以上参数,按类型和年份列出;limit 为 1–50(默认 20),并可使用 page
  • 筛选条件:types(代码,如 ukpga、uksi、eur,或分组 all、primary、secondary、eu-origin、draft;默认 all,不包含草案)、year 或 year_from / year_to(1267–2100)、extent(england、wales、scotland、ni)及 extent_match(applicable 或 exact),以及 as_of(YYYY-MM-DD);extent 和 as_of 不能同时使用
  • 每条结果都包含可传给 uklaw_get_document 的 item 路径;has_more 表示还有下一页;标题搜索和列表还会提供 facets(类型计数和最新的 25 个年份)

uklaw_get_document 工具
  • item 为完整路径(ukpga/2018/12、uksi/2019/419、eur/2016/679、王朝纪年 ukpga/Eliz2/3-4/19)或 legislation.gov.uk URI;provision 为路径(section/45/2/f、schedule/2/paragraph/3)或简写形式(s. 45(2)(f)、Sch. 2 para. 3);version 为 current(默认)、enacted(或 made、adopted、created),或 YYYY-MM-DD 日期;language 为 en 或 cy
  • kind 为 full(包含其 annotations 的 Markdown text)、outline(供后续读取的条款路径,每次调用 100 条,由 outline_offset 指定偏移量),或 pdf_only(links.pdf);超过 20,000 个字符的文本,或包含超过 25 个末级条款的项目,会以大纲形式返回(没有更小条款可列出的条款将完整返回,最多 40,000 个字符,超出部分会截断,并附有指向全文的提示);match_text 会列出包含指定词语的项目条款
  • editorial(document_status、outstanding_effects、caveat)和 unapplied_effects(前 20 项,可在项目或条款级别查看)展示修订文本的可依赖程度;version.available 列出可作为 version 传入的版本

uklaw_get_amendments 工具
  • item 可为完整或部分路径(uksi、ukpga/2018);direction 为 affected(默认:对该项目作出的修改)或 affecting(该项目作出的修改);筛选条件包括 counterpart(另一项目的完整或部分路径)、status(all、unapplied、applied;默认 all)和 provision(需要完整项目;每次调用最多扫描 1,500 项效力记录)
  • limit 为 1–100(默认 20),使用 next_cursor 继续查询;每项效力记录都会列出双方及其条款、in_force 日期、applied / outstanding 状态和 notes;total 统计条款筛选前的效力记录数,scan 报告扫描范围
  • 1963 年以前的法案按公历年份查询(ukpga/1925/20),草案未编入索引:两者都会返回 regnal_item / draft_item 错误,需改用其他查询方式

uklaw_track_changes 工具
  • start_date(必填)和 end_date(默认为 start_date),时间范围最多 31 天;筛选条件包括 content_type(legislation、changes、draft、associated-documents)、direction(仅适用于 changes)、category(primary、secondary、eu-origin;仅适用于 legislation 或 associated-documents)、item、new_only 和 event(published、withdrawn)
  • limit 为 1–80(默认 40),使用 next_cursor 继续查询;mode 为 day_walk(按日期从新到旧,每次调用最多发送 4 个上游请求)或 item_log(完整的 item 路径会读取该项目自身的日志,并报告 read_back_to)
  • changes 事件不包含效力详情:可对其 item 调用 uklaw_get_amendments 获取详情

uklaw_lookup_citation 工具
  • 一个最长为 300 个字符的 citation:编号引文、简短标题或 legislation.gov.uk URI,可选择附带条文(格式如下)
  • 返回规范的 item 路径;如果引用了条文,还会返回 provision_found,并根据当前版本进行核验。如果未找到或标题存在歧义,则返回 found: false,并提供 guidance 或最多 20 个 candidates,而非报错
格式示例解析为
按章编号的英国法律2018 c. 12ukpga/2018/12;1963 年以前的法律会按公历年份搜索,并返回王朝纪年候选项
北爱尔兰议会法律2016 c. 5 (N.I.)nia/2016/5
英国法定文书S.I. 2019/419、SI 2019 No. 419、S.I. 2002/808 (W. 89)uksi/2019/419;忽略其他系列编号,威尔士和北爱尔兰的法定文书规范化为 wsi / nisi
苏格兰法定文书S.S.I. 2020/123ssi/2020/123
北爱尔兰法定规则S.R. 2020/12、S.R. 2020 No. 12nisr/2020/12
苏格兰和威尔士的法律与措施2020 asp 13、asp 2020/13、2016 anaw 1、2021 asc 1、2010 nawm 1asp/2020/13、anaw/2016/1、asc/2021/1、mwa/2010/1
欧盟来源的法律Regulation (EU) 2016/679、Regulation (EC) No 1535/2003、Directive 95/46/EC、Decision (EU) 2019/419;也可以在开头注明发布机构(Council Regulation (EC) No 1/2003)eur/2016/679、eur/2003/1535(2015 年以前的编号格式为编号/年份)、eudr/1995/46、eudn/2019/419
定义名称UK GDPReur/2016/679
legislation.gov.uk URIhttps://www.legislation.gov.uk/ukpga/2018/12/section/45拆分为 item、条文和版本
简称Data Protection Act 2018、Human Rights Act 1998 (c. 42)按标题和年份解析;如果标题无法解析,末尾的章编号可用于按编号解析法律

任何格式都可以在末尾附上条文(s. 45(2)(f)、section 45、reg. 5、art. 28(3)、r. 7、r. 3.4、Sch. 2 para. 3、Pt 3),也可以先写条文,再接 "of" 或 "of the":section 45 of the Data Protection Act 2018。uklaw_list_reference 的 citation_formats 主题会返回相同列表。


uklaw_list_reference 工具
  • topic:types、type_groups、extents、versions、document_status、annotation_types、effects、provision_paths、citation_formats、publication_log、coverage 或 attribution
  • 离线运行,不会向 legislation.gov.uk 发送请求;每个条目包含 key、label、description,以及可选的 details

功能

基于 @cyanheads/mcp-ts-core:支持 stdio 和 Streamable HTTP 传输、可插拔身份验证(none / jwt / oauth)、可切换存储(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1),以及结构化日志记录和可选的 OpenTelemetry 跟踪。

legislation.gov.uk 专属功能:

  • 无需密钥即可调用 legislation.gov.uk API 的客户端:文档使用 CLML XML,搜索、效力信息和 Publication Log 使用 Atom 源
  • 遵循 legislation.gov.uk 的合理使用政策:每个请求都附带可识别客户端的 User-Agent;全进程共用一个队列,以固定间隔发起请求(默认间隔为 1 秒),并采用适用于此服务的 robots.txt 中更长的爬取延迟(最长 60 秒);每次工具调用最多向上游发出 4 个请求,并设有 45 秒的截止时间
  • 全进程共用响应缓存,缓存时长取自上游的 max-age(最长 1 小时),并通过 If-Modified-Since 重新验证
  • 将引证简写(s. 45(2)(f)、reg. 5、Sch. 2 para. 3)规范化为条款路径;支持 1963 年以前的君主纪年路径以及威尔士语文本(language: "cy")
  • 仅提供 PDF 条目的链接,绝不获取其内容,因为 legislation.gov.uk 的 robots.txt 有此要求

便于 Agent 使用的输出:

  • 每次读取文档时,都会在文本中返回其编辑状态(editorial.document_status、caveat、outstanding_effects)以及影响该文档的 unapplied_effects,以便调用方判断修订文本是否尚未反映最新修正
  • uklaw_lookup_citation 未找到匹配项时,会返回 found: false,并附带 guidance 或 candidates,而非报错
  • 每个工具的类型化错误原因(provision_not_found、version_not_found、regnal_item,……)都附有恢复提示,指出下一步应调用什么
  • 每个返回立法内容的响应都包含 attribution,其中列出内容所需的许可信息(参见许可证)
  • 将上游文本视为数据:立法文本、注释和效力说明在 content[] 中以引用块形式呈现,内嵌值会转义,URI 会进行百分号编码

快速开始

公共托管实例

公共实例位于 https://uk-legislation.caseyjhand.com/mcp,无需安装即可使用。该实例提供 Streamable HTTP;每个客户端的配置格式各不相同。

Claude Code 配置:

claude mcp add --transport http uk-legislation-mcp-server https://uk-legislation.caseyjhand.com/mcp

Cline 配置(cline_mcp_settings.json):

{
  "mcpServers": {
    "uk-legislation-mcp-server": {
      "type": "streamableHttp",
      "url": "https://uk-legislation.caseyjhand.com/mcp"
    }
  }
}

Cursor 配置(mcp.json):

{
  "mcpServers": {
    "uk-legislation-mcp-server": {
      "url": "https://uk-legislation.caseyjhand.com/mcp"
    }
  }
}

Claude Desktop 可在 Settings → Connectors 下添加远程服务。

托管实例的所有调用方共用一个请求队列,并按照合理使用政策,将 legislation.gov.uk 请求的发送频率限制为每秒 1 个。如需持续使用,请运行自己的实例。

自托管 / 本地运行

将以下内容添加到 MCP 客户端配置文件中。

{
  "mcpServers": {
    "uk-legislation-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/uk-legislation-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

或者使用 npx(无需 Bun):

{
  "mcpServers": {
    "uk-legislation-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/uk-legislation-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

或者使用 Docker:

{
  "mcpServers": {
    "uk-legislation-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/uk-legislation-mcp-server:latest"]
    }
  }
}

要使用 Streamable HTTP,请设置传输方式并启动服务:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp
前置条件
  • Bun v1.4.0 或更高版本(或 Node.js v24+)。
  • 无需 API 密钥或账户。legislation.gov.uk 的合理使用政策要求非浏览器客户端标明身份,因此运行共享部署时,请将 UK_LEGISLATION_CONTACT 设置为电子邮箱或 URL。
安装
  1. 克隆代码库:
git clone https://github.com/cyanheads/uk-legislation-mcp-server.git
  1. 进入目录:
cd uk-legislation-mcp-server
  1. 安装依赖项:
bun install
  1. 配置环境:
cp .env.example .env
# edit .env and set UK_LEGISLATION_CONTACT as needed

配置

变量说明默认值
UK_LEGISLATION_CONTACT附加到 User-Agent 的电子邮件地址或 URL,以便 legislation.gov.uk 联系运营方。在共享部署中设置此项。无
UK_LEGISLATION_MIN_REQUEST_GAP_MS进程内上游请求开始之间的最小间隔,单位为毫秒;至少为 250。如果此服务器的 User-Agent 对应的 robots.txt 爬取延迟更长,则会提高此值。使用同一 User-Agent 的多个副本会分摊公平使用限额,因此至少应设置为 250 毫秒 × 副本数。1000
UK_LEGISLATION_CACHE_MAX_MB响应缓存大小上限,单位为 MB(8–1024)。64
MCP_TRANSPORT_TYPE传输方式:stdio 或 http。stdio
MCP_HTTP_PORTHTTP 服务端口。3010
MCP_HTTP_HOSTHTTP 服务主机。127.0.0.1
MCP_SESSION_MODEHTTP 会话模式:stateless、stateful 或 auto。.env.example 和 Docker 镜像设置为 stateless。auto
MCP_AUTH_MODE身份验证方式:none、jwt 或 oauth。none
MCP_LOG_LEVEL日志级别(debug、info、warning、error 等)。info
LOGS_DIR日志文件目录(仅限 Node.js)。<app-root>/logs
OTEL_ENABLED启用 OpenTelemetry。false

完整的可选覆盖项列表,请参阅 .env.example。

运行服务

本地开发
  • 构建并运行生产版本:

    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:http
    # or
    bun run start:stdio
    
  • 运行检查和测试:

    bun run devcheck  # Lints, formats, type-checks, and more
    bun run test      # Runs the test suite
    

项目结构

目录用途
src/index.tscreateApp() 入口:注册六个工具;setup() 读取 robots.txt,并构建节流器、响应缓存、客户端和服务。
src/config使用 Zod 解析和验证服务专用的环境变量。
src/mcp-server/tools/definitions工具定义(*.tool.ts),以及共用的输入/输出架构和 Markdown 渲染辅助工具。
src/services/legislationlegislation.gov.uk 服务层:HTTP 客户端、响应缓存、引文和条款路径解析、CLML 和 Atom 解析器、参考数据、署名信息。
tests/与 src/ 结构对应的单元测试,使用录制的 CLML 和 Atom 样例运行。

开发指南

开发指南和架构规则请参阅 CLAUDE.md。简要说明:

  • 处理程序抛出异常,框架负责捕获——工具逻辑中不要使用 try/catch
  • 使用 ctx.log 记录日志;对于预期失败,使用 ctx.fail 并声明原因
  • 在 src/mcp-server/tools/definitions/index.ts 的 allToolDefinitions 中注册新工具
  • 封装外部 API 调用:验证原始数据 → 规范化为领域类型 → 返回输出架构;绝不伪造缺失字段

贡献

欢迎提交问题。提交前请运行检查和测试:

bun run devcheck
bun run test

许可证

本项目采用 Apache 2.0 许可证。详情请参阅 LICENSE 文件。

legislation.gov.uk 上的立法内容 © Crown,享有数据库权利,并根据 Open Government Licence v3.0 授权。源自欧盟的条目还注明 European Union(© European Union,1998-2020;根据 Commission Decision 2011/833/EU 重新使用);由 Westlaw UK 提供给 legislation.gov.uk 的 1987 年以前的法定文书则注明 Westlaw。每个返回立法内容的工具都会在 attribution 中列出适用于其内容的行。

评论

支持 Markdown

第一次接触 MCP?

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

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