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 分