はじめに
AIエージェントが自律的にコードを書き、これまで外部ツールを使用する際は人間がコピペなどの作業をしていましたが、MCP(Model Context Protocol)」によって、いよいよ人間は指示をするだけになってきましね。
とはいえMCPサーバーの環境作るのが怠かったりで、チーム全員が使うのにはハードルありそうだな〜と思ったので、この記事ではdocker-composeで全員が同じMCPサーバーを構築する方法を記載します。
MCPとは?なぜ注目されるのか?
MCP(Model Context Protocol)は、LLM(大規模言語モデル)と外部ツール(GitHubやSlackなど)をつなぐ共通プロトコルです。
MCPサーバーを立てることで、AIが以下のようなアクションを実行できるようになります:
- GitHubのPRを取得
- JiraのIssueを検索
- Confluenceページを取得
- Slackのスレッドのやり取りを取得
MCPサーバーをローカルのDockerコンテナで構築する理由
| なぜDockerコンテナで? | 理由 |
|---|---|
| ✅ 再現性 | チーム全員が同じ環境をすぐに使える(全員がuvx環境を構築するのは手間) |
| ✅ 手早く検証 | MCPサーバーをみんなが共有できるような環境構築して〜が初期としては重い |
要は手早く、チーム全員にMCPを使ってみてほしいな〜という動機です。
MCP構成図(ローカルDocker運用)
以下のようにローカルのLLMクライアントからコンテナ内のMCPサーバーを利用するようにします。
+------------------+
| LLMクライアント |(例:Cursor, Cline, LM Studioなど)
+------------------+
|
MCPプロトコル
▼
+-------------------------+
| MCPサーバー群 (Docker) |
| ├─ GitHub |
| ├─ Jira/Confluence |
| └─ Slack |
+-------------------------+
docker-composeでMCPサーバーを構築する
今回 atlassian/Github/SlackのMCPサーバーとの連携を試してみます。
以下のようなdocker-compose.ymlを作成します。
version: '3.8'
services:
mcp-atlassian:
image: ghcr.io/sooperset/mcp-atlassian:latest
environment:
- CONFLUENCE_URL=${CONFLUENCE_URL}
- CONFLUENCE_API_TOKEN=${CONFLUENCE_API_TOKEN}
- JIRA_URL=${JIRA_URL}
- JIRA_API_TOKEN=${JIRA_API_TOKEN}
- ENABLED_TOOLS=confluence_search,jira_search,...
mcp-github:
image: ghcr.io/github/github-mcp-server:latest
environment:
- GITHUB_PERSONAL_ACCESS_TOKEN=${GITHUB_PERSONAL_ACCESS_TOKEN}
mcp-slack:
image: mcp/slack
environment:
- SLACK_TEAM_ID=${SLACK_TEAM_ID}
- SLACK_CHANNEL_IDS=${SLACK_CHANNEL_IDS}
- SLACK_BOT_TOKEN=${SLACK_BOT_TOKEN}
.envファイルに機密情報を保存し、Gitで共有しないよう .gitignore に追加しておきましょう。
任意のLLMクライアントとmcpServersで連携
今回はRooCodeで構築したMCPサーバーを使ってみます。
RooCodeの「MCPサーバー」アイコンから設定を開き、グローバルMCP or プロジェクトMCPに以下のような設定をします。

{
"mcpServers": {
"mcp-atlassian": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--net=host",
"-e",
"CONFLUENCE_URL=https://sample.atlassian.net/wiki",
"-e",
"CONFLUENCE_USERNAME=sample@xxx.yyy.zzz",
"-e",
"CONFLUENCE_API_TOKEN=ATATXXXXXXXXXX",
"ghcr.io/sooperset/mcp-atlassian:latest"
],
"alwaysAllow": [
"confluence_get_page_children",
"confluence_get_comments",
"confluence_get_labels",
"confluence_get_page",
"confluence_add_comment"
]
},
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN=ghp_XXXXXXXXXXX",
"ghcr.io/github/github-mcp-server:latest"
],
"alwaysAllow": [
"add_issue_comment",
"add_pull_request_review_comment_to_pending_review",
"create_branch",
"create_issue",
"create_pending_pull_request_review",
"create_pull_request",
"get_code_scanning_alert",
"get_commit",
"get_file_contents",
"get_issue",
"get_issue_comments",
"get_me",
"get_notification_details",
"get_pull_request",
"get_pull_request_comments",
"get_pull_request_diff",
"get_pull_request_files",
"get_pull_request_reviews",
"get_pull_request_status",
"get_secret_scanning_alert",
"get_tag",
"list_branches",
"list_code_scanning_alerts",
"list_commits",
"list_issues",
"list_notifications",
"list_pull_requests",
"list_secret_scanning_alerts",
"list_tags",
"search_code",
"search_issues",
"search_repositories",
"search_users"
]
},
"mcp-slack": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SLACK_TEAM_ID",
"-e",
"SLACK_CHANNEL_IDS",
"-e",
"SLACK_BOT_TOKEN",
"mcp/slack"
],
"env": {
"SLACK_TEAM_ID": "T123456789",
"SLACK_CHANNEL_IDS": "XXXXXXXXXXX, YYYYYYYYYYY, ZZZZZZZZZZ",
"SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}"
}
}
}
}
-
alwaysAllowはユーザーに確認を求めず直接実行できるツールを定義します -
トークンなどは適宜書き換えてください
-
Cursorも同じMCPの設定で動作します
-
勢いで作ったので、MCPの設定に冗長な部分がありそうですが、一旦スルーでお願いしますmm
正しく設定できるとdocker-compose upした後、以下のようにMCPの一覧に表示されます。

実際にMCPサーバーを使ってみる
atlassian
次にコンフルエンスのページを要約させてみましたが、うまくいってそうです!
設計書からの実装もできそうですね!
Github
試しにPRの内容を取得!
isuueも取得できるので、そこから修正や、PRのコメントから修正もできそうですね!
Slack
最後にSlackでもスレッドの要約をさせてみました!うまくいってそう!
こちらも技術的なやり取りが行われているものからコードの修正ができれば嬉しい場面はありそうです!
商用利用・ライセンスの観点から見る構成の選択肢
大体同じことがDocker Desktop Toolkitでもできます。
チームの状況によっては使い分けても良さそうです!
| 比較項目 | Docker Desktop Toolkit | docker-compose + 自作構成 |
|---|---|---|
| 商用利用制限 | あり(有償ライセンスが必要な場合あり) | なし(OSSツールベース) |
| ライセンス自由度 | △ Docker Desktop拡張に依存 | ◎ Apache/MIT ライセンスのMCP実装が多い |
| CI/CD対応 | × GUI前提で難しい | ◎ CLI構成のため自動化しやすい |
| MCP導入の手軽さ | ◎ GUIでポチポチするだけ | △ 使い方を調べてdocker-compose.ymlや.Dockerfileに記載 |
おわりに
今回はMCPをローカルのコンテナに立ち上げて使ってみました。
- フットワーク軽くチームでMCPの導入をしてみる
- 環境構築を簡単にする
- ライセンス回避
の観点を考えるとアリかな〜と思ってます。
今回の使い方は動作確認っぽい内容ですが、コミュニケーションなどの内容を実装に反映したい場合は多いので、
今後も手軽にチームにMCPを触れる環境を提供し、AI開発の価値を高めていきたいな〜と思います!


