osm-tagging-schema-mcp について
AI エージェントや LLM アプリケーション向けの OpenStreetMap タグスキーマ MCP サーバーです。概念実証としてローカルのスキーマデータを検索し、決定的な検証や形式変換を行います。OSM のネットワークには接続せず、サーバー内で AI も実行しません。
主な機能
- 01タグのキーと値の検証
- 02タグ値とプリセットの参照
- 03タグとプリセットの検索
- 04タグ集合の比較
- 05フラット形式と JSON の変換
活用シーン
- 01一般的な OSM タグのスキーマ適合確認
- 02プリセットと詳細の参照
- 03異なるタグ集合の比較
- 04フラット形式と JSON の相互変換
MCP 対応
タグの検証、参照、検索、比較、形式変換を行う MCP ツールをクライアントに公開します。stdio と HTTP に対応し、@openstreetmap/id-tagging-schema に含まれるスキーマデータを使って応答します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
9掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| tags | string | はい | OpenStreetMap タグのフラットテキスト形式で、各行に key=value のペアを 1 つ記述します。各行には、"key=value" 形式のタグをちょうど 1 つ記述してください。コメント行(# で始まる行。無視されます)、空行(スキップされます)、さまざまな改行コード(LF、CRLF、CR)に対応しています。値に等号が含まれる場合、区切り文字として扱われるのは最初の = のみです。例:"amenity=restaurant\nname=Test Cafe\ncuisine=italian\n# This is a comment\nopening_hours=Mo-Su 10:00-22:00"。すべてのキーと値の前後の空白は削除されます。空の値はエラーになります。 |
詳細
OpenStreetMap タグ付けスキーマ MCP サーバー
これは何ですか?
これは、AI エージェントや LLM アプリケーション向けに特別に設計されたModel Context Protocol(MCP)サーバーです。AI システムと、公式の @openstreetmap/id-tagging-schema ライブラリが提供する包括的な OpenStreetMap タグ付けナレッジベースをつなぐ役割を果たします。
プロジェクトの状況
このプロジェクトは概念実証です。特定の領域では実用的な価値を提供する一方、ほかの領域には既知の不足点があります。どちらについても、以下で率直に説明しています。
- 最新のタグ付けスキーマである
@openstreetmap/id-tagging-schemav7 に対応しています。 - より優れた代替ツールを開発中です。当初の予定より遅れて公開されますが、日程は確約していません。
バグの報告やアイデアの提案は、issueを開くか、discussionを開始してください。
動作の仕組み
サーバーは stdio(デフォルト)または HTTP で動作し、タグ付けスキーマを MCP ツールとして公開します。各ツールは @openstreetmap/id-tagging-schema に同梱されているスキーマデータ(プリセット、フィールド、非推奨タグ、翻訳)を読み取り、そのデータに基づいて決定論的に回答します。OSM へのネットワークアクセスはなく、サーバー内に AI もありません。AI エージェントがツールを呼び出し、結果を解釈します。
検証では、タグがスキーマに照らしてチェックされます。キーが既知かどうか、値が一致するフィールドで許可されているかどうか、キーまたは値が非推奨で置き換え案があるかどうかを確認します。
できることとできないこと
このツールには制限があります。利用する前に、どのような動作を期待できるか確認してください。回答の根拠はスキーマデータのみであり、実際に使われているタグや OSM wiki にあるタグの一部は網羅されていません。
| ツール | できること | 制限 |
|---|---|---|
validate_tag | よく使われるタグは 100% 受け入れられます。誤った deprecated 警告はほぼありません(99.2%)。 | wiki で非推奨とされるタグの約 20% しか検出できません。タイプミスや外国語の値も有効として受け入れられます(カスタムタグが許可されているため)。railway=platform と railway=station は誤って非推奨と判定されます |
validate_tag_collection | validate_tag と一貫した結果を返します(100%)。 | validate_tag と同じ不足があります。制御文字は報告されません |
suggest_improvements | よく使われるタグの 92% でプリセットが一致します | タイプミスや外国語の値では、問題の報告ではなく候補が提示されることがほとんどです |
get_tag_values | taginfo の値の 97% が含まれます。不正なキーと上限値は拒否されます | リストに含まれていない taginfo の値が少数あります |
search_tags | 名前からキーの 60% を見つけます | あいまい検索の説明に反して、タイプミスは許容されません。コロンを含むキー(addr:street)は見つからないことがよくあります。limit が 0 または負の値でも、常に拒否されるわけではありません。access は key のない keyMatches 項目を返します |
search_presets | よく使われるタグの 69% でプリセットが見つかります(上位 3 件では 56%)。 | 複数単語のクエリ(bicycle parking)では何も返されないことがあります。順位付けは弱く、limit が 0 または負の値でも、常に拒否されるわけではありません |
get_preset_details | よく使われるタグの 93% にプリセットが存在し、不明な ID は常に拒否されます | 人気のあるタグの一部(例:historic=*、craft=grinding_mill、`railway=stop)にはプリセットがありません |
compare_tags | ローカル計算と一致します(100%)。テキスト入力と JSON 入力で同じ結果が得られます | 任意のタグセットを比較するため、タグが間違っているとは判定しません。不正な入力のみ拒否されます |
flat_to_json | ;、スペース、=、Unicode、:、/ を含め、情報を損なわずに変換します | 重複キーと制御文字は黙って受け入れられます |
json_to_flat | 情報を損なわずに往復変換できます(100%)。不正な入力は拒否されます | キーはアルファベット順に並べ替えられず、入力順が維持されます |
すべてのツールで、不正な入力によってサーバーがクラッシュすることはありませんでした。エラーは読みやすい形式で返されるか、空のリストが返されます。
概要
決定論的なロジックで十分な場面で役立ちます。たとえば、形式の変換、タグセットの比較、プリセットや値の読み込み、一般的なタグの検証です。苦手な分野は、非推奨タグの検出と検索(タイプミス、複数の単語、コロン付きのキー)です。
これは何ではないか
⚠️ 重要な補足:
- 単体で動作するアプリケーションではありません:このサーバーを活用するには、Claude Code や Claude Desktop などの AI システムとの連携が必要です。ユーザーインターフェイスもウェブフロントエンドもありません。
- 人が直接使用するためのものではありません:仲介する AI エージェントがなければ、このツールはエンドユーザーに価値を提供しません。LLM アプリケーションからのプログラムによるアクセス専用に設計されています。
ユーザー向けの OSM タグ付けツールをお探しの場合は、代わりに iD エディター または JOSM をご検討ください。
インストール
Claude Code にサーバーを追加します(stdio):
# npx
claude mcp add --transport stdio osm-tagging-schema -- npx -y @gander-tools/osm-tagging-schema-mcp
# Docker
claude mcp add --transport stdio osm-tagging-schema -- docker run -i --rm ghcr.io/gander-tools/osm-tagging-schema-mcp:latest
HTTP トランスポート
stdio がデフォルトです。HTTP 経由(ストリーミング可能、Docker イメージではポート 3000)で提供するには、TRANSPORT=http を設定します。
| 変数 | デフォルト | 意味 |
|---|---|---|
TRANSPORT | stdio | stdio または http |
PORT | 3000 | HTTP ポート |
HOST | 0.0.0.0 | HTTP バインドアドレス |
CORS_ORIGINS | http://localhost:6274,https://mcp.ziziyi.com | 許可する CORS オリジン(カンマ区切り) |
LOG_LEVEL | INFO | SILENT、ERROR、WARN、INFO、DEBUG |
docker run --rm -p 3000:3000 -e TRANSPORT=http ghcr.io/gander-tools/osm-tagging-schema-mcp:latest
エンドポイント:GET /health(稼働状態)、GET /ready(スキーマの読み込み状態)、GET /version。
ライセンス
GNU General Public License v3.0 — 詳細については LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。