Simple MCP Client / Server について
stdioの天気サーバー、クライアント実装、Inspectorによるテストを扱うPython製MCPサンプルです。MCPコンポーネントの構築と接続を学ぶ開発者向けです。
主な機能
- 01Python製stdio天気サーバー
- 02stdio・SSEクライアント例
- 03Clineへの接続手順
- 04MCP Inspectorでのローカルテスト
活用シーン
- 012つのツールを持つ天気サーバーの構築
- 02Clineからローカルサーバーへ接続
- 03MCP Inspectorによるサーバーテスト
MCP 対応
stdioとSSEを使ったMCPサーバーおよびクライアントの実装例を示します。Clineへの接続と、開発中のサーバーの検査方法も説明しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
シンプルな MCP クライアント/サーバー
https://modelcontextprotocol.io/quickstart/server
macOS および Linux に uv をインストールします。
$ curl -LsSf https://astral.sh/uv/install.sh | sh
次に、リポジトリを git clone します。
MCP サーバー(stdio)
uv init mcp_server
cd mcp_server/
uv run main.py # just to create the .venv, then rm the main.py
uv add "mcp[cli]" httpx # MCP server Python lib
touch weather_stdio.py # STDIO server implementation
サーバーを起動する
mcp_server$ uv run weather_stdio.py
VSCode + Cline でテストする
Cline に MCP サーバーを追加します。
Cline -> MCP Servers (icon close to '+') -> Installed -> Add
json テンプレート "mcpServers": {} が表示されるので、新しいサーバーを追加します。 以下が cline_mcp_settings.json です。
{
"mcpServers": {
"weather": {
"command": "uv",
"args": [
"--directory",
"/home/users/tikoehle/mcp_server",
"run",
"weather_stdio.py"
]
}
}
}
=> Cline に 2 つの get_* ツール関数が表示されます。「Done」をクリックして Cline のタスク入力画面に戻り、新しいサーバーを試します。
テスト
2 つのツールを呼び出すタスクを入力します。 "Can you tell me the weather forecast for San Francisco, CA" "Can you tell me the weather alerts for San Francisco, CA"
=> 新しい MCP「weather」サーバーの 2 つのツールを使用します。
注: ローカル MCP サーバーは stdout にメッセージをログ出力しないでください。プロトコルの動作に支障が出ます。
MCP クライアント
https://modelcontextprotocol.io/quickstart/client
uv init mcp_client
cd mcp_client/
uv run main.py # create venv
uv add mcp
touch client_stdio.py # MCP client impl.
クライアントを実行する
uv run client.py path/to/server.py
mcp_client$ uv run client_stdio.py ../mcp_server/weather_stdio.py
MCP Inspector
Node.js をインストールする
MCP サーバーのコンピュート環境に、nvm と npm を使って Linux 用の Node.js(Current)をインストールします。https://nodejs.org/en/download
cd $HOME
# Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
# in lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"
# Download and install Node.js:
nvm install 23
# Verify the Node.js version:
node -v # Should print "v23.10.0".
nvm current # Should print "v23.10.0".
# Verify npm version:
npm -v # Should print "10.9.2".
ローカルで開発したサーバーを検査する
mcp_server$ uv run mcp dev ./weather_stdio.py
Starting MCP inspector...
Proxy server listening on port 3000
🔍 MCP Inspector is up and running at http://localhost:5173 🚀
注:
最新バージョンをインストールして Inspector を起動する別の方法です。
mcp_server$ npx @modelcontextprotocol/inspector@latest
ブラウザーで MCP Inspector クライアント UI を開く
http://comp9:5173 --> Connect
注:
たとえば comp9 などのリモートコンピュート環境で MCP 開発サーバーを実行している場合、MCP Inspector クライアント UI はそのマシンに接続する必要があります。
ブラウザーで UI を起動すると、トランスポートタイプ、コマンド、引数には正しいパラメーターが表示されます。
Transport Type: STDIO
Command: uv
Arguments: run --with mcp mcp run ./weather_stdio.py
または
Transport Type: SSE
URL: http://comp9:8001/sse
注:
MCP 開発ツール
mcp_server$ uv run mcp
SSE クライアント/サーバー
サーバー
mcp_server$ uv run weather_sse.py # port 8001
クライアント
mcp_client$ uv run client_sse.py http://comp9:8001/sse
Python-SDK
https://github.com/modelcontextprotocol/python-sdk/
SSE の問題:
https://github.com/modelcontextprotocol/python-sdk/issues/398
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。