MCP Weather ServerチュートリアルをDocker+Clineでやってみる

IT・プログラミング

Model Context Protocol (MCP) は、様々なツールやリソースを統合するためのフレームワークです。今回は、自分でMCPサーバーを開発するときにまずやってみるであろう天気予報チュートリアルをDockerで動かしてみたので、その方法を紹介します。

必要なもの

  • Docker環境

チュートリアルリポジトリのClone

チュートリアルは以下のページになります。

ここにある通りにやってみてもよかったのですが、ローカルを汚したくなかったので、Cline+Dockerでやってみました。

以下のリポジトリをクローンします。

git clone https://github.com/modelcontextprotocol/quickstart-resources.git

Dockerfileの作成と解説

Pythonの場合

quickstart-resources/weather-server-python/Dockerfile を作成します。

FROM python:3.12-slim-bookworm

# ベースイメージとしてPython 3.12のslim版を使用します。

WORKDIR /app

# 作業ディレクトリを/appに設定します。

COPY quickstart-resources/weather-server-python/pyproject.toml ./
COPY quickstart-resources/weather-server-python/README.md ./
COPY quickstart-resources/weather-server-python/weather.py ./

# ファイルをコンテナにコピーします。

RUN pip install uv
RUN uv venv
RUN . .venv/bin/activate
RUN uv add "mcp[cli]" httpx

# 依存関係をインストールします。

CMD ["uv", "run", "weather.py"]

# サーバーを起動します。

TypeScriptの場合

TypeScriptの場合のDockerが以下のような形で動きました。

FROM node:22-alpine

WORKDIR /app

COPY quickstart-resources/weather-server-typescript/package*.json ./
RUN npm install

COPY quickstart-resources/weather-server-typescript/tsconfig.json ./
COPY quickstart-resources/weather-server-typescript/src/index.ts ./src/index.ts
RUN npm run build

CMD ["node", "build/index.js"]

MCP設定ファイルの編集

cline_mcp_settings.json を編集します。
MCPサーバー設定のConfigure MCP Serversで開けます。

一般的なClineでのMCPサーバーの設定方法を知っている前提で進めていきます。
そのあたりが怪しい場合は以下を参考にしてください。

{
  "mcpServers": {
    "weather-server-python": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "weather-server-python"
      ],
      "autoApprove": [],
      "disabled": false,
      "timeout": 60,
      "transportType": "stdio"
    }
  }
}

この設定では、weather-server-pythonという名前でMCPサーバーを登録しています。commandargsは、Dockerコンテナを実行するための設定です。autoApproveは、自動的に承認するツールを指定します。disabledは、サーバーを有効にするかどうかを指定します。

動作確認

  1. Dockerイメージをビルドします。

    bash
    docker build -t weather-server-python .

  2. MCPサーバーを起動します。

    cline_mcp_settings.json を編集後、MCPを再起動してください。

    HTTPの通信結果がエラーぽく見えますが、問題ありません

  3. 動作確認をします。

    MCPクライアントを使用して、天気情報を取得できることを確認してください。
    APIキーなしだと米国にしか対応していないようなので、
    サンフランシスコの天気を教えて
    などがよさそうです。

タイトルとURLをコピーしました