SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【MCPサーバー開発入門】

MCP Python SDKで天気予報サーバーを開発──実装から動作確認まで徹底解説

【MCPサーバー開発入門】第2回

 本連載では、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起動

 まず、準備されているテンプレートリポジトリをフォークして開発環境を構築します。

  1. https://github.com/ry0y4n/my-mcp-server-codespacesにアクセス
  2. 右上の「Fork」ボタンをクリックしてリポジトリをフォーク
  3. フォークしたリポジトリで「Code」→「Codespaces」→「Create codespace on main」をクリック

 GitHub Codespacesが起動すると、uvがインストールされた状態でPython開発環境が準備されています。

2.プロジェクト構造の確認

 ターミナルで以下のコマンドを実行して、現在のディレクトリ構造を確認してみましょう。

bash
tree -aL 1
bash
.
├── .devcontainer
├── .git
└── .vscode
  • .devcontainerディレクトリには、Codespaces環境を定義するための設定ファイルが含まれています。
  • .gitディレクトリには、Gitリポジトリのメタデータが含まれています。
  • .vscodeディレクトリには、mcp.jsonファイルが含まれており、VS CodeでGitHub CopilotをMCPクライアントとして接続するサーバー情報が記述されています。

プロジェクトの初期化と依存関係のインストール

1.Pythonプロジェクトの初期化

 まず、uvを使ってPythonプロジェクトを初期化します。

bash
uv init weather-mcp-server
cd weather-mcp-server

 これで、基本的なPythonプロジェクト構造が作成されます。

2.必要な依存関係の追加

 天気予報MCPサーバーに必要なライブラリを追加します:

bash
uv add "mcp[cli]"

 mcp[cli]がMCP Python SDKの機能を提供します。

3.プロジェクト構造の確認

 現在のプロジェクト構造を確認してみましょう:

bash
tree

 以下のような構造になっているはずです:

weather-mcp-server/
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock

 隠しファイルも含めて詳細に確認したい場合は以下の通り:

bash
tree -aL 1

 これで.python-version.venv/ディレクトリも表示されます。

4.基本的なMCPサーバーファイルの作成

 既存のmain.pyを削除して、新しくMCPサーバーのメインファイル(weather_server.py)を作成します:

bash
rm main.py
touch weather_server.py

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます
  • ・翔泳社の本が買える!
    500円分のポイントをプレゼント

メールバックナンバー

次のページ
最初のMCPサーバーコードを作成する

この記事は参考になりましたか?

【MCPサーバー開発入門】連載記事一覧
この記事の著者

百田 涼佑(ヒャクタ リョウスケ)

 日本マイクロソフト株式会社 クラウドソリューションアーキテクト。生成AIやアプリケーション開発、開発プロセス自動化から監視・認証まで、幅広い技術支援に携わる。個人としては技術記事の執筆が好きで、関心のある技術をプロトタイピングしながら日々ナレッジを発信している。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/22162 2025/11/04 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング