記事一覧に戻る
development·

Claude Code MCPサーバー導入ガイド|GitHub・Slack・DBをAIに接続する

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

#Claude Code#Claude Code 実践#MCP
Claude Code MCPサーバー導入ガイド|GitHub・Slack・DBをAIに接続する

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が解釈して返す ←──┘
  1. ユーザーが「Issue #42 を修正してPRを作って」と指示する
  2. Claude Codeがコードを修正する
  3. Claude CodeがGitHub MCPサーバーの create_pull_request ツールを呼び出す
  4. MCPサーバーがGitHub APIにリクエストを送る
  5. 結果(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が以下を自動実行します。

  1. GitHub MCPサーバー経由でIssue #42 の詳細を取得する
  2. Issue内容を分析して修正方針を立てる
  3. コードを修正し、テストを作成する
  4. 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サーバーの問題を切り分けるときは、以下の順序で確認します。

  1. MCPサーバーのプロセスが起動するか → npxで直接実行
  2. 認証が通るか → 環境変数の確認 + APIを直接叩く
  3. Claude Codeが認識しているかclaude mcp list
  4. 設定ファイルの構文が正しいか → 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 公式ドキュメント をご確認ください。

関連記事