Thai Legal
Thai legal search MCP — statutes, gazette, opinions, court cases. Pro: court-jurisdiction rulings.
作者による説明(英語の原文)
SBB Open Data via OpenDataSoft
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"sbb-opendata": {
"command": "uvx",
"args": [
"sbb-opendata-mcp"
]
}
}
}ターミナルでこれを実行します
claude mcp add sbb-opendata -- uvx sbb-opendata-mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"sbb-opendata": {
"command": "uvx",
"args": [
"sbb-opendata-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"sbb-opendata": {
"type": "stdio",
"command": "uvx",
"args": [
"sbb-opendata-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月9日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント malkreide で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.4.0)がレジストリに届いたのは43 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:Thai Legal, Slovenia Company Check, Lithuania Company Check
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Thai legal search MCP — statutes, gazette, opinions, court cases. Pro: court-jurisdiction rulings.
Slovenia company checks: status, bankruptcy flag from the name, VAT revocation, LEI and sanctions.
Lithuania company checks: status, insolvency, LEI and sanctions from official registers.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
🇨🇭 Part of the [Swiss Public Data MCP Portfolio](https://github.com/malkreide/swiss-public-data-mcp)
MCP server connecting AI models to Swiss Federal Railways (SBB) open data – passenger frequency, live rail disruptions, infrastructure & real-estate projects, train counts, platform data, rolling stock and station search from data.sbb.ch. No API key required.
🇩🇪 Deutsche Version
sbb-opendata-mcp gives AI assistants like Claude direct access to public SBB data – no copy-pasting or manual API calls. A question like *"How many passengers passed through Zürich HB every day in 2024?"* is answered with real measured data.
The SBB Open Data portal speaks the OpenDataSoft REST API (v2.1). This server translates it into clean Markdown and JSON for the AI model, and adds MCP structuredContent alongside the human-readable text so programmatic clients can consume the underlying records without re-parsing. The server is model-agnostic and works with any MCP-compatible client.
Anchor demo query: *"Compare Zürich HB, Bern and Basel SBB by passenger frequency and platform capacity."* → More use cases by audience →
Install uv (recommended):
curl -LsSf https://astral.sh/uv/install.sh | sh
From PyPI:
pip install sbb-opendata-mcp
Or with uvx (no permanent installation):
uvx sbb-opendata-mcp
For local development, install from a clone in editable mode:
git clone https://github.com/malkreide/sbb-opendata-mcp.git
cd sbb-opendata-mcp pip install -e ".[dev]"
# Start the server (stdio mode for Claude Desktop)
sbb-opendata-mcp
Try it immediately in Claude Desktop:
*"How many people boarded at Zürich HB daily in 2024?"*
*"Are there any current disruptions on the Swiss rail network?"*
The server needs no configuration to run over stdio. The variables below tune the optional Streamable HTTP transport, logging and observability.
| Variable | Effect | Default |
|---|---|---|
MCP_HOST | Bind host for the HTTP transport. Keep 127.0.0.1 locally; only bind 0.0.0.0 inside a controlled container/cloud environment. | 127.0.0.1 |
MCP_PORT | Port for the HTTP transport. | 8000 |
MCP_ALLOWED_HOSTS | Comma-separated host allow-list for DNS-rebinding protection (e.g. your-app.onrender.com,your-app.onrender.com:*). | localhost only |
MCP_ALLOWED_ORIGINS | Comma-separated browser-origin allow-list (e.g. https://your-app.onrender.com). | _(none)_ |
LOG_LEVEL | Log verbosity (DEBUG/INFO/WARNING/…). | INFO |
LOG_FORMAT | json for structured logs; anything else for human-readable text. Always written to stderr. | text |
🔒 DNS-rebinding / Origin protection is always on; localhost is allow-listed
so local HTTP development works out of the box. Logs go to stderr — stdout is
reserved for the stdio JSON-RPC channel.
{
"mcpServers": { "sbb-opendata": { "command": "uvx", "args": ["sbb-opendata-mcp"] } } }
Config file locations:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonRestart Claude Desktop — the server is downloaded automatically on first use.
Works with Cursor, Windsurf, VS Code + Continue, LibreChat, Cline and self-hosted models via mcp-proxy — same configuration as above.
For use via claude.ai in the browser or remote servers (e.g. Render.com). The cloud transport is Streamable HTTP (endpoint /mcp).
Docker (recommended):
# Build + run with explicit resource limits (see docker-compose.yml)
docker compose up --build
The image is a multi-stage build running as a non-root user; docker-compose.yml adds read_only, no-new-privileges and memory/CPU/PID limits.
Manual / Render.com:
pip install -e .
export MCP_HOST=0.0.0.0 export MCP_ALLOWED_HOSTS="your-app.onrender.com,your-app.onrender.com:*" export MCP_ALLOWED_ORIGINS="https://your-app.onrender.com" python -m sbb_opendata_mcp.server --http --port 8000
⚠️ Binding: In a network transport the server binds to
127.0.0.1by
default so a locally started server is not exposed to your whole network.
Set
MCP_HOST=0.0.0.0only in a container/cloud environment where binding
to all interfaces is intended (the Docker image does this for you), and place
the server behind a reverse proxy that enforces rate limiting (and
authentication, if the endpoint should not be public). See
SECURITY.md.
| Tool | Description | Data Update |
|---|---|---|
sbb_get_passenger_frequency | Boardings/alightings by station and year (daily avg.) | Annual |
sbb_get_rail_disruptions | Live rail traffic messages | Every 5 min. |
sbb_get_real_estate_projects | SBB real estate development projects | Daily |
sbb_get_trains_per_segment | Train counts per route segment (SBB, BLS, SOB …) | Annual |
sbb_get_platform_data | Platform data (length, type, area) | Ongoing |
sbb_get_rolling_stock | Rolling stock (capacity, year built) | Ongoing |
sbb_compare_stations | Compare up to 10 stations (multi-dataset) | – |
sbb_search_stations | Search stops (Swiss DiDok register, all CH) | Ongoing |
sbb_list_datasets | List all ~89 SBB open datasets | – |
All tools support response_format: "markdown" (human-readable) and "json" (machine-readable), plus pagination. Every tool also returns MCP structuredContent (the underlying records/metadata) alongside the rendered text, and declares its shape as outputSchema. Error results carry isError: true and {error, upstream_unavailable} instead.
| Query | Tool |
|---|---|
| *"How many people boarded at Zürich HB daily in 2024?"* | sbb_get_passenger_frequency |
| *"Are there any current disruptions on the Swiss rail network?"* | sbb_get_rail_disruptions |
| *"Compare Zürich HB, Bern and Basel SBB"* | sbb_compare_stations |
| *"Which SBB real-estate construction projects are running?"* | sbb_get_real_estate_projects |
| *"How many trains run yearly on the Zürich–Winterthur route?"* | sbb_get_trains_per_segment |
| *"Which stops exist in Wädenswil?"* | sbb_search_stations |
→ More use cases by audience
┌─────────────────┐ ┌───────────────────────────┐ ┌──────────────────────────┐
│ Claude / AI │────▶│ SBB Open Data MCP │────▶│ data.sbb.ch │ │ (MCP Host) │◀────│ (MCP Server) │◀────│ │ └─────────────────┘ │ │ │ OpenDataSoft REST v2.1 │ │ 9 Tools │ │ (public, no API key) │ │ Stdio | Streamable HTTP │ │ │ │ │ │ passagierfrequenz │ │ Shared httpx client │ │ rail-traffic-information │ │ (pooled, lifespan-managed)│ │ construction-projects │ │ ODSQL escaping + Pydantic │ │ perron · rollmaterial │ │ validation │ │ zugzahlen · dienststellen│ └───────────────────────────┘ └──────────────────────────┘
sbb-opendata-mcp/
├── src/sbb_opendata_mcp/ │ ├── init.py │ └── server.py # FastMCP server, all 10 tool definitions ├── tests/ │ └── test_server.py # Unit + live API smoke tests ├── audits/ # MCP best-practice audit evidence ├── docs/assets/demo.svg # README demo asset ├── .github/workflows/ci.yml # GitHub Actions (Python 3.11/3.12/3.13) ├── Dockerfile # Multi-stage, non-root runtime image ├── docker-compose.yml # Local run with resource limits ├── claude_desktop_config.json # Example Claude Desktop config ├── pyproject.toml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── SECURITY.md ├── EXAMPLES.md ├── LICENSE ├── README.md # This file (English) └── README.de.md # German version
year/canton are regex-validated and every value interpolated into an ODSQL where clause is escaped via a central helper.See SECURITY.md for the full security posture.
limit and pagination.冒頭だけを表示しています。続きはリポジトリで読めます