WindowsでPythonを使用したMCPサーバーの構築方法

はじめに

Model Context Protocol (MCP) は、大規模言語モデル(LLM)の能力を拡張するための新しいプロトコルです。
このプロトコルを実装したMCPサーバーは、LLMとの間で標準化された方法で通信し、外部データへのアクセスやAPIとの連携など新しい機能をLLMに提供します。つまり、MCPサーバーはLLMと外部世界を繋ぐ橋渡し役として機能し、LLMの能力を大幅に拡張します。

この記事では、Windows環境でPythonを使用してMCPサーバーを構築する方法を解説します。
具体的には、天気予報と気象警報を取得できるMCPサーバーを作成し、Claude for Desktopと連携させる方法を紹介します。
このサーバーを通じて、Claudeは天気情報にアクセスできるようになります。

必要な環境

  • Windows 10/11
  • Python 3.10以上
  • MCP Python SDK 1.2.0以上
  • Claude for Desktop

1. 環境のセットアップ

まず、Pythonの環境を整えましょう。パッケージマネージャーとしてuvを使用します。

uvのインストール

PowerShellを管理者権限で開き、以下のコマンドを実行します。

# uvのインストール
curl.exe -LsSf https://astral.sh/uv/install.ps1 | powershell -c -

# PowerShellを再起動して、uvコマンドが認識されるようにします

プロジェクトの作成

次に、プロジェクトディレクトリを作成し、必要なパッケージをインストールします。

# プロジェクトディレクトリの作成
uv init weather
cd weather

# 仮想環境の作成と有効化
uv venv
.\.venv\Scripts\Activate.ps1

# 依存パッケージのインストール
uv add "mcp[cli]" httpx

# サーバーファイルの作成
New-Item -Path . -Name "weather.py" -ItemType "file"

2. MCPサーバーの構築

MCPサーバーの実装については、公式ドキュメントに詳細な手順とコード例が記載されています。基本的な構造は以下の通りです。

  1. FastMCPサーバーの初期化
  2. APIリクエスト用のヘルパー関数の実装
  3. ツール(get_alerts、get_forecast)の実装
  4. サーバーの実行

完全なコード例は公式ドキュメントを参照してください。

3. Claude for Desktopでのテスト

次に、作成したサーバーをClaude for Desktopで使用できるように設定します。

設定ファイルの編集

Claude for Desktopの設定ファイルを編集して、MCPサーバーを登録します。

%APPDATA%\Claude\claude_desktop_config.jsonファイルをテキストエディタで開きます。(存在しない場合は作成)
以下のようにMCPサーバーを設定します。
%APPDATA%\Claude\claude_desktop_config.json

{
 "mcpServers":{
  "weather":{
  "command":"uv",
  "args":[
   "--directory",
   "C:\\絶対パス\\weather",
   "run",
   "weather.py"
   ]
  }
 }
}

commandフィールドにはuv実行ファイルへのフルパスが必要な場合があります。
where uvコマンドで確認できます)

重要:設定変更の反映について

注意点: Claude for Desktopの設定ファイルを編集した後、変更が反映されない現象が発生することがあります。

問題: 設定ファイル(claude_desktop_config.json)を編集した後、Claude for Desktopを通常の方法(×ボタンなど)で閉じても、アプリケーションが完全に終了せず、バックグラウンドで実行され続けることがあります。この状態では、設定変更が反映されません。

解決方法:
1. 左上のハンバーガーメニュー>ファイル>「終了」を押して、アプリケーションを完全に終了させる
2. その後、Claude for Desktopを再起動する

この手順を踏むことで、設定変更が確実に反映されます。

テスト

Claude for Desktopが正常に起動したら、プロンプト入力欄の右側のハンマーアイコンをクリックして
登録したツールが表示されることを確認します。

試しに「NYの天気」と聞いてみると
Claudeが先ほど実装したMCPサーバー「weather」の「get_alerts」を実行して、現在NYで発令されている注意報の情報を教えてくれました。

4. トラブルシューティング

Claude for Desktopの統合に関する問題

ログの確認
MCPに関連するログは%APPDATA%\Claude\logsにあります。

# Claudeのログでエラーを確認
Get-Content -Path "$env:APPDATA\Claude\logs\mcp*.log" -Tail 20 -Wait

サーバーが認識されない場合

  1. 上記の「設定変更の反映について」の手順に従ってClaude for Desktopを完全に再起動
  2. 設定ファイルの構文を確認
  3. 絶対パスを使用していることを確認

ツール呼び出しが失敗する場合

  1. 上記の「設定変更の反映について」の手順に従ってClaude for Desktopを完全に再起動
  2. ログでエラーを確認
  3. サーバーが正常に動作することを確認

まとめ

この記事では、Windows環境でPythonを使用してMCPサーバーを構築し、Claude for Desktopと連携させる方法を解説しました。特に、設定変更後にClaude for Desktopを完全に終了・再起動する必要がある点に注意してください。

MCPを使用することで、LLMの能力を大幅に拡張し、外部データやAPIとの連携を可能にすることができます。
今回作成した天気サーバーは単純な例ですが、同じ原則を使用して
さまざまなAPIやデータソースと連携する独自のMCPサーバーを構築できます。

詳細な実装については公式ドキュメントを参照し、ぜひ試してみてください!!