mcpField
G
GeoServer MCP Server

GeoServer MCP Server

ローカル
github.com/mahdin75地図・旅行9610 週間前に更新

GeoServer MCP Server について

GeoServer MCP Server は、LLM を GeoServer REST API に接続する MCP サーバーであり、AI アシスタントから地理空間データとサービスを操作できるようにします。自然言語で GeoServer を管理したい GIS ユーザーや開発者を対象としています。pip、Docker、または GeoServer 拡張として実行できます。

主な機能

  1. 01ワークスペース、レイヤー、データストア、スタイルの管理
  2. 02ベクターデータに対する空間クエリの実行
  3. 03地図の可視化の生成
  4. 04WMS と WFS などの OGC サービスへのアクセス
  5. 05--storage オプションによるファイルルートディレクトリの指定

活用シーン

  1. 01AI アシスタントによる GeoServer レイヤーの照会と変更
  2. 02Shapefile や GeoPackage データストアの一括作成
  3. 03GIS データからの地図プレビューの生成

MCP 対応

本プロジェクトは MCP サーバーであり、GeoServer REST API の操作を list_workspaces や geoserver://catalog/layers などのツールおよびリソースとして MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"geoserver": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
起動コマンドnpx -y @smithery/cli

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@smithery/cli

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

PyPI Downloads

GeoServer MCP サーバー

大規模言語モデル(LLM)を GeoServer REST API に接続し、AI アシスタントが地理空間データやサービスを操作できるようにする、Model Context Protocol(MCP)サーバーの実装です。

GeoServer MCP サーバーのロゴ

バージョン 0.5.0(ベータ)は現在積極的に開発中で、まもなくリリースされる予定です。貢献を歓迎します。このプロジェクトの構築に参加する開発者をお待ちしています。

🎥 デモ

GeoServer MCP サーバーのデモ

📋 目次

🚀 機能

  • 🔍 GeoServer のワークスペース、レイヤー、スタイルを検索・操作します
  • 🗺️ ベクターデータに対して空間クエリを実行します
  • 🎨 地図の可視化を生成します
  • 🌐 OGC 準拠のウェブサービス(WMS、WFS)にアクセスします
  • 🛠️ MCP 対応クライアントと簡単に統合できます

🚀 デプロイ方法

GeoServer MCP は 2 つの方法で実行できます。どちらも同じ製品コンセプト(GeoServer 用の MCP ツール)を共有していますが、別個の成果物です。Python パッケージに変更はありません。

                    GeoServer MCP
                         │
             ┌───────────┴───────────┐
             │                       │
      Python MCP Server       GeoServer Extension
             │                       │
             ▼                       ▼
        GeoServer                GeoServer
             │                       │
             └───────────┬───────────┘
                         │
                    MCP Interface
                         │
                         ▼
                     AI Agents
Python MCP サーバー

GeoServer MCP を個別に実行します(pip、Docker、または Smithery)。プロセスはエージェントと MCP で通信し、GeoServer REST API を呼び出します。これは従来のデプロイ方法で、現在公開されています。

以下のインストールを参照してください。

GeoServer 拡張機能

GeoServer に GeoServer MCP Extension を直接インストールし、/geoserver/mcp にリモート MCP エンドポイントを公開します。Python のサイドカーは不要です。GeoServer 2.28.x を対象としています。

アーキテクチャ、インストール、設定、セキュリティ、クライアントの例については、extension/README.mdを参照してください。

📋 前提条件

  • Python 3.10 以降
  • REST API が有効な、稼働中の GeoServer インスタンス
  • MCP 対応クライアント(Claude Desktop や Cursor など)
  • パッケージのインストールに必要なインターネット接続

🛠️ インストール

ニーズに最適なインストール方法を選択してください。

Smithery 経由でインストール

Smithery 経由で Claude Desktop 用の GeoServer MCP Server を自動的にインストールするには、次の手順を実行します。

npx -y @smithery/cli install @mahdin75/geoserver-mcp --client claude
🛠️ インストール(Docker)

Docker を使用したインストールは、GeoServer MCP サーバーを実行する最も迅速で分離性の高い方法です。次の用途に最適です。

  • すばやいテストと評価
  • 本番環境へのデプロイ
  • Python の依存関係を避けたい環境
  • さまざまなシステム間で一貫したデプロイ
  1. geoserver-mcp を実行します。
docker pull mahdin75/geoserver-mcp
docker run -d mahdin75/geoserver-mcp
  1. クライアントを設定します。

Claude Desktop を使用している場合は、claude_desktop_config.json を編集します。 Cursor を使用している場合は、.cursor/mcp.json を作成します。

{
  "mcpServers": {
    "geoserver-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GEOSERVER_URL=http://localhost:8080/geoserver",
        "-e",
        "GEOSERVER_USER=admin",
        "-e",
        "GEOSERVER_PASSWORD=geoserver",
        "-p",
        "8080:8080",
        "mahdin75/geoserver-mcp"
      ]
    }
  }
}
🛠️ インストール(pip)

pip を使用したインストールは、サーバーをシステム上で直接実行したいほとんどのユーザーに推奨される方法です。次の用途に適しています。

  • サーバーをローカルで実行したい一般ユーザー
  • Python 3.10 以降がインストールされているシステム
  • サーバーの設定をカスタマイズしたいユーザー
  • 開発およびテスト
  1. uv パッケージマネージャーをインストールします。
pip install uv
  1. 仮想環境を作成します(Python 3.10 以降)。

Linux/Mac:

uv venv --python=3.10

Windows PowerShell:

uv venv --python=3.10
  1. pip を使用してパッケージをインストールします。
uv pip install geoserver-mcp
  1. GeoServer 接続を設定します。

Linux/Mac:

export GEOSERVER_URL="http://localhost:8080/geoserver"
export GEOSERVER_USER="admin"
export GEOSERVER_PASSWORD="geoserver"

Windows PowerShell:

$env:GEOSERVER_URL="http://localhost:8080/geoserver"
$env:GEOSERVER_USER="admin"
$env:GEOSERVER_PASSWORD="geoserver"
  1. サーバーを起動します。

Claude Desktop を使用する場合、この手順は必要ありません。Cursor または独自のクライアントを使用する場合は、次のコードを実行してください。

Linux:

source .venv/bin/activate

geoserver-mcp

または

source .venv/bin/activate

geoserver-mcp --url http://localhost:8080/geoserver --user admin --password geoserver --debug

Windows PowerShell:

.\.venv\Scripts\activate
geoserver-mcp

または

.\.venv\Scripts\activate
geoserver-mcp --url http://localhost:8080/geoserver --user admin --password geoserver --debug
  1. クライアントを設定します。

Claude Desktop を使用している場合は、claude_desktop_config.json を編集します。 Cursor を使用している場合は、.cursor/mcp.json を作成します。

Windows:

{
  "mcpServers": {
    "geoserver-mcp": {
      "command": "C:\\path\\to\\geoserver-mcp\\.venv\\Scripts\\geoserver-mcp",
      "args": [
        "--url",
        "http://localhost:8080/geoserver",
        "--user",
        "admin",
        "--password",
        "geoserver"
      ]
    }
  }
}

Linux:

{
  "mcpServers": {
    "geoserver-mcp": {
      "command": "/path/to/geoserver-mcp/.venv/bin/geoserver-mcp",
      "args": [
        "--url",
        "http://localhost:8080/geoserver",
        "--user",
        "admin",
        "--password",
        "geoserver"
      ]
    }
  }
}
🛠️ 開発用インストール

開発用インストールは、コードベースを変更したいコントリビューターや開発者向けです。次の用途に適しています。

  • プロジェクトに貢献する開発者
  • ソースコードを変更する必要があるユーザー
  • 新機能のテスト
  • デバッグおよび開発
  1. uv パッケージマネージャーをインストールします。
pip install uv
  1. 仮想環境を作成します(Python 3.10 以降)。
uv venv --python=3.10
  1. pip を使用してパッケージをインストールします。
uv pip install -e .
  1. GeoServer 接続を設定します。

Linux/Mac:

export GEOSERVER_URL="http://localhost:8080/geoserver"
export GEOSERVER_USER="admin"
export GEOSERVER_PASSWORD="geoserver"

Windows PowerShell:

$env:GEOSERVER_URL="http://localhost:8080/geoserver"
$env:GEOSERVER_USER="admin"
$env:GEOSERVER_PASSWORD="geoserver"
  1. サーバーを起動します。

Claude Desktop を使用する場合、この手順は必要ありません。Cursor または独自のクライアントを使用する場合は、次のコードを実行してください。

Linux:

source .venv/bin/activate

geoserver-mcp

または

source .venv/bin/activate

geoserver-mcp --url http://localhost:8080/geoserver --user admin --password geoserver --debug

Windows PowerShell:

.\.venv\Scripts\activate
geoserver-mcp

または

.\.venv\Scripts\activate
geoserver-mcp --url http://localhost:8080/geoserver --user admin --password geoserver --debug
  1. クライアントを設定します。

Claude Desktop を使用している場合は、claude_desktop_config.json を編集します。 Cursor を使用している場合は、.cursor/mcp.json を作成します。

Windows:

{
  "mcpServers": {
    "geoserver-mcp": {
      "command": "C:\\path\\to\\geoserver-mcp\\.venv\\Scripts\\geoserver-mcp",
      "args": [
        "--url",
        "http://localhost:8080/geoserver",
        "--user",
        "admin",
        "--password",
        "geoserver"
      ]
    }
  }
}

Linux:

{
  "mcpServers": {
    "geoserver-mcp": {
      "command": "/path/to/geoserver-mcp/.venv/bin/geoserver-mcp",
      "args": [
        "--url",
        "http://localhost:8080/geoserver",
        "--user",
        "admin",
        "--password",
        "geoserver"
      ]
    }
  }
}

ファイルストレージと --storage の使用

GeoServer MCP サーバーでは、シェープファイルや GeoTIFF のアップロード、結果のエクスポートなど、すべてのファイル読み書き操作のベースディレクトリを指定するために、オプションの --storage フラグを使用できます。

概要
  • --storage フラグは、データ関連のすべてのツールでファイル操作のルートフォルダーを設定します。
  • 関連するツールの引数には、相対パス(ストレージのルートからの相対パス)または絶対パス(ストレージのルートを経由しない)を指定できます。
  • --storage が設定されていない場合、パスはユーザーが指定したとおりに解決されます(作業ディレクトリからの相対パスまたは絶対パス)。
CLI の例
python -m geoserver_mcp.main --storage D:/my/data/dir

これにより、D:/my/data/dir がすべてのファイルのベースパスとして設定されます。

Python でのツール呼び出しの例:

# Will read from D:/my/data/dir/roads.zip if --storage is set to D:/my/data/dir
create_shp_datastore('workspace', 'datastore_name', 'roads.zip')

(例:'C:/input/other.shp')のような絶対パスは、常にそのまま使用されます。

Docker で実行する場合

Docker を使用する場合は、次のようにストレージディレクトリをボリュームとしてマウントしてください。

docker run -v D:/my/data:/opt/data ...

次に、以下のコマンドでサーバーを起動します。

python -m geoserver_mcp.main --storage /opt/data
ベストプラクティス
  • API/ツールを使用する際は相対パスを使うと、設定の移植性を保てます。
  • リモート環境またはコンテナーにデプロイする場合は、ファイルデータにコンテナー内からアクセスできることを必ず確認してください(必要に応じて Docker ボリュームを使用してください)。
  • ストレージシステムを使用する引数については、ツールの docstring を確認してください。

--storage システムを使うと、すべてのユーザーのファイル管理が効率化され、デプロイの柔軟性が大幅に向上します。

🛠️ 利用可能なツール

このセクションでは、GeoServer MCP サーバーが公開するすべての利用可能なツールとリソースについて説明します。これらのツールを使用すると、LLM は GeoServer の REST API を利用して、地理空間データを包括的に管理できます。

🌍 リソースエンドポイント

リソースエンドポイントを使用すると、URI パターンを通じて GeoServer のリソースに直接アクセスできます。

リソース URI説明
geoserver://catalog/workspaces利用可能なワークスペースの一覧を取得します
geoserver://catalog/layers/{workspace}/{layer}特定のレイヤーに関する情報を取得します
geoserver://services/wms/{request}WMS リソースリクエストを処理します
geoserver://services/wfs/{request}WFS リソースリクエストを処理します
📦 ワークスペースの管理
ツール説明
list_workspacesGeoServer で利用可能なワークスペースの一覧を取得します
create_workspaceGeoServer に新しいワークスペースを作成します
📁 データストアとカバレッジストアの管理
ツール説明
create_datastore指定したワークスペースに新しいデータストアを作成します
create_featurestore指定したワークスペースに新しいフィーチャーストアを作成します
create_gpkg_datastoreGeoPackage(GPKG)データストアを作成します
create_shp_datastoreESRI Shapefile データストアを作成します
create_coveragestoreワークスペースに新しいカバレッジストアを作成します
delete_coveragestoreワークスペースからカバレッジストアを削除します
get_coveragestore単一のカバレッジストアの詳細を取得します
get_coveragestoresワークスペース内のすべてのカバレッジストアを取得します
get_datastore名前を指定してデータストアを取得します
get_datastores指定したワークスペース内のすべてのデータストアを一覧表示します
🗺️ レイヤーの管理
ツール説明
get_layer_infoレイヤーの詳細情報を取得します
list_layersGeoServer のレイヤーを一覧表示します。必要に応じてワークスペースで絞り込めます
create_layerGeoServer に新しいレイヤーを作成します
delete_resourceGeoServer からリソースを削除します(汎用)
🧩 レイヤーグループの管理
ツール説明
create_layergroup特定のレイヤーと(任意で)スタイルを含む、新しいレイヤーグループを作成します
get_layergroupワークスペースからレイヤーグループを取得します
get_layergroupsワークスペース内のすべてのレイヤーグループを一覧表示します
add_layer_to_layergroup特定のレイヤーをレイヤーグループに追加します
remove_layer_from_layergroupレイヤーグループからレイヤーを削除します
delete_layergroupワークスペースからレイヤーグループを削除します
update_layergroupレイヤーグループの詳細と設定を更新します
👥 ユーザーとユーザーグループの管理
ツール説明
create_userGeoServer セキュリティ用の新しいユーザーを作成します
delete_user名前を指定してユーザーを削除します
get_all_usersGeoServer インスタンス内のすべてのユーザーを一覧表示します
modify_user既存のユーザーのプロパティを変更します
create_usergroup新しいユーザーグループを作成します
delete_usergroupユーザーグループを削除します
get_all_usergroupsすべてのユーザーグループを返します
📊 フィーチャータイプと属性の管理
ツール説明
query_featuresCQL フィルターを使用してベクターレイヤーからフィーチャーをクエリします
publish_featurestore既存のフィーチャーストアを公開します
publish_featurestore_sqlviewSQL ビュー定義を使用してフィーチャーストアを公開します
edit_featuretypeストア内のフィーチャータイプの設定を編集します
get_featuretypes指定したストア内のすべてのフィーチャータイプを一覧表示します
get_feature_attributeフィーチャー属性のスキーマや詳細を取得します
🎨 スタイルの管理
ツール説明
create_styleGeoServer に新しい SLD スタイルを作成します
publish_styleスタイルをレイヤーに割り当てて公開します
create_catagorized_featurestyleフィーチャー用のカテゴリ別スタイルを作成します
create_classified_featurestyleフィーチャー用の分類スタイルを作成します
create_coveragestyleラスターカバレッジスタイルを作成します
create_outline_featurestyleフィーチャー用のシンプルな輪郭のみのスタイルを作成します
⚙️ システムとサービスの操作
ツール説明
get_manifestGeoServer のマニフェストメタデータや詳細を取得します
get_statusサーバーの全般的なステータスを取得します
get_system_statusGeoServer のシステムステータスの概要や情報を取得します
get_versionGeoServer のバージョン文字列を取得します
reload_geoserverカタログと設定をディスクから再読み込みします
reset_geoserverGeoServer のすべてのキャッシュと接続をリセットします
update_service選択した OGC サービスのオプションを更新します
publish_time_dimension_to_coveragestoreカバレッジストアの時間ディメンションを追加または更新します(時系列用)
📝 スタイル XML ユーティリティ
ツール説明
style_catagorize_xmlカテゴリ別ベクタースタイル用の SLD を生成します
style_classified_xml分類ベクタースタイル用の SLD XML を取得します
style_coverage_style_colormapentryラスター SLD 用のカラーマップエントリーを生成します
style_coverage_style_xmlラスター/カバレッジ SLD 用の XML を生成します
style_outline_only_xmlジオメトリ用の輪郭のみのスタイルの XML

🛠️ クライアント開発

GeoServer MCP サーバーと連携する独自のクライアントを開発する予定がある場合は、examples/client.py のクライアント実装例が参考になります。この例では、次の方法を紹介しています。

  • MCP サーバーへの接続を確立する方法
  • リクエストを送信し、レスポンスを処理する方法
  • 基本的なエラー処理と接続管理
  • さまざまなツールや操作の使用例

このクライアントの例は、プロトコルを理解し、独自のクライアントアプリケーションを実装するための出発点として役立ちます。

また、使用例は次のとおりです。

ワークスペースの一覧表示

Tool: list_workspaces
Parameters: {}
Response: ["default", "demo", "topp", "tiger", "sf"]

レイヤー情報の取得

Tool: get_layer_info
Parameters: {
"workspace": "topp",
"layer": "states"
}

フィーチャのクエリ

Tool: query_features
Parameters: {
"workspace": "topp",
"layer": "states",
"filter": "PERSONS > 10000000",
"properties": ["STATE_NAME", "PERSONS"]
}

マップの生成

Tool: generate_map
Parameters: {
"layers": ["topp:states"],
"styles": ["population"],
"bbox": [-124.73, 24.96, -66.97, 49.37],
"width": 800,
"height": 600,
"format": "png"
}

🔮 今後予定されている機能

  • カバレッジデータとラスターデータの管理
  • セキュリティとアクセス制御
  • 高度なスタイル設定機能
  • WPS 処理操作
  • GeoWebCache との統合

🤝 貢献

皆さまからの貢献を歓迎します!次の方法でご協力いただけます。

  1. リポジトリをフォークする
  2. 機能ブランチを作成する(git checkout -b feature/AmazingFeature)
  3. 変更をコミットする(git commit -m 'Add some AmazingFeature')
  4. ブランチにプッシュする(git push origin feature/AmazingFeature)
  5. プルリクエストを作成する

PR の説明には、問題と解決策を明確に記載してください。該当する場合は、関連する issue 番号も含めてください。

📄 ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については、LICENSE ファイルをご覧ください。

🔗 関連プロジェクト

🌐 関連項目:GIS MCP

地理空間データの自動化を幅広く行い、GIS 関連の MCP 機能をさらに利用するには、mahdin75 による GIS MCPをご覧ください。

📞 サポート

サポートが必要な場合は、issueを作成してください。

🏆 バッジ

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。