Dev Container で Claude Code × MCP Server を動かしてみた
Dev Container で Claude Code × MCP Server を動かしてみた
※この記事では、VS Code の Dev Container 上で Claude Code を利用し、
GitHub / Bitbucket / AWS(aws-knowledge / aws-diagram / cloudwatch / aws-api)などの MCP Server を動かすための環境構築手順をまとめています。
1. はじめに
普段は VS Code の Dev Container を使って開発しています。
ローカル環境を汚さずに済むし、どこでも同じ状態を再現できるので、新しい技術を触るときもまず Dev Container を作るのが定番になっています。
今回は、そんな普段の開発環境に Claude Code(VS Code 用の Claude 拡張) を組み込んで、
GitHub / Bitbucket / AWS の MCP Server をまとめて扱えるようにしてみました。
なお、この記事は Claude Code が利用可能なアカウント(Pro / Max / Team / Enterprise)を持っている前提 で進めます。
無料プランでは Claude Code(VS Code から使う機能)は利用できないので注意してください。
本記事の目的は:
- Dev Container の中で MCP Server を動かせる環境を整備し
- VS Code の Claude Code から
GitHub / Bitbucket / AWS(aws-knowledge / aws-diagram / cloudwatch / aws-api)
を直接扱えるようにすること
です。
2. 全体の流れとアーキテクチャ
今回の記事で行う手順をまとめると次のとおりです:
- Dev Container を用意
- Dev Container 内に uv + 各 MCP Server をインストール
- VS Code に Claude Code 拡張 をインストール
- Claude の設定(ユーザースコープ)に MCP Server を登録
- GitHub / Bitbucket / AWS を Claude Code から呼び出す
🖼 全体像イメージ(Mermaid 図)
3. 事前準備(環境・前提)
必要なもの
- VS Code
- Dev Containers 拡張
- Docker Desktop(または同等の環境)
- Claude Code が利用可能な Claude アカウント
※無料プランでは VS Code から使えません - GitHub / Bitbucket / AWS アカウント
🔐 認証情報(今回の構成)
環境内で MCP Server を使うため、以下の認証情報を準備しています。
● GitHub
- Personal Access Token(PAT)
- リポジトリ参照ができればよいので、読み取り専用で OK
● Bitbucket
- Atlassian API Token(App Password)
- 認証は ユーザー名 + App Password
- 読み取り権限で OK
● AWS
- ローカルの
~/.aws/credentialsを Dev Container にマウント -
aws-diagram/cloudwatch/aws-apiでは IAM 権限が必要 -
aws-knowledgeは認証不要
4. Dev Container 環境の構築
今回の Dev Container 構成は次の 5 つで成り立っています。
.devcontainer/devcontainer.json.devcontainer/docker-compose.yml.devcontainer/Dockerfile.devcontainer/.env.devcontainer/scripts/setup.sh
4-1. devcontainer.json(全文)
// .devcontainer/devcontainer.json
{
"name": "AI MCP Agent",
"dockerComposeFile": "docker-compose.yml",
"service": "app",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
"remoteEnv": {
"LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}",
"PATH": "/home/vscode/.local/bin:/home/vscode/.local/share/aquaproj-aqua/bin:${containerEnv:PATH}"
},
"features": {
"ghcr.io/devcontainers/features/docker-outside-of-docker:1": {
"version": "latest",
"enableNonRootDocker": "true",
"moby": "true"
},
"ghcr.io/devcontainers-extra/features/aws-cdk:2": {},
"ghcr.io/aquaproj/devcontainer-features/aqua-installer:0.1.6": {
"aqua_version": "v2.53.3"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "24",
"nodeGypDependencies": true
},
"ghcr.io/devcontainers/features/python:1": {
"version": "3.12",
"installTools": true,
"installJupyterlab": false
}
},
"customizations": {
"vscode": {
"extensions": [
"Anthropic.claude-code",
"GitHub.copilot",
"GitHub.copilot-chat",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"ms-vscode.vscode-typescript-next",
"amazonwebservices.aws-toolkit-vscode",
"ms-azuretools.vscode-docker",
"eamodio.gitlens",
"mhutchie.git-graph",
"ms-python.python",
"ms-python.vscode-pylance",
"christian-kohler.path-intellisense",
"streetsidesoftware.code-spell-checker",
"redhat.vscode-yaml",
"ms-ceintl.vscode-language-pack-ja"
]
}
},
"postCreateCommand": "bash ${PWD}/.devcontainer/scripts/setup.sh",
"mounts": [
{ "source": "/var/run/docker.sock", "target": "/var/run/docker.sock", "type": "bind" },
{ "source": "${localEnv:HOME}/.gitconfig", "target": "/home/vscode/.gitconfig", "type": "bind", "consistency": "cached" },
{ "source": "${localEnv:HOME}/.ssh", "target": "/home/vscode/.ssh", "type": "bind", "consistency": "cached" },
{ "source": "${localEnv:HOME}/.aws", "target": "/home/vscode/.aws", "type": "bind", "consistency": "cached" },
{ "source": "${localEnv:HOME}/.claude", "target": "/home/vscode/.claude", "type": "bind", "consistency": "cached" },
{ "source": "${localEnv:HOME}/.claude.json", "target": "/home/vscode/.claude.json", "type": "bind", "consistency": "cached" }
],
"remoteUser": "vscode"
}
4-2. docker-compose.yml(全文)
# .devcontainer/docker-compose.yml
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
env_file:
- .env
volumes:
- /var/run/docker.sock:/var/run/docker-host.sock
- ../..:/workspaces:cached
entrypoint: /usr/local/share/docker-init.sh
command: sleep infinity
container_name: ai-mcp-agent-dev
4-3. Dockerfile(全文)
# .devcontainer/Dockerfile
FROM mcr.microsoft.com/devcontainers/base:bookworm
ENV DEBIAN_FRONTEND=noninteractive
ENV LANG=ja_JP.UTF-8
ENV LANGUAGE=ja_JP:ja
ENV LC_ALL=ja_JP.UTF-8
RUN apt-get update && \
apt-get install -y locales && \
sed -i -E 's/# (ja_JP.UTF-8)/\1/' /etc/locale.gen && \
locale-gen ja_JP.UTF-8 && \
update-locale LANG=ja_JP.UTF-8 && \
rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
4-4. マウントポイントと構成の考え方
以下のフォルダをマウントする構成にしています。
-
/var/run/docker.sock
→ コンテナ内で Docker を使うため -
~/.gitconfig
→ Git 設定を引き継ぐため -
~/.ssh
→ private repo などを扱うため -
~/.aws
→ AWS profile をそのまま利用 -
~/.claude/~/.claude.json
→ Claude Code の設定をホスト側と共有
4-5. setup.sh(全文)
# .devcontainer/scripts/setup.sh
#!/bin/bash
set -e
echo "🚀 Setting up development environment..."
# aqua でツールをインストール
echo "📦 Installing tools with aqua..."
aqua install -a
# Python パッケージのインストール(MCP から使う可能性のあるもの)
echo "🐍 Installing Python packages..."
pip3 install --user boto3 pytest requests
# uv ツールを導入(Python パッケージ管理を高速化)
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "✅ Dev container ready!"
4-6. .env(全文)
NETWORK_DRIVER=bridge
TZ=Asia/Tokyo
AWS_PROFILE=your-profile
AWS_REGION=ap-northeast-1
AWS_CREDENTIAL_PATH_HOST=~/.aws
GITHUB_TOKEN="ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
ATLASSIAN_USER_EMAIL="your.name@example.com"
ATLASSIAN_API_TOKEN="atlassian_xxxxxxxxxxxxxxxxxxxxxxxxx"
5. MCP Server のインストール(Dev Container 内)
この章では、Dev Container の中に MCP Server をインストールしていきます。
5-1. GitHub MCP(remote 形式)
GitHub MCP は公式レポジトリから直接インストールしています。
uv pip install git+https://github.com/modelcontextprotocol/github-mcp
remote 版の利点
- 最新版をすぐ利用できる
- 修正や追加 API に追従しやすい
- Claude Code での検証に向いている
5-2. Bitbucket MCP
Bitbucket は PyPI 配布版を利用します。
uv pip install mcp-bitbucket
主な用途:
- プロジェクト一覧
- リポジトリ一覧
- ブランチ取得
- ファイル取得
認証は ATLASSIAN_USER_EMAIL + ATLASSIAN_API_TOKEN を利用します。
5-3. AWS 系 MCP(4 種)
AWS では 4 つの MCP を使います。
● 1️⃣ aws-knowledge(HTTP:インストール不要)
AWS 公式の Knowledge Base(仕様・ドキュメント検索)を扱う MCP。
インストール不要で、設定ファイルに URL を書くだけで使えます。
● 2️⃣ aws-diagram(stdio)
AWS リソースの構成図(Mermaid / PlantUML)を生成する MCP。
uv pip install mcp-aws-diagram
● 3️⃣ cloudwatch(stdio)
CloudWatch Logs / Metrics を取得する MCP。
uv pip install mcp-aws-cloudwatch
● 4️⃣ aws-api(stdio)
AWS API を直接叩く MCP(任意のサービス・アクションを実行可能)。
uv pip install mcp-aws-api
IAM 認証が必要な MCP では、
AWS_PROFILE / AWS_REGION を環境変数として指定する構成を取っています。
5-4. MCP Server インストールまとめ
| カテゴリ | MCP 名 | インストール方法 |
|---|---|---|
| GitHub | github-mcp | remote install |
| Bitbucket | mcp-bitbucket | uv install |
| AWS | aws-knowledge | インストール不要(HTTP MCP) |
| AWS | aws-diagram | uv install |
| AWS | cloudwatch | uv install |
| AWS | aws-api | uv install |
6. VS Code で Claude 拡張をセットアップ
6-1. ❗ VS Code の settings.json に MCP を書いても動かない
6-2. MCP 設定ファイルの保存場所
| スコープ | パス | 説明 |
|---|---|---|
| ユーザースコープ(今回採用) | ~/.claude.json |
全プロジェクト共通 |
| プロジェクトスコープ | <project>/.mcp.json |
プロジェクト専用 |
6-3. 今回のセットアップ方針
あなたの環境では /home/vscode/.claude.json をマウントしているため、
ユーザースコープで管理するのが最適 です。
6-4. ~/.claude.json(全文)
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp",
"headers": {
"Authorization": "Bearer ${GITHUB_TOKEN}"
}
},
"bitbucket": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@aashari/mcp-server-atlassian-bitbucket"
],
"env": {
"ATLASSIAN_USER_EMAIL": "${ATLASSIAN_USER_EMAIL}",
"ATLASSIAN_API_TOKEN": "${ATLASSIAN_API_TOKEN}"
}
},
"aws-diagram": {
"type": "stdio",
"command": "uvx",
"args": [
"awslabs.aws-diagram-mcp-server@latest"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
}
},
"aws-knowledge": {
"type": "http",
"url": "https://knowledge-mcp.global.api.aws"
},
"cloudwatch": {
"type": "stdio",
"command": "uvx",
"args": [
"awslabs.cloudwatch-mcp-server@latest"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"AWS_PROFILE": "${AWS_PROFILE}",
"AWS_DEFAULT_REGION": "${AWS_DEFAULT_REGION}",
"AWS_REGION": "${AWS_REGION}"
}
},
"aws-api": {
"type": "stdio",
"command": "uvx",
"args": [
"awslabs.aws-api-mcp-server@latest"
],
"env": {
"AWS_PROFILE": "${AWS_PROFILE}",
"AWS_REGION": "${AWS_REGION}"
}
}
}
}
6-6. 正しく設定されるとこうなる(UI)

7. MCP サーバーの動作確認
7-1. GitHub MCP

7-2. Bitbucket MCP

7-3. AWS Diagram MCP

7-4. AWS Knowledge MCP

7-5. AWS API MCP

8. まとめ
本記事では次の内容を構築しました。
- Dev Container + uv ベースの MCP 実行環境
- GitHub / Bitbucket / AWS MCP Server の導入
- Claude Code(VS Code 拡張)からの MCP 呼び出し
- AWS 図生成(aws-diagram)、API 呼び出し(aws-api)、CloudWatch 参照(cloudwatch)
これにより、VS Code 内で:
- リポジトリ解析
- AWS 図の自動生成
- CloudWatch ログ調査
- GitHub / Bitbucket の Issue 自動化
などを Claude にそのまま任せられる環境 が整いました。
Discussion