Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Swiss federal law, consultations (Fedlex) & TERMDAT terminology (LINDAS) via SPARQL
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"fedlex": {
"command": "uvx",
"args": [
"fedlex-mcp"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add fedlex -- uvx fedlex-mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"fedlex": {
"command": "uvx",
"args": [
"fedlex-mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"fedlex": {
"type": "stdio",
"command": "uvx",
"args": [
"fedlex-mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub malkreide ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (2.1.0) เข้า registry 41 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Agent Data Tools: Utilities
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
103 tools: JSON repair, CSV, hashes, cron, dates, units, validators. 25 free calls.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
:switzerland: Part of the [Swiss Public Data MCP Portfolio](https://github.com/malkreide)
MCP Server for Swiss federal law, consultations & official terminology — search the SR, monitor consultation deadlines, and translate terms across the national languages via Claude Desktop or Claude.ai
:de: Deutsche Version
fedlex-mcp connects AI assistants (Claude) with three official Swiss SPARQL data sources:
jolux:Consultation) — the pre-parliamentary phase in which anyone can comment on a draft.All three are SPARQL-based, which is exactly why they live in one server rather than three: no new technology stack, only new queries against known patterns.
Metaphor: USB-C for federal law. *Fedlex tells you what you have to respond to. TERMDAT tells you what it is called in the other national languages.*
*"Which education-related consultations are currently open, until when does the deadline run, which office is in charge — and what are the key technical terms in French and Italian for the response?"*
A single conversation chains three tools across two endpoints:
fedlex_get_open_consultations(topic="education")
→ fedlex_get_consultation(event_id="proj/2026/71/cons_1") → termdat_lookup_term(term="Volksschule", target_languages=["fr","it"])
Every open consultation carries deadline, days_remaining (computed at request time in Europe/Zurich, 0 = deadline is today) and a derived status — an expired consultation never shows up as running. Fedlex says *what* you must respond to and *by when*; TERMDAT says *how to name it* in the other national languages.
Use `topic="education"`, not `keyword="Volksschule"`. Fedlex consultations
have no subject taxonomy — filtering is free-text over the title, and the word
"Volksschule" appears in zero consultation titles. The
topicfilter
expands to a disclosed keyword union (Bildung, Schule, Berufsbildung,
Hochschule, …) and reports exactly which terms it searched.
Run via uv's uvx — no clone or manual install needed. Add to your MCP client config (mcpServers for Claude Desktop, Cursor and Windsurf; use a top-level servers key for VS Code in .vscode/mcp.json):
{
"mcpServers": { "fedlex-mcp": { "command": "uvx", "args": [ "fedlex-mcp" ] } } }
<!-- END GENERATED: install -->
# Clone the repository
git clone https://github.com/malkreide/fedlex-mcp.git cd fedlex-mcp
pip install -e .
uv pip install -e .
Or with uvx (no permanent installation):
uvx fedlex-mcp
# stdio (for Claude Desktop)
python -m fedlex_mcp.server
python -m fedlex_mcp.server --http --port 8000
Try it immediately in Claude Desktop:
*"Show me all valid federal laws on vocational training"*
*"What does the Data Protection Act say? Is it still in force?"*
*"Which consultations on education are open right now, and until when?"*
*"What is 'Volksschule' called in French and Italian in official terminology?"*
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": { "fedlex": { "command": "python", "args": ["-m", "fedlex_mcp.server"] } } }
Or with uvx:
{
"mcpServers": { "fedlex": { "command": "uvx", "args": ["fedlex-mcp"] } } }
Config file locations:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonFor use via claude.ai in the browser (e.g. on managed workstations without local software):
Render.com (recommended):
python -m fedlex_mcp.server --http --port 8000https://your-app.onrender.com/sse*"stdio for the developer laptop, SSE for the browser."*
| # | Tool | Source | Description |
|---|---|---|---|
| 1 | fedlex_search_laws | Fedlex | Search the Systematic Compilation (SR) by keyword in title |
| 2 | fedlex_get_law_by_sr | Fedlex | Get a law by its SR number (e.g. 235.1 = Data Protection Act) |
| 3 | fedlex_get_recent_publications | Fedlex | Latest publications from the Official Compilation (AS) |
| 4 | fedlex_get_upcoming_changes | Fedlex | Laws entering into force soon (legal monitoring) |
| 5 | fedlex_search_gazette | Fedlex | Search the Federal Gazette (BBl) |
| 6 | fedlex_get_law_history | Fedlex | All versions of a law (version history) |
| 7 | fedlex_search_treaties | Fedlex | International treaties (SR numbers starting with 0.) |
| 8 | fedlex_get_open_consultations | Fedlex | Deadline monitoring — open consultations (eventEndDate >= today, Europe/Zurich); each with days_remaining + derived status, sorted by shortest deadline; optional topic/keyword |
| 9 | fedlex_search_consultations | Fedlex | Full-text search over consultation title/description, with filters (topic, status, deadline range, office) |
| 10 | fedlex_get_consultation | Fedlex | Detail for one eventId: deadline, days_remaining, office, derived status, documents |
| 11 | termdat_lookup_term | LINDAS | Term → equivalents in de/fr/it/rm/en incl. definition |
| 12 | termdat_get_concept | LINDAS | Full TERMDAT entry for a URI or ID |
| Query | Tool |
|---|---|
| *"Show me all valid federal laws on vocational training"* | fedlex_search_laws |
| *"What does the Data Protection Act say?"* | fedlex_get_law_by_sr |
| *"Which laws enter into force in the next 3 months?"* | fedlex_get_upcoming_changes |
| *"Show me the version history of the DSG"* | fedlex_get_law_history |
| *"Which consultations on education are open, and until when?"* | fedlex_get_open_consultations |
| *"Find closed consultations about the language act"* | fedlex_search_consultations |
| *"Give me the full detail and documents for consultation proj/2026/71/cons_1"* | fedlex_get_consultation |
| *"What is 'Volksschule' called in French and Italian?"* | termdat_lookup_term |
| *"Show the full TERMDAT entry 40109"* | termdat_get_concept |
→ More use cases by audience →
Two isolated SPARQL endpoints behind one server. Separate httpx clients and timeouts mean a LINDAS outage never breaks the fedlex_* tools, and vice versa.
+-------------------+ +------------------------------+ +--------------------------+
| Claude / AI |---->| Fedlex MCP |---->| Fedlex SPARQL Endpoint | | (MCP Host) |<----| (MCP Server) |<----| fedlex.data.admin.ch | +-------------------+ | | | (law + consultations) | | 12 Tools . 2 Resources | +--------------------------+ | Stdio | SSE | | | +--------------------------+ | Isolated clients: |---->| LINDAS SPARQL Endpoint | | - Fedlex (law + cons.) |<----| lindas.admin.ch/query | | - LINDAS (TERMDAT) | | (fch/termdat, TERMDAT) | | | +--------------------------+ | No authentication required | +------------------------------+
JOLux Ontology — federal law (Fedlex)
jolux:ConsolidationAbstract <- SR entry
+-- jolux:isRealizedBy -> jolux:Expression (URI ends in /de, /fr, /it, /rm) +-- jolux:title "Federal Act of 19 June 1992 on Data Protection" +-- jolux:titleShort "DSG" +-- jolux:historicalLegalId "235.1"
jolux:inForceStatus: .../0 In force · .../1 No longer published in SR · .../3 No longer in force
JOLux Ontology — consultations (Fedlex, same endpoint)
jolux:Consultation
+-- jolux:eventId "proj/2026/71/cons_1" +-- jolux:eventTitle multilingual (de/fr/it) +-- jolux:eventDescription multilingual +-- jolux:consultationStatus -> vocabulary URI (0..6, /2 = "Laufend"/running) +-- jolux:foreseenImpactToLegalResource -> the legal resource it will amend (link to SR) +-- jolux:hasSubTask -> ?t +-- jolux:eventStartDate <- opened_on +-- jolux:eventEndDate <- the deadline (xsd:date, calendar day) +-- jolux:institutionInChargeOfTheEvent <- lead department +-- jolux:institutionInChargeOfTheEventLevel2 <- lead office +-- jolux:opinionHasDraftRelatedDocument <- consultation documents
There is no subject taxonomy on jolux:Consultation — thematic filtering is free-text over eventTitle only, and status is derived from the deadline (not the source status field).
Legislative lifecycle — where consultations sit (all in this one server):
Vernehmlassung Bundesblatt (BBl) Systematische Sammlung (SR)
(consultation) ─────► (dispatch / act text) ───► (consolidated law in force) ──────────────── ───────────────────── ─────────────────────────── fedlex_get_open_ fedlex_search_gazette fedlex_search_laws consultations (eli/fga/…) fedlex_get_law_by_sr fedlex_search_ fedlex_get_law_history consultations (eli/cc/…) fedlex_get_consultation │ jolux:foreseenImpactToLegalResource └───────────────────────────────────────────► links a consultation forward t
ตัดมาแค่ช่วงต้น อ่านต่อใน repo