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サーバーを登録しています。command
とargs
は、Dockerコンテナを実行するための設定です。autoApprove
は、自動的に承認するツールを指定します。disabled
は、サーバーを有効にするかどうかを指定します。
動作確認
-
Dockerイメージをビルドします。
bash
docker build -t weather-server-python . -
MCPサーバーを起動します。
cline_mcp_settings.json
を編集後、MCPを再起動してください。
HTTPの通信結果がエラーぽく見えますが、問題ありません -
動作確認をします。
MCPクライアントを使用して、天気情報を取得できることを確認してください。
APIキーなしだと米国にしか対応していないようなので、
サンフランシスコの天気を教えて
などがよさそうです。