本連載では、MCP(Model Context Protocol)を使ってLLMと外部ツールを統合する方法を解説します。MCPは、LLMと外部システムをつなぐためのオープン標準であり、開発者にとっては組み合わせ爆発の解消やプラグアンドプレイ型の拡張性を提供するものです。MCPを利用することで、LLMアプリケーションの開発・運用が大幅に効率化することが期待されています。
これまでのおさらい
はじめに
前回の記事では、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
この記事は参考になりましたか?
- 【MCPサーバー開発入門】連載記事一覧
-
- MCPサーバーに認証・認可を導入してみよう──セキュアな公開に向けた実装手順
- MCP Python SDKで天気予報サーバーを開発──実装から動作確認まで徹底解説
- Anthropic発「MCP」とは何か? 基本概念から実践まで一気通貫で解説
- この記事の著者
-
百田 涼佑(ヒャクタ リョウスケ)
日本マイクロソフト株式会社 クラウドソリューションアーキテクト。生成AIやアプリケーション開発、開発プロセス自動化から監視・認証まで、幅広い技術支援に携わる。個人としては技術記事の執筆が好きで、関心のある技術をプロトタイピングしながら日々ナレッジを発信している。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
