Claude Code MCPサーバー導入ガイド|GitHub・Slack・DBをAIに接続する
Claude CodeにMCPサーバーを接続して、GitHub・Slack・データベースなどの外部ツールをAIから直接操作する方法を解説します。MCPの仕組みをUSBポートに例えて説明し、3つの統合シナリオ・セキュリティ考慮・接続トラブルシューティングまで整理しました。

Claude Codeでコードを修正した後、ターミナルを切り替えてGitHub CLIでPRを作り、ブラウザを開いてSlackで報告し、別のターミナルでDBのマイグレーション状態を確認する — このコンテキストスイッチの連続を、Claude Codeのセッション内で完結させる仕組みが MCP(Model Context Protocol) です。
本記事では、MCPの仕組みをUSBポートのアナロジーで解説し、GitHub・Slack・データベースの3つの統合シナリオを設定例付きで紹介します。さらに、各シナリオのセキュリティ考慮点と、接続が失敗したときのトラブルシューティング手順を整理します。Claude Codeの基本についてはClaude Code完全ガイドを参照してください。
結論 — MCPは「AIと外部ツールをつなぐUSBポート」
MCPとは、AIモデルが外部ツールやデータソースに安全にアクセスするための標準プロトコルです。 Anthropicが策定し、オープンスタンダードとして公開しています。
USBポートのアナロジーが最もわかりやすいです。
- USBポート = MCP(標準化されたインターフェース)
- USBデバイス = MCPサーバー(GitHub、Slack、PostgreSQL等)
- PC = Claude Code(MCPクライアント)
USBポートが登場する前は、プリンターにはプリンター専用のケーブル、スキャナーにはスキャナー専用のケーブルが必要でした。USBが標準化したことで、「ポートに差すだけ」で使えるようになりました。MCPも同じ発想です。AIツールから外部サービスにアクセスする方法を標準化し、MCPサーバーを「接続するだけ」で使えるようにしています。
MCPの構成要素と動作フロー
構成要素
| 要素 | 役割 | 具体例 |
|---|---|---|
| MCPクライアント | サーバーに接続し、ツールを呼び出す | Claude Code |
| MCPサーバー | 外部ツールのAPIをMCP形式で公開する | @modelcontextprotocol/server-github |
| ツール | MCPサーバーが提供する個別の操作 | create_pull_request, search_issues |
| リソース | MCPサーバーが提供する読み取り可能なデータ | リポジトリ一覧、チャンネル一覧 |
動作フロー
ユーザー → Claude Code → MCPサーバー → 外部サービスAPI
↑ ↓
└──── 結果をClaude Codeが解釈して返す ←──┘
- ユーザーが「Issue #42 を修正してPRを作って」と指示する
- Claude Codeがコードを修正する
- Claude CodeがGitHub MCPサーバーの
create_pull_requestツールを呼び出す - MCPサーバーがGitHub APIにリクエストを送る
- 結果(PR URL等)がClaude Codeに返され、ユーザーに報告される
統合シナリオ1 — GitHub連携
最も導入効果が高いシナリオです。Issue対応からPR作成までをClaude Codeのセッション内で完結させます。
設定手順
# MCPサーバーを追加
claude mcp add github -- npx -y @modelcontextprotocol/server-github
# 認証トークンを環境変数に設定(.zshrc等に記載)
# GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here
.claude/settings.json での設定(手動の場合)
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_ACCESS_TOKEN}"
}
}
}
}
実践的なプロンプト例
Issue #42 の内容を読み取って、修正方針を立てて、実装して、テストを書いて、
PRを作成して。PRの本文にはIssueへのリンクと変更内容のサマリーを含めて。
このプロンプト1つで、Claude Codeが以下を自動実行します。
- GitHub MCPサーバー経由でIssue #42 の詳細を取得する
- Issue内容を分析して修正方針を立てる
- コードを修正し、テストを作成する
- PRを作成し、Issueへの参照を本文に含める
セキュリティ考慮
| リスク | 対策 |
|---|---|
| トークンの権限が広すぎる | 必要最小限のスコープで発行する(repo のみ、admin は不要) |
| 全リポジトリにアクセスできる | Fine-grained tokenで対象リポジトリを限定する |
| トークンが設定ファイルに平文で保存される | ${ENV_VAR} 形式で環境変数参照にする。設定ファイルにハードコードしない |
| 意図しないPRが作成される | CLAUDE.mdに「PRは作成前に内容を表示して承認を求めること」と記載する |
推奨するトークン権限
# Fine-grained personal access token の推奨スコープ
Repository permissions:
- Contents: Read and write(コードの読み書き)
- Issues: Read and write(Issue操作)
- Pull requests: Read and write(PR操作)
- Metadata: Read-only(リポジトリ情報)
Organization permissions:
- なし(必要最小限)

統合シナリオ2 — Slack連携
作業の進捗報告やエラー通知をSlackに自動投稿するシナリオです。
設定手順
# Slack MCPサーバーを追加
claude mcp add slack -- npx -y @modelcontextprotocol/server-slack
# Slack Bot Tokenを環境変数に設定(.zshrc等に記載)
# SLACK_BOT_TOKEN にSlackアプリのBot User OAuth Tokenを設定
.claude/settings.json での設定
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}"
}
}
}
}
実践的なプロンプト例
Issue #42 の修正が完了したら、#dev-notifications チャンネルに
以下の形式で投稿して:
- Issue番号とタイトル
- 変更概要(3行以内)
- PRのURL
セキュリティ考慮
| リスク | 対策 |
|---|---|
| 意図しないチャンネルに投稿される | Slack Botの権限で投稿可能チャンネルを制限する |
| 不適切なメッセージが投稿される | CLAUDE.mdに「Slack投稿前にメッセージ内容を表示して承認を求めること」と記載する |
| Bot Tokenの漏洩 | トークンは環境変数で管理。設定ファイルにハードコードしない |
| 大量の通知でチャンネルが荒れる | 投稿頻度を制限する(例: セッション終了時のみ) |
Gotcha: Slack MCPサーバーの投稿が失敗する場合
Slack Botに必要な権限(chat:write, channels:read)が付与されていないと、投稿が not_in_channel エラーで失敗します。Botが投稿先チャンネルに参加していることも確認してください。
# Slackアプリの管理画面で必要な OAuth Scopes
chat:write — メッセージ投稿
channels:read — パブリックチャンネルの一覧取得
groups:read — プライベートチャンネルの一覧取得(必要な場合)
統合シナリオ3 — データベース連携
開発環境のデータベーススキーマをClaude Codeが直接参照し、スキーマに基づいたコード生成を行うシナリオです。
設定手順
# PostgreSQL MCPサーバーを追加
claude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres \
"$DATABASE_URL"
.claude/settings.json での設定
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"${DATABASE_URL}"
],
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
}
}
}
実践的なプロンプト例
usersテーブルとsessionsテーブルのスキーマを確認して、
ユーザーのセッション参加履歴を取得するPrismaクエリと
対応するTypeScript型定義を生成して。
セキュリティ考慮
| リスク | 対策 |
|---|---|
| 本番DBへの接続 | 本番DBへの直接接続は絶対に禁止。開発DB or 読み取り専用レプリカに限定する |
| 破壊的クエリの実行 | 読み取り専用ユーザーで接続する(SELECT 権限のみ) |
| 接続情報の漏洩 | 接続文字列は環境変数で管理。設定ファイルにハードコードしない |
| 大量データの取得 | LIMIT 句を必須にするルールをCLAUDE.mdに追加する |
推奨する接続設定
-- 開発DB用の読み取り専用ユーザーを作成
CREATE USER claude_readonly WITH PASSWORD 'secure_password';
GRANT CONNECT ON DATABASE devdb TO claude_readonly;
GRANT USAGE ON SCHEMA public TO claude_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO claude_readonly;
-- 今後作成されるテーブルにも自動で権限を付与
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO claude_readonly;
本番データベースには絶対に接続しないでください。 開発環境のDBか、読み取り専用レプリカに限定してください。

接続トラブルシューティング
MCPサーバーの接続で最もよくあるエラーと、その解決手順を整理します。
エラー1: MCP server failed to start
Error: MCP server "github" failed to start
原因と対策:
# 1. npxが使えるか確認
npx --version
# 2. MCPサーバーパッケージを直接実行して確認
npx -y @modelcontextprotocol/server-github
# 3. Node.jsのバージョンを確認(18以上が必要)
node --version
# 4. npmキャッシュをクリアして再試行
npm cache clean --force
エラー2: Authentication failed
Error: Bad credentials (401)
原因と対策:
# 1. 環境変数が設定されているか確認
echo $GITHUB_PERSONAL_ACCESS_TOKEN
# 2. トークンの有効期限を確認
# GitHub Settings > Developer settings > Personal access tokens
# 3. トークンのスコープが適切か確認
curl -H "Authorization: Bearer $GITHUB_PERSONAL_ACCESS_TOKEN" \
https://api.github.com/user
エラー3: Connection refused(DB接続)
Error: connect ECONNREFUSED 127.0.0.1:5432
原因と対策:
# 1. PostgreSQLが起動しているか確認
pg_isready -h localhost -p 5432
# 2. 接続文字列が正しいか確認
psql "$DATABASE_URL" -c "SELECT 1"
# 3. Docker環境の場合、ホスト名を確認
# docker-compose.yml のサービス名ではなく localhost を使う
エラー4: MCPサーバーが認識されない
# 登録済みのMCPサーバーを確認
claude mcp list
# 出力が空の場合、設定ファイルのパスを確認
cat .claude/settings.json | python3 -m json.tool
# JSONの構文エラーがないか確認
python3 -c "import json; json.load(open('.claude/settings.json'))"
デバッグのコツ
MCPサーバーの問題を切り分けるときは、以下の順序で確認します。
- MCPサーバーのプロセスが起動するか → npxで直接実行
- 認証が通るか → 環境変数の確認 + APIを直接叩く
- Claude Codeが認識しているか →
claude mcp list - 設定ファイルの構文が正しいか → JSONバリデーション
複数のMCPサーバーを組み合わせた実用的な設定
3つのシナリオを組み合わせた .claude/settings.json の全体像です。
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_ACCESS_TOKEN}"
}
},
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "${DATABASE_URL}"],
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
}
}
}
これにより、以下のようなワークフローがClaude Codeのセッション内で完結します。
DBのスキーマを確認して → コードを実装して → テストを書いて → PRを作成して → Slackに報告して
よくある質問
まとめ — MCPでClaude Codeの行動範囲を拡張する
MCPは、Claude Codeを「コードを書くだけのツール」から「開発ワークフロー全体を操作するエージェント」に進化させる仕組みです。
- GitHub連携でIssue対応からPR作成までをセッション内で完結できる
- Slack連携で進捗報告を自動化し、コンテキストスイッチを削減できる
- DB連携でスキーマを参照しながら型安全なコードを生成できる
- セキュリティは最小権限の原則を徹底し、トークンは環境変数で管理する
- 接続トラブルは「プロセス起動 → 認証 → 認識 → 構文」の順でデバッグする
まずはGitHub MCPサーバーの導入から始めてください。Issue対応の効率が体感できたら、Slack、DBと段階的に拡張していくのが確実なアプローチです。
koromo からの提案
AIツールの導入判断は、突き詰めると「投資対効果が合うか」「リスクを管理できるか」「事業にどう効くか」の3点に帰着します。koromo では、この判断に必要な材料を整理するところからご支援しています。
以下のような状況にある方は、まず現状の整理だけでも前に進むきっかけになります。
- AIで開発や業務を効率化したいが、自社に合う方法がわからない
- 社内にエンジニアがいない / 少人数で、AI導入の進め方に見当がつかない
- 外注先の開発会社にAI活用を提案したいが、何を求めればいいか整理できていない
- 「AIを使えばコスト削減できるはず」と感じているが、具体的な試算ができていない
ツールを使った上で相談したい方はお問い合わせフォームから「Claude Code MCP 導入の相談」とご記載ください。初回の壁打ち(30分)は無料で対応しています。
本記事の更新方針: 本記事は定期的に内容を見直しています。記事内の判断軸・運用パターンは執筆時点での koromo の実務的知見に基づくものであり、個別環境での効果を保証するものではありません。仕様の最新情報は必ず Anthropic 公式ドキュメント をご確認ください。


