SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

【MCPサーバー開発入門】

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

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

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

 まずはシンプルなHello World的な機能を持つMCPサーバーを作成して、MCPサーバーの基本的な動作を確認しましょう。

1.基本的なMCPサーバーコードの実装

 weather_server.pyファイルを開いて、以下のコードを記述してください:

python
from mcp.server.fastmcp import FastMCP

# MCPサーバーのインスタンスを作成
mcp = FastMCP("Weather MCP Server")

@mcp.tool()
def hello_weather(name: str = "World") -> str:
    """シンプルな挨拶を返すツール"""
    return f"Hello, {name}! Welcome to Weather MCP Server!"

@mcp.tool()
def server_info() -> dict:
    """サーバー情報を返すツール"""
    return {
        "name": "Weather MCP Server",
        "version": "1.0.0",
        "description": "天気予報情報を提供するMCPサーバー(開発中)"
    }

if __name__ == "__main__":
    # MCPサーバーを起動
    print("Starting MCP server...")
    mcp.run(transport="streamable-http")

2.コードのポイント解説

 作成したコードの重要なポイントを説明します:

  • FastMCPクラス:MCP SDKの高レベルAPIで、まずこれをインポートします
  • @mcp.tool()デコレータ:関数の上部にこのデコレータを付けることで、MCPツールとして登録します
  • 型ヒント:引数と戻り値の型を指定することで、MCPクライアントが適切な処理を行えます
  • docstring(ドックストリング):トリプルクォート(""")で囲まれた部分で、ツールの説明としてLLMやクライアントが利用します
  • mcp.runメソッド:MCPサーバーを起動するためのメソッドで、トランスポート方式を指定できます

3.MCPサーバーの起動

 作成したMCPサーバーを起動します:

bash
uv run weather_server.py

 正常に起動すると、以下のような出力が表示されます:

bash
Starting MCP server...
INFO:     Started server process [41454]
INFO:     Waiting for application startup.
[08/21/25 16:01:14] INFO     StreamableHTTP session manager started                                                                                       streamable_http_manager.py:110
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

 重要:下部パネルの「ポート」タブで8000番ポートを「Private」から「Public」に変更してください。これによりCodespacesの外部にあるMCPクライアントからアクセスできるようになります。

MCPサーバーのポート表示範囲をパブリックに変更する
MCPサーバーのポート表示範囲をパブリックに変更する

MCPクライアントからの接続確認

 作成したMCPサーバーの動作を確認するため、2つの方法でテストしてみましょう。

方法1:MCP Inspector

 MCP Inspectorは、Anthropicが提供しているMCPサーバーの開発・デバッグに特化したツールです。MCPクライアントとして、開発したMCPサーバーの動作確認ができます。

1.MCP Inspectorのインストールと起動

 お手元のPC(Codespaces外)で以下のコマンドを実行してMCP Inspectorを起動します:

bash
npx @modelcontextprotocol/inspector

 注意:MCP InspectorはNode.js(v22.7.5以上)環境で動作します。Node.jsがインストールされていない場合は、公式サイトまたはasdfなどのランタイム管理ツールからインストールしてください。

MCP InspectorのUI
MCP InspectorのUI

2.接続設定

 MCP Inspectorが開いたら、以下の設定で接続します:

  1. Transport:「Streamable HTTP」を選択
  2. URL:URLを以下の形式で入力
    • Codespacesページでのリンクがhttps://sturdy-adventure-j4gx7649r66hjpvp.github.devの場合
    • MCP Inspector URL欄への入力値:https://sturdy-adventure-j4gx7649r66hjpvp-8000.app.github.dev/mcp
    • パターン:https://[codespace-name]-8000.app.github.dev/mcp

3.動作確認

  1. Connect」ボタンをクリック
  2. 接続が成功すると「Connected」と表示される
  3. Tools」タブの「List Tools」で「hello_weather」と「server_info」の2つのツールが表示されることを確認
  4. 各ツールを実行してレスポンスが正しく返されることを確認
MCP Inspectorからのツール呼び出し結果
MCP Inspectorからのツール呼び出し結果

方法2:GitHub Copilot(VS Code内で接続)

 GitHub CopilotをMCPクライアントとして使用することで、より実用的な環境でテストできます。

 GitHub Copilotは、VS Codeをはじめとしたさまざまな開発環境で利用できるAIコーディングアシスタントです。GitHub Copilotのエージェント モードはMCPクライアントとしても機能し、MCPサーバーに接続してツールを呼び出すことができます。

1.GitHub Copilotの準備

 GitHub Copilotが利用可能である必要があります:

  • GitHub Copilot有料プランをお持ちの場合:そのままご利用ください
  • GitHub Copilot Freeプランをお持ちでない場合:GitHub CopilotにアクセスしてFreeプランに登録してください。月に50件までエージェントモードまたはチャットリクエストを行えます。

 VS CodeでGitHub Copilot拡張機能が有効になっていることを確認してください。

2.MCP設定ファイルの確認

 .vscode/mcp.jsonに以下の設定が記述されていることを確認してください:

json
{
    "servers": {
        "weather-mcp-server": {
            "url": "http://localhost:8000/mcp",
            "type": "http"
        }
    }
}

 この設定により、GitHub Copilotがローカルホストの8000番ポートで動作しているMCPサーバーに接続できるようになります。

3.接続と動作確認

1. VS Codeで設定したサーバー名の上に表示された「起動」ボタンをクリックして接続
VS Code上でMCPサーバーに接続
VS Code上でMCPサーバーに接続
2. GitHub Copilotのチャット欄を開く

 #server_infoと入力して送信

 GitHub Copilotがserver_infoツールを呼び出してよいか確認するモーダルを表示するので「続行」をクリック

ツール呼び出しを承認
ツール呼び出しを承認
3. サーバー情報が正しく出力されることを確認
ツール呼び出し結果
ツール呼び出し結果

 Tip:GitHub Copilotは入力内容から適切なMCPサーバーとツールを自動で選択しますが、#ツール名形式で明示的にツールの使用を指定することも可能です。

次のページ
天気予報機能の実装

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

イベント

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

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

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

メールバックナンバー