Fedlex Connector

ch.fedlex-connector由 fedlex-connector.ch 发布官方发布者v1.0.0更新于 Oct 24, 2026

Search Swiss federal legislation: laws, articles, amendments via the Fedlex SPARQL endpoint.

已验证Streamable HTTP可网页运行网页搜索与抓取知识与记忆

概览

AI 生成的概览

远程 MCP 服务器,让助手检索并读取 Fedlex 上的瑞士联邦法律官方文本,包括法律、条文与修订日期。

可以做什么
  • 按标题检索分类汇编(RS/SR)中的法律,找到 RS 编号
  • 获取整部法律的合并文本或指定编/章,大部头法律自动分页
  • 按 RS 编号和确切条文号获取单条条文,可指定历史合并日期
  • 列出某部法律的合并版本日期与近期修订
  • 结果支持德语、法语和意大利语
适用场景
适合回答瑞士联邦法律问题时,希望直接从 Fedlex 官方来源取回条文,而不是依赖模型记忆或普通网页(Fedlex 前端为 JavaScript 单页应用,普通网页工具难以渲染)。也适合查询某部法律在特定日期生效的版本。
运行要求
远程 MCP 端点;未声明需要安装包、账号、API 密钥或环境变量。服务器自身会访问 Fedlex 的公开 SPARQL 端点和 HTML 文件库,因此需要能访问这些瑞士政府服务的网络。
安装前请注意
仅做只读查询,除向 Fedlex 发起请求外不写入数据或向第三方发送数据。范围仅限分类汇编中的联邦法律,州法、联邦公报和法院判决不在范围内,不支持罗曼什语。整部法律文本只提供现行版本,HTML 主要覆盖 2021 年以后的合并版本。返回内容会提示只有联邦 Chancellery 发布的官方汇编具有法律权威性。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Fedlex Connector,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/ch.fedlex-connector%2Ffedlex-connector/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "fedlex-connector": {
      "type": "http",
      "url": "https://mcp.fedlex-connector.ch/"
    }
  }
}

README

Fedlex Connector

Access Swiss Federal Law from Claude

A connector that gives Claude direct access to the official text of Swiss federal legislation on Fedlex, built on the Model Context Protocol (MCP). Covers all acts in the Classified Compilation (SR, RS) in German, French, and Italian.


Why This Exists

Swiss federal law is published exclusively on Fedlex, but the frontend is a JavaScript single-page application that Claude's built-in web tools cannot render. However, Fedlex exposes two machine-readable interfaces that work without JavaScript:

  • A SPARQL endpoint (fedlex.data.admin.ch/sparqlendpoint) for metadata queries
  • A static HTML filestore (fedlex.admin.ch/filestore/...) serving consolidated legislation

This MCP server bridges the gap: it queries SPARQL for metadata (RS numbers, consolidation dates, amendment history), fetches and parses the HTML for the actual legislative text, and returns it to Claude in a structured format. No proprietary database, no cache -- just a stateless bridge to Fedlex's open data infrastructure.


Setup

The server supports two transports: stdio for local use (Claude Code, Claude Desktop) and HTTP for remote use (claude.ai). You can use one or both.

The server is hosted at:

https://mcp.fedlex-connector.ch

claude.ai / Claude Desktop:

  1. Go to claude.ai
  2. Click Customize (Anpassen / Personnaliser / Personalizza) in the sidebar
  3. Click Connectors
  4. Click + → Add connector
  5. Click Add custom connector and paste the URL: https://mcp.fedlex-connector.ch

We suggest naming it "Fedlex Connector".

Claude Code:

bash
claude mcp add --transport http fedlex https://mcp.fedlex-connector.ch

Once connected, Claude can answer questions like "What does art. 1 of the Swiss Civil Code say?" by pulling the text directly from Fedlex.

Deploying Your Own Instance

The server includes a Dockerfile for deploying to any cloud platform that supports Docker containers (Railway, Fly.io, Render, etc.). Set the PORT environment variable and the server runs in HTTP mode. Without PORT, it runs in stdio mode for local use.

Your MCP endpoint will be at https://your-domain. Verify with:

bash
curl https://your-domain/health

Tools

search_by_title

Search Swiss federal legislation titles in the Classified Compilation (RS/SR). Returns only acts currently in force.

ParameterTypeRequiredDescription
querystringYesKeywords to match against act titles
languagefr de itNoLanguage for results (default: de)

Example: Find the RS number for the data protection act.

search_by_title(query="protection des données")→ RS 235.1 — Loi fédérale sur la protection des données (LPD)

get_article

Retrieve the official consolidated text of a specific article.

ParameterTypeRequiredDescription
rs_numberstringYesRS number (e.g. "210" for CC, "220" for CO)
articlestringYesArticle number (e.g. "3", "28a", "260bis")
languagefr de itNoLanguage (default: de)
datestringNoConsolidation date (YYYY-MM-DD); defaults to latest

Example: Retrieve art. 1 CC in German.

get_article(rs_number="210", article="1", language="de")→ Art. 1: Das Gesetz findet auf alle Rechtsfragen Anwendung...

get_law_text

Retrieve the full text of an act or a specific title/chapter. This is the primary tool for reading and analysing legislation from the source.

ParameterTypeRequiredDescription
rs_numberstringYesRS number
sectionstringNoLimit to a title/chapter (e.g. "Titre huitième")
languagefr de itNoLanguage (default: de)
pagenumberNoPage for paginated results (default: 1)

Large acts are paginated automatically (splitting at article boundaries). Each response includes the total page count.

Example: Retrieve Swiss tenancy law (CO, Title 8).

get_law_text(rs_number="220", section="Titre huitième", language="fr")→ [Full text of tenancy provisions, art. 253 onwards]

list_amendments

List recent amendments (consolidation versions) for a given act.

ParameterTypeRequiredDescription
rs_numberstringYesRS number
sincestringNoStart date, YYYY-MM-DD (default: 1 year ago)
languagefr de itNoLanguage for titles (default: de)

Example: Check recent changes to the CO.

list_amendments(rs_number="220", since="2024-01-01")→ 2026-01-01 — Version in force from 2026-01-01 (current)  2025-10-01 — Version in force from 2025-10-01 to 2025-12-31  ...

How It Works

Claude  ──MCP──>  Fedlex Connector  ──SPARQL──>  fedlex.data.admin.ch                                      ──HTTP───>   fedlex.admin.ch/filestore/...

Metadata path (SPARQL): The server queries Fedlex's SPARQL endpoint (JOLux ontology) to resolve RS numbers to internal URIs, find the latest consolidation date, discover HTML file URLs, and list amendment history.

Text path (HTML filestore): Once the server knows which HTML file(s) to fetch, it retrieves them from the static filestore, parses the DOM with Cheerio, and extracts the requested article, section, or full text. Large acts (like the CO with 1,100+ articles) are split across multiple HTML files which the server discovers and stitches together automatically.

Data flow for a typical request:

  1. Claude calls get_article(rs_number="210", article="3")
  2. Server queries SPARQL: RS 210 → ConsolidationAbstract URI
  3. Server queries SPARQL: latest consolidation date for that URI
  4. Server queries SPARQL: HTML filestore URL(s) for that consolidation
  5. Server fetches HTML, parses it, extracts art. 3
  6. Server returns the article text to Claude with consolidation date and legal caveat

Every response includes a footer noting that only the Official Compilation (RO/AS) published by the Federal Chancellery is legally authoritative.


Development

Project Structure

src/  index.ts       # Entry point: picks stdio or HTTP transport based on PORT env var  server.ts      # MCP server factory: tool definitions and request handlers  types.ts       # TypeScript interfaces, error types, constants  sparql.ts      # SPARQL endpoint queries (metadata, RS resolution, amendments)  filestore.ts   # HTML fetching, parsing, article/section extraction, paginationbuild/           # Compiled JavaScript (generated by tsc)Dockerfile       # Container build for cloud deployment

Scripts

CommandDescription
npm run buildCompile TypeScript to ./build
npm startRun the MCP server (stdio mode)
npm run start:httpRun locally in HTTP mode on port 3000
npm run devWatch mode (auto-recompile on changes)

Dependencies

PackagePurpose
@modelcontextprotocol/sdkMCP server SDK (tool registration, stdio transport)
cheerioHTML parsing for extracting legislative text

Error Codes

The server returns structured errors with codes and actionable suggestions:

CodeMeaning
RS_NOT_FOUNDRS number not found in the SPARQL graph
ARTICLE_NOT_FOUNDArticle does not exist in the act (with nearby IDs listed)
SPARQL_UNAVAILABLESPARQL endpoint is down or returned an error
FILESTORE_ERRORHTML file not found or fetch failed
INVALID_INPUTMissing or malformed parameters
PARSE_ERRORHTML parsing failure

Known Limitations

  • Full act historical versions: get_law_text only retrieves full acts as they are currently in force and does not return past versions. For historical text, use get_article, which supports a date parameter.

  • HTML availability: Fedlex generally only provides HTML for consolidations from 2021 onwards. Older versions are only available as PDF or DOC on the Fedlex platform. The server returns a clear error with guidance when HTML is unavailable for a requested date.

  • Rate limiting: The SPARQL endpoint and filestore are public Swiss government services. The server limits itself to 10 requests/second per endpoint to be a responsible client.

  • Section filtering: The section parameter in get_law_text uses heading-text matching which works well for standard section names but may not match unusual headings. When filtering fails, the full act text is returned with a note.

  • Language coverage: Supports French (FR), German (DE), and Italian (IT). Romansch is not available.

  • Scope: Covers federal law in the Classified Compilation only. Cantonal law, the Federal Gazette, and court decisions are out of scope.


License

MIT

来源:README.md,提交 810e953

工具

4

search_by_title

Search Swiss federal legislation titles in the Classified Compilation (RS/SR) on Fedlex. Use to find the RS number of a law when you know its name but not its number. Searches titles only, not article content. Returns only acts currently in force.

输入参数query必填language

get_article

Retrieve a single article when you already know the EXACT article number (e.g. from a cross-reference). Do NOT call this tool repeatedly to search for provisions — use get_law_text instead to fetch the full act or a section and locate relevant articles in the text.

输入参数datearticle必填languagers_number必填

get_law_text

Retrieve the official consolidated text of a Swiss federal act (or a specific title/chapter) directly from Fedlex (fedlex.admin.ch). This is the PRIMARY tool for answering Swiss law questions — always start here. Fetch the full act or a specific section, then locate relevant provisions in the returned text. Prefer this over get_article unless you already know the exact article number.

输入参数pagesectionlanguagers_number必填

list_amendments

List consolidation version dates for a Swiss federal act. Returns the dates each consolidated version took effect.

输入参数sincelanguagers_number必填

版本历史

1
  1. v1.0.0最新Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分