これまでのおさらい
はじめに
前回の記事では、MCPの基本概念と実際の動作を確認しました。今回は実際にMCP SDKを使って、独自のMCPサーバーを開発していきます。
今回開発するMCPサーバーのコードは、以下のGitHubリポジトリ(finalブランチ)で公開しています。
対象読者
- 生成AIやLLMの基礎知識がある方
- VS CodeやLLMを触ったことがあるエンジニア
- 企業で業務活用を検討中の担当者
必要な環境
- GitHub Copilot/Codespacesが有効なGitHubアカウント
MCP Python SDKとは?
MCP Python SDKは、MCPを提唱したAnthropic社が公開する、MCPプロトコルを実装するためのPythonライブラリです。このSDKを使うと、MCPサーバーやクライアントを簡単に構築できます。
主な特徴
サーバー・クライアント双方の開発をサポート
- MCPサーバーを構築して、LLMに対して「Resources」「Tools」「Prompts」などを提供可能
- MCPクライアントとして、MCPサーバーにも接続できるアプリケーションを作成可能
サーバーとクライアント、どちらもこのPython SDK一つで開発できます。
種々の通信方式をサポート
- 標準入出力(stdio)
- Server-Sent Events(SSE)
- Streamable HTTP
これらのトランスポート層をサポートし、ローカル/リモートのどちらでも柔軟に適用可能です。
今回作成するもの
今回は天気予報MCPサーバーを作成します。このサーバーでは以下の機能を提供します:
- 現在の天気情報取得
- 7日間の天気予報取得
- 時間別の詳細予報取得
天気データはOpen-MeteoのAPI(日本気象庁データ)を使用します。このAPIは無料で利用でき、APIキーも不要なため、すぐに始められます。
開発環境のセットアップ
1.リポジトリのフォークとGitHub Codespaces起動
まず、準備されているテンプレートリポジトリをフォークして開発環境を構築します。
- https://github.com/ry0y4n/my-mcp-server-codespacesにアクセス
- 右上の「Fork」ボタンをクリックしてリポジトリをフォーク
- フォークしたリポジトリで「Code」→「Codespaces」→「Create codespace on main」をクリック
GitHub Codespacesが起動すると、uvがインストールされた状態でPython開発環境が準備されています。
2.プロジェクト構造の確認
ターミナルで以下のコマンドを実行して、現在のディレクトリ構造を確認してみましょう。
tree -aL 1
. ├── .devcontainer ├── .git └── .vscode
-
.devcontainerディレクトリには、Codespaces環境を定義するための設定ファイルが含まれています。 -
.gitディレクトリには、Gitリポジトリのメタデータが含まれています。 -
.vscodeディレクトリには、mcp.jsonファイルが含まれており、VS CodeでGitHub CopilotをMCPクライアントとして接続するサーバー情報が記述されています。
プロジェクトの初期化と依存関係のインストール
1.Pythonプロジェクトの初期化
まず、uvを使ってPythonプロジェクトを初期化します。
uv init weather-mcp-server cd weather-mcp-server
これで、基本的なPythonプロジェクト構造が作成されます。
2.必要な依存関係の追加
天気予報MCPサーバーに必要なライブラリを追加します:
uv add "mcp[cli]"
mcp[cli]がMCP Python SDKの機能を提供します。
3.プロジェクト構造の確認
現在のプロジェクト構造を確認してみましょう:
tree
以下のような構造になっているはずです:
weather-mcp-server/ ├── README.md ├── main.py ├── pyproject.toml └── uv.lock
隠しファイルも含めて詳細に確認したい場合は以下の通り:
tree -aL 1
これで.python-versionや.venv/ディレクトリも表示されます。
4.基本的なMCPサーバーファイルの作成
既存のmain.pyを削除して、新しくMCPサーバーのメインファイル(weather_server.py)を作成します:
rm main.py touch weather_server.py
