GIS MCP Server について
GIS MCP Server は、LLM とAIアシスタントを地理空間処理に接続するオープンソースの MCP サーバーです。Shapely、GeoPandas、PyProj、Rasterio などの Python GIS ライブラリをラップし、92 以上のツールを提供します。
主な機能
- 01複数の Python ライブラリにまたがる 92 以上の GIS ツール
- 02ジオメトリ演算、バッファ、空間オーバーレイ
- 03参照座標系間の座標再投影
- 04NDVI 計算を含むラスターおよびベクターデータ処理
- 05PySAL による空間統計とクラスタリング
- 06STDIO と HTTP のトランスポートモード
活用シーン
- 01チャットボットへの地理空間計算機能の追加
- 02ベクターまたはラスターデータの一括空間処理
- 03Claude Desktop や Cursor IDE からの GIS 分析実行
MCP 対応
本プロジェクトは GIS 操作を MCP クライアントへツールとして公開する MCP サーバーです。STDIO または HTTP で動作し、ファイルのアップロードとダウンロード用のストレージエンドポイントを備えます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
GIS MCP サーバー
GIS-MCP は、AI アシスタントや大規模言語モデル(LLM)を GIS および地理空間処理に接続する、オープンソースの Model Context Protocol(MCP)サーバーです。
MCP 対応クライアントを通じて、AI エージェントが地理空間解析、空間データ処理、ベクターおよびラスターデータの操作、座標変換、空間統計、マッピングなど、さまざまな GIS ワークフローを実行できるようにします。
🌐 公式ドキュメント: https://gis-mcp.com
📦 PyPI: https://pypi.org/project/gis-mcp/
💻 ソースコード: https://github.com/mahdin75/gis-mcp
92 種類以上の GIS ツールがあり、Shapely、GeoPandas、PyProj、Rasterio、PySAL、可視化、衛星画像、気候、生態学、移動、土地被覆データに対応しています。
✨ チャットボットで正確な地理空間分析を実行しませんか? ✨
GIS-MCP をインストールして、AI の空間分析能力を高めましょう!
現在のバージョンは 0.15.0(ベータ版)です:
このプロジェクトの開発に参加してくださる方や、貢献してくださる方を歓迎します。
🎥 デモ
📋 目次
- 機能
- ストレージ
- 前提条件
- バイブコーディング
- インストール
- 最初の GIS AI エージェントを作成する
- 利用可能な関数
- クライアント開発
- 予定している機能
- 貢献
- ライセンス
- 関連プロジェクト
- サポート
- バッジ
🚀 機能
GIS MCP Server は、AI アシスタントに高度な地理空間インテリジェンスを提供します。主な機能は次のとおりです。
- 🔹 包括的なジオメトリ操作 – 交差、和、バッファー、差分など、さまざまな幾何変換を簡単に実行できます。
- 🔹 高度な座標変換 – 座標参照系間でジオメトリを簡単に再投影・変換できます。
- 🔹 正確な計測 – 距離、面積、長さ、重心を正確に計算できます。
- 🔹 空間分析と検証 – ジオメトリを検証し、近接性を確認し、空間オーバーレイや結合を実行できます。
- 🔹 ラスターデータとベクターデータのサポート – ラスターレイヤーの処理、NDVI などの指標の計算、クリップ、リサンプリング、ベクターデータとのマージができます。
- 🔹 空間統計とモデリング – PySAL を活用し、空間的自己相関、クラスタリング、近傍分析を実行できます。
- 🔹 簡単な統合 – Claude Desktop や Cursor IDE などの MCP 対応クライアントにシームレスに接続できます。
- 🔹 HTTP/SSE トランスポート – ファイルのアップロード/ダウンロード操作に対応する RESTful ストレージエンドポイントを備えた HTTP サービスとして実行できます。
- 🔹 柔軟なストレージ – デフォルトではローカルファイルシステムを使用し、ファイルを GCS バケットに保存する場合は Google Cloud Storage を利用できます。
- 🔹 柔軟性と拡張性 – Python ベースの GIS ライブラリをサポートし、カスタムツールやワークフロー拡張にも対応しています。
🌟 ヒント: GIS MCP Server を使うと、AI が「空間的に考える」ことができるようになり、環境分析、地図作成、位置情報インテリジェンスの新たな機能が利用可能になります。
💾 ストレージ
GIS MCP Server は、ファイルのアップロード、ダウンロード、ツールの出力に、次の 2 つのストレージバックエンドをサポートしています。
| バックエンド | 使用するケース | 設定方法 |
|---|---|---|
| ローカルファイルシステム | デフォルト。ディスク上のファイル(Docker ボリュームを含む) | --storage-path または GIS_MCP_STORAGE_PATH |
| Google Cloud Storage (GCP) | GCS バケットにファイルを保存する場合 | --storage-config / GIS_MCP_STORAGE_CONFIG または GIS_MCP_STORAGE_PROVIDER=gcp |
次のコマンドで GCP サポートをインストールします。
pip install gis-mcp[gcp]
セットアップの詳細(パス、IAM、Docker、認証情報)については、ストレージの設定をご覧ください。
📋 前提条件
- Python 3.10 以降
- MCP 対応クライアント(Claude Desktop や Cursor など)
- パッケージのインストールに必要なインターネット接続
バイブコーディング
バイブコーディングでエージェントを構築する場合は、GIS MCP の以下のマップをモデルに渡してください。
llms.txt:コンテキストウィンドウが小さい場合向けの、厳選された概要です。llms-full.txt:コンテキストウィンドウが大きい場合向けの、ドキュメント全体のマップです。
リポジトリのルートにもコピー(llms.txt、llms-full.txt)があります。MkDocs のビルド時にドキュメントから再生成されます。
🛠 インストール
ニーズに最適なインストール方法を選択してください。
🐳 Docker によるインストール
GIS MCP Server は Docker を使用して実行できます。依存関係がすべて事前にインストールされた、分離された環境を利用できます。
重要: Dockerfile と Dockerfile.local は、どちらもデフォルトで HTTP トランスポートモードが有効になっています。サーバーはポート 9010 で実行され、http://localhost:9010/mcp からアクセスできます。
Dockerfile を使用する場合
メインの Dockerfile は、PyPI からパッケージをインストールします。
- Docker イメージをビルドします。
docker build -t gis-mcp .
- コンテナを実行します(デフォルトで HTTP モードが有効です)。
docker run -p 9010:9010 gis-mcp
Dockerfile.local を使用する場合
Dockerfile.local は、ローカルのソースファイルからパッケージをインストールします(開発やカスタムビルドに便利です)。
- Docker イメージをビルドします。
docker build -f Dockerfile.local -t gis-mcp:local .
- コンテナを実行します(デフォルトで HTTP モードが有効です)。
docker run -p 9010:9010 gis-mcp:local
HTTP トランスポートモードでは、サーバーは http://localhost:9010/mcp で利用できます。
Docker の設定と環境変数の詳細については、Docker インストールガイドをご覧ください。
📦 pip によるインストール
ほとんどのユーザーには、pip によるインストールをおすすめします。
- uv パッケージマネージャーをインストールします。
pip install uv
- 仮想環境を作成します(Python 3.10 以降)。
uv venv --python=3.10
- 仮想環境を有効にします。
Windows(PowerShell)の場合:
.\.venv\Scripts\Activate.ps1
Linux の場合:
source .venv/bin/activate
- パッケージをインストールします。
uv pip install gis-mcp
可視化機能を含めてインストールする
可視化機能(インタラクティブマップ用の Folium と PyDeck)を使用する場合は、次のコマンドでインストールします。
uv pip install gis-mcp[visualize]
これにより、次の追加の依存関係がインストールされます。
folium>=0.15.0- インタラクティブなウェブマップの作成用pydeck>=0.9.0- 高度な 3D 可視化用
- サーバーを起動します。
gis-mcp
デフォルトでは、サーバーは STDIO トランスポートモードで実行されます。このモードはローカル開発や、Claude Desktop または Cursor IDE との連携に最適です。
ネットワーク環境にデプロイする場合は、HTTP トランスポートモードでサーバーを実行することもできます。
export GIS_MCP_TRANSPORT=http
export GIS_MCP_PORT=8080
gis-mcp
HTTP または SSE トランスポートモードで実行する場合、次のエンドポイントを利用できます。
- MCP エンドポイント:
http://host:port/mcp(HTTP)またはhttp://host:port/sse(SSE) - ストレージエンドポイント:
POST /storage/upload- ファイルをサーバーストレージにアップロードしますGET /storage/download?path=<file>- サーバーストレージからファイルをダウンロードしますGET /storage/list?path=<dir>- サーバーストレージ内のファイルを一覧表示します
トランスポートモードの詳細とエンドポイントの完全なドキュメントについては、以下をご覧ください。
pip の設定
Claude または Cursor で pip インストールを使用するには、次の設定を追加します。
Claude Desktop:
Windows:
{
"mcpServers": {
"gis-mcp": {
"command": "C:\\Users\\YourUsername\\.venv\\Scripts\\gis-mcp",
"args": []
}
}
}
Linux/Mac:
{
"mcpServers": {
"gis-mcp": {
"command": "/home/YourUsername/.venv/bin/gis-mcp",
"args": []
}
}
}
Cursor IDE(.cursor/mcp.json を作成):
Windows:
{
"mcpServers": {
"gis-mcp": {
"command": "C:\\Users\\YourUsername\\.venv\\Scripts\\gis-mcp",
"args": []
}
}
}
Linux/Mac:
{
"mcpServers": {
"gis-mcp": {
"command": "/home/YourUsername/.venv/bin/gis-mcp",
"args": []
}
}
}
設定後:
YourUsernameを実際のユーザー名に置き換えてください- 開発用にインストールする場合は、
/path/to/gis-mcpをプロジェクトの実際のパスに置き換えてください - 変更を適用するため、IDE を再起動してください
- Claude または Cursor で、すべての GIS 操作を使用できるようになります!
🛠 開発用インストール
コントリビューターおよび開発者向け:
- uv パッケージマネージャーをインストールします:
pip install uv
- 仮想環境を作成します:
uv venv --python=3.10
- 開発モードでパッケージをインストールします:
uv pip install -e .
- サーバーを起動します:
python -m gis_mcp
開発用の設定
Claude または Cursor で開発用インストールを使用するには、次の設定を追加します。
Claude Desktop:
Windows:
{
"mcpServers": {
"gis-mcp": {
"command": "C:\\path\\to\\gis-mcp\\.venv\\Scripts\\python",
"args": ["-m", "gis_mcp"]
}
}
}
Linux/Mac:
{
"mcpServers": {
"gis-mcp": {
"command": "/path/to/gis-mcp/.venv/bin/python",
"args": ["-m", "gis_mcp"]
}
}
}
Cursor IDE(.cursor/mcp.json を作成):
Windows:
{
"mcpServers": {
"gis-mcp": {
"command": "C:\\path\\to\\gis-mcp\\.venv\\Scripts\\python",
"args": ["-m", "gis_mcp"]
}
}
}
Linux/Mac:
{
"mcpServers": {
"gis-mcp": {
"command": "/path/to/gis-mcp/.venv/bin/python",
"args": ["-m", "gis_mcp"]
}
}
}
設定後:
YourUsernameを実際のユーザー名に置き換えてください- 開発用にインストールする場合は、
/path/to/gis-mcpをプロジェクトの実際のパスに置き換えてください - 変更を適用するため、IDE を再起動してください
- Claude または Cursor で、すべての GIS 操作を使用できるようになります!
🤖 最初の GIS AI エージェントを作成する
実際の GIS MCP ツール(架空の空間計算ではありません)を呼び出すエージェントを作成します。
LangChain(Python)— 公園のバッファ近接分析
チュートリアル:公園のバッファ近接分析エージェント
サンプル:agents/Langchain/
LangGraph(Python)— 状態を保持する敷地カバレッジ分析
チュートリアル:状態を保持する敷地カバレッジのワークフロー
サンプル:agents/LangGraph/
- 明示的なグラフ:解釈 → 計画 → GIS MCP ツールの実行 → 検証 → 応答
- LLM を使わずに検証:
python agents/LangGraph/verify_graph.py
LangGraph(Python)— マルチエージェントによるセットバック分析
チュートリアル:マルチエージェントによるセットバック分析ワークフロー
- プランナー/分析/検証エージェント。GIS MCP を呼び出すのは分析エージェントのみです
- 検証:
python agents/LangGraph/verify_multi_agent.py
その他のエージェント関連ドキュメント
最小構成のスターター:templates/(langchain-gis-agent、langgraph-gis-workflow、langgraph-multi-agent-gis)
こちらも利用できます:OpenAI Agents SDK(Node.js)
📚 利用可能な関数
このセクションでは、ライブラリごとに整理した、利用可能なすべての関数を網羅的に紹介します。
🔷 Shapely 関数(合計 29 個)
基本的な幾何演算:
buffer- ジオメトリの周囲にバッファーを作成intersection- 2 つのジオメトリの交差部分を取得union- 2 つのジオメトリを結合difference- ジオメトリ間の差分を取得symmetric_difference- 対称差を取得
幾何プロパティ:
convex_hull- 凸包を計算envelope- バウンディングボックスを取得minimum_rotated_rectangle- 最小回転矩形を取得get_centroid- 重心点を取得get_bounds- ジオメトリの境界を取得get_coordinates- 座標配列を抽出get_geometry_type- ジオメトリ型の名前を取得
変換:
rotate_geometry- 角度を指定してジオメトリを回転scale_geometry- 係数を指定してジオメトリを拡大・縮小translate_geometry- オフセットを指定してジオメトリを移動
高度な演算:
triangulate_geometry- 三角形分割を作成voronoi- ボロノイ図を作成unary_union_geometries- 複数のジオメトリを結合
測定:
get_length- ジオメトリの長さを計算get_area- ジオメトリの面積を計算
検証とユーティリティ:
is_valid- ジオメトリの有効性を確認make_valid- 無効なジオメトリを修正simplify- ジオメトリを簡略化snap_geometry- 参照ジオメトリにスナップnearest_point_on_geometry- 最も近い点を検索normalize_geometry- 向きを正規化geometry_to_geojson- GeoJSON に変換geojson_to_geometry- GeoJSON から変換
🔷 PyProj 関数(合計 13 個)
座標変換:
transform_coordinates- 点の座標を変換project_geometry- CRS 間でジオメトリを投影
CRS 情報:
get_crs_info- CRS の詳細情報を取得get_available_crs- 利用可能な CRS システムを一覧表示get_utm_zone- 座標に対応する UTM ゾーンを取得get_utm_crs- 座標に対応する UTM CRS を取得get_geocentric_crs- 地心 CRS を取得
測地計算:
get_geod_info- 楕円体情報を取得calculate_geodetic_distance- 楕円体上の距離を計算calculate_geodetic_point- 距離と方位角を指定して点を計算calculate_geodetic_area- 楕円体上の面積を計算
🔷 GeoPandas 関数(合計 13 個)
入出力操作:
read_file_gpd- プレビュー付きで地理空間ファイルを読み込むwrite_file_gpd- GeoDataFrame をファイルにエクスポート
結合・マージ操作:
append_gpd- GeoDataFrame を縦方向に連結merge_gpd- データベース形式の属性結合overlay_gpd- 空間オーバーレイ操作dissolve_gpd- 属性でディゾルブexplode_gpd- マルチパートジオメトリを分割
空間操作:
clip_vector- ジオメトリをクリップsjoin_gpd- 空間結合sjoin_nearest_gpd- 最近傍の空間結合point_in_polygon- 点がポリゴン内にあるかを判定
🔷 Rasterio 関数(合計 20 個)
基本的なラスター操作:
metadata_raster- ラスターメタデータを取得get_raster_crs- ラスターの CRS を取得extract_band- 単一バンドを抽出raster_band_statistics- バンドの統計量を計算raster_histogram- ピクセルのヒストグラムを計算
ラスター処理:
clip_raster_with_shapefile- ポリゴンでラスターをクリップresample_raster- スケール係数でリサンプリングreproject_raster- 新しい CRS に再投影tile_raster- タイルに分割
ラスター解析:
compute_ndvi- 植生指数を計算raster_algebra- バンドに対する数値演算concat_bands- 単一バンドのラスターを結合weighted_band_sum- バンドを重み付けして結合
高度な解析:
zonal_statistics- ポリゴン内の統計量を計算reclassify_raster- ピクセル値を再分類focal_statistics- 移動ウィンドウ統計量を計算hillshade- DEM から陰影起伏図を生成write_raster- 配列をラスター ファイルに書き込む
🔷 PySAL 関数(全18種類)
空間的自己相関:
morans_i- グローバル Moran の I 統計量gearys_c- グローバル Geary の C 統計量gamma_statistic- ガンマ指数getis_ord_g- グローバル Getis-Ord G 統計量
ローカル統計量:
moran_local- ローカル Moran の Igetis_ord_g_local- ローカル Getis-Ord G*join_counts_local- ローカル結合カウント
グローバル統計量:
join_counts- 二値結合カウント検定adbscan- 適応型密度ベースクラスタリング
空間ウェイト:
weights_from_shapefile- shapefile からウェイトを作成distance_band_weights- 距離ベースのウェイトknn_weights- K 近傍ウェイトbuild_transform_and_save_weights- ウェイトを構築、変換、保存ols_with_spatial_diagnostics_safe- 空間診断を伴う OLS 回帰build_and_transform_weights- ウェイトを構築して変換
時空間分析:
spatial_markov- パネルデータの空間マルコフ分析dynamic_lisa- 動的 LISA(方向性 LISA)分析
空間回帰:
gm_lag- 空間ラグモデル GM_Lag 空間 2SLS/GMM-IV
🔷 可視化関数(全2種類)
静的マップの可視化(Matplotlib/GeoPandas):
create_map– shapefile、ラスター、WKT ジオメトリ、座標配列など、複数の地理空間データソースから高品質な静的マップ(PNG、PDF、JPG)を生成します。個別のスタイル設定、凡例、タイトル、グリッドオーバーレイを指定して、複数のレイヤーをサポートします。
インタラクティブな Web マップの可視化(Folium):
create_web_map– Folium を使用して、レイヤーコントロール、凡例、縮尺バー、動的なタイトル、ツールチップ、ミニマップを備えたインタラクティブな HTML マップを生成します。複数のベースマップオプションに対応し、Web ブラウザー向けのレスポンシブデザインをサポートします。
🔷 行政界関数(全1種類)
境界データのダウンロード:
download_boundaries- GADM の行政界データをダウンロードし、GeoJSON として保存
🔷 気候データ関数(全1種類)
気候データのダウンロード:
download_climate_data- 気候データ(ERA5 またはその他の CDS データセット)をダウンロード
🔷 生態データ関数(全2種類)
生態データのダウンロードと情報取得:
get_species_info– 指定した種名の分類情報を取得download_species_occurrences– 指定した種の出現記録をダウンロードし、JSON として保存
🔷 移動データ関数(全2種類)
移動データのダウンロードと経路検索(OSMnx 経由):
download_street_network– 指定した場所の道路ネットワークをダウンロードし、GraphML として保存calculate_shortest_path– 保存された道路ネットワークを使用して、2地点間の最短経路を計算
🔷 土地被覆データ関数(全2種類)
Planetary Computer の土地被覆データ:
download_worldcover– AOI/年を指定して ESA WorldCover をダウンロードします。切り抜きと再投影はオプションですcompute_s2_ndvi– Sentinel-2 L2A から NDVI を計算します。切り抜きと再投影に対応しています
🔷 衛星画像関数(全1種類)
STAC ベースの衛星データダウンロード:
download_satellite_imagery– STAC アイテム(Sentinel-2、Landsat など)のバンドをダウンロードしてスタックします。切り抜きと再投影はオプションです
利用可能な関数の合計:92
🛠 クライアント開発
ツールの使用例:
バッファー操作
Tool: buffer
Parameters: {
"geometry": "POINT(0 0)",
"distance": 10,
"resolution": 16,
"join_style": 1,
"mitre_limit": 5.0,
"single_sided": false
}
座標変換
Tool: transform_coordinates
Parameters: {
"coordinates": [0, 0],
"source_crs": "EPSG:4326",
"target_crs": "EPSG:3857"
}
測地距離
Tool: calculate_geodetic_distance
Parameters: {
"point1": [0, 0],
"point2": [10, 10],
"ellps": "WGS84"
}
静的マップの作成
Tool: create_map
Parameters: {
"layers": [
{
"data": "buildings.shp",
"style": {"label": "Buildings", "color": "red", "alpha": 0.7}
},
{
"data": "roads.shp",
"style": {"label": "Roads", "color": "black", "linewidth": 1}
}
],
"filename": "city_analysis",
"filetype": "png",
"title": "City Infrastructure Analysis",
"show_grid": true,
"add_legend": true
}
インタラクティブな Web マップの作成
Tool: create_web_map
Parameters: {
"layers": [
{
"data": "buildings.shp",
"style": {"label": "Buildings", "color": "red"}
},
{
"data": "parks.geojson",
"style": {"label": "Parks", "color": "green"}
}
],
"filename": "city_interactive.html",
"title": "City Infrastructure Map",
"basemap": "CartoDB positron",
"show_grid": true,
"add_legend": true,
"add_minimap": true
}
🔮 今後の予定
- 高度な空間インデックスを実装
- ネットワーク分析機能を実装
- 3D ジオメトリに対応
- パフォーマンスを最適化
- より多くの GIS ライブラリに対応
🤝 コントリビューション
コントリビューションを歓迎します!次の方法でご協力いただけます。
- リポジトリをフォークします
- フィーチャーブランチを作成します(
git checkout -b feature/AmazingFeature) - 変更をコミットします(
git commit -m 'Add some AmazingFeature') - ブランチにプッシュします(
git push origin feature/AmazingFeature) - プルリクエストを作成します
PR の説明には、問題と解決策を明確に記載してください。該当する場合は、関連する issue 番号も記載してください。
📄 ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については、LICENSE ファイルをご覧ください。
🔗 関連プロジェクト
| プロジェクト名 | カテゴリ | 説明 |
|---|---|---|
| Model Context Protocol | MCP 関連 | MCP のコア仕様 |
| FastMCP | MCP 関連 | MCP サーバーとクライアントを構築するための、高速で Pythonic な方法 |
| Shapely | 地理空間解析 | 幾何オブジェクトの操作と解析を行う Python パッケージ |
| PyProj | 地理空間解析 | PROJ ライブラリ用の Python インターフェース |
| GeoPandas | 地理空間解析 | 地理空間データを扱うための Python パッケージ |
| Rasterio | 地理空間解析 | 地理空間ラスターデータの読み書きを行う Python パッケージ |
| Fiona | 地理空間解析 | ベクター地理空間データ形式の読み書きを行う OGR ライブラリ用の Python インターフェース |
| PySAL | 地理空間解析 | 地理空間データサイエンス向けの Python 空間解析ライブラリ |
| Folium | 可視化 | Leaflet.js を使用してインタラクティブなウェブマップを作成する Python ライブラリ |
| PyDeck | 可視化 | 高度な 3D 可視化とインタラクティブマップを作成する Python ライブラリ |
| Matplotlib | 可視化 | 静的なマップや可視化を作成するための Python プロットライブラリ |
| cdsapi | 地理空間データ収集 | Copernicus Climate Data Store(CDS)にアクセスするための Python API |
| pygadm | 地理空間データ収集 | Python スクリプトから GADM が定義する行政界に簡単にアクセスできます |
| pygbif | 地理空間データ収集 | GBIF API(生態学および生物多様性データ)用の Python クライアント |
| OSMnx | 地理空間データ収集 | OpenStreetMap から道路ネットワークや都市の特徴をダウンロード、モデル化、解析する Python パッケージ |
| pystac-client | 地理空間データ収集 | STAC カタログ用の Python クライアント。時空間アセットを検索してアクセスできます |
| Planetary Computer SDK for Python | 地理空間データ収集 | Microsoft Planetary Computer 用の Python SDK。STAC/COG 向けの認証機能とヘルパー |
🔗 関連する MCP サーバー
| サーバー名 | 説明 |
|---|---|
| GeoServer MCP | LLM を GeoServer REST API に接続する Model Context Protocol(MCP)サーバーの実装です |
📞 サポート
サポートが必要な場合は、GitHub リポジトリで issue を作成してください。
💬 コミュニティ
ディスカッション、最新情報、サポートについては、Discord コミュニティにご参加ください。
👥 コントリビューター
contrib.rocks で作成しました。
🏆 バッジ
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。