本文へスキップ
Claude Media
MCP実用ガイド — Google Drive / Slack / GitHub連携と自作サーバー最小実装

MCP実用ガイド — Google Drive / Slack / GitHub連携と自作サーバー最小実装

Claude Codeの MCP をGoogle Drive / Slack / GitHubに繋ぎ、@modelcontextprotocol/sdk で自作サーバーも書くための実践ガイドです。

読了目安 約22

要点

Claude CodeのMCP(Model Context Protocol)は、AIと外部ツールをつなぐUSB-C規格のような役割を持ちます。Google Driveからドキュメントを引き、Slackに進捗を流し、GitHubのPRをレビューするといった横断操作を、Claude Codeのプロンプトひとつで回せるようになります。以下では、事前登録済みコネクタの接続手順、OAuthとスコープの使い分け、@modelcontextprotocol/sdk を使った最小自作サーバー、そしてどのユースケースでどのサーバー方式を選ぶかの判断早見表までを、実際のコマンドとコードを添えて扱います。

MCPの基本 — 何ができるのか

MCPはオープンソースの標準プロトコルで、AIアプリケーション(Claude Code / Claude Desktop / Cursorなど)と外部のデータソース・ツール・ワークフローを接続するための共通規約です。クライアント側が個別APIを覚える必要がなくなり、サーバー側は一度作れば複数のAIクライアントから使えるという利点があります。

Claude CodeにMCPサーバーを接続すると、以下のような指示が自然言語で実行可能になります。

  • 「JIRAの ENG-4521 を読んで、対応するPRをGitHubに作成してください」
  • 「PostgreSQLの orders テーブルで、過去30日に購入がない顧客のメールアドレスを10件取得してください」
  • 「Figmaの最新デザインをもとに、メールテンプレートを更新してください」

MCPサーバーは機能面で3種類の資源を公開できます。

種別内容Claude Codeでの使い方
ToolsLLMから呼べる関数(副作用あり)通常のツール呼び出し。ユーザー承認あり
Resourcesファイル相当の読み取り専用データ@server:scheme://path で参照
Prompts事前定義されたテンプレート/mcp__server__prompt で実行

Toolsはいわゆる関数呼び出し、Resourcesは @github:issue://123 のように @ メンションで添付できるコンテキスト、Promptsはスラッシュコマンドとして入力欄で呼び出せるテンプレートです。

事前登録済みコネクタ(Google Drive / Slack / GitHub)

Anthropicが運営するMCPレジストリには、多数の公式・サードパーティサーバーが並んでいます。Claude Codeは claude mcp add の一行で、これらの多くをそのまま接続できます。代表的なコネクタを整理すると以下のとおりです。

サービストランスポート認証向いている用途
GitHubHTTPOAuth 2.0PRレビュー、Issue作成、リポジトリ横断検索
Google DriveHTTPOAuth 2.0ドキュメント取得、スプレッドシート参照
SlackHTTPOAuth 2.0チャンネル投稿、メッセージ検索
SentryHTTPOAuth 2.0本番エラー分析、スタックトレース取得
NotionHTTPOAuth 2.0ページ検索、データベース参照
PostgreSQL(dbhub)stdio接続文字列社内DBへの読み取りクエリ

HTTPトランスポートはクラウド側で認証・認可まで面倒を見てくれる一方、stdioは自分のマシンでMCPサーバープロセスを起動する方式のため、機密接続文字列や社内ツールと相性がよいという住み分けになります。

接続手順(代表的3サービス)

Google Drive / Slack / GitHubの3つを順に接続する流れを示します。どれも claude mcp add とClaude Code内での /mcp コマンドでのOAuth認証という2ステップで完結します。

GitHubを繋ぐ

PRレビューやIssue作成で最初に入れたいのがGitHubコネクタです。

ターミナル
claude mcp add --transport http github https://api.githubcopilot.com/mcp/

追加後、Claude Codeを起動し以下を実行します。

Claude Code セッション内
/mcp

メニューから github を選び、ブラウザでGitHubにログインすると認証が完了します。以降は次のような依頼を自然文で書けます。

使用例
PR #456 をレビューして、TypeScript の型安全性の観点で改善案を箇条書きにしてください

Google Driveを繋ぐ

Google Driveコネクタは、社内ドキュメントや議事録をコンテキストに取り込みたいときに有用です。claude.ai のコネクタ設定で有効化したものが、同じアカウントでログイン中のClaude Codeにも自動で現れるため、多くのユーザーはコマンド追加すら不要です。

手動で追加する場合は、レジストリに掲載されているコマンドをそのまま貼り付けます。

ターミナル
claude mcp add --transport http google-drive https://mcp.google.com/drive
# URL は Google 公式の MCP エンドポイントを使う。実際の URL は公式ドキュメントで確認

認証は同じく /mcp でOAuthフローに入ります。認証トークンはシステムのキーチェーンに保存され、期限切れになれば自動で更新されます。

Slackを繋ぐ

Slackコネクタは「要約してから投稿」のような出力系ワークフローと、チャンネル検索の入力系ワークフローの両方で使えます。

ターミナル
claude mcp add --transport http slack https://mcp.slack.com/mcp

Bearerトークン運用の内部Slackラッパーを繋ぎたい場合はヘッダー指定もできます。

ターミナル(社内プロキシ経由の例)
claude mcp add --transport http slack-internal https://proxy.example.com/slack/mcp \
  --header "Authorization: Bearer $SLACK_PROXY_TOKEN"

スコープの使い分け

接続時に付ける --scope フラグは、設定の保存場所と共有範囲を決める重要なパラメーターです。

スコープ保存先共有範囲用途
local(デフォルト)~/.claude.json自分のみ・このプロジェクトのみ実験、個人トークン
projectリポジトリの .mcp.jsonチーム全員(git commit対象)チーム共用の社内サーバー
user~/.claude.json自分のみ・全プロジェクトGitHub / Sentry等の個人ユーティリティ

GitHubやSentryのような個人コネクタは --scope user で入れておくと、別リポジトリでも同じ認証が使い回せます。一方、.mcp.json にコミットして配布するプロジェクトスコープは、初回に承認ダイアログが出るため、コミット先が信頼できるリポジトリであることが前提になります。

自作MCPサーバーの最小実装

既製サーバーが合わないとき、あるいは社内APIを繋ぎたいときは自作します。@modelcontextprotocol/sdk を使ったTypeScript実装は、ひな形が短く30行前後で動作するサーバーが書けます。

まずプロジェクトを用意します。

セットアップ
mkdir my-mcp-server && cd my-mcp-server
npm init -y
npm install @modelcontextprotocol/sdk zod
npm install -D typescript @types/node
npx tsc --init

続いて、為替レート取得を想定した src/index.ts を書きます。

src/index.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
 
const server = new McpServer({
  name: "fx-rate",
  version: "1.0.0",
});
 
server.registerTool(
  "get_rate",
  {
    description: "指定した通貨ペアの最新為替レートを返す",
    inputSchema: {
      from: z.string().length(3).describe("送金元通貨コード (例: USD)"),
      to: z.string().length(3).describe("送金先通貨コード (例: JPY)"),
    },
  },
  async ({ from, to }) => {
    const url = `https://api.example.com/fx?from=${from}&to=${to}`;
    const res = await fetch(url);
    const data = (await res.json()) as { rate: number };
 
    return {
      content: [
        {
          type: "text",
          text: `${from} -> ${to}: ${data.rate}`,
        },
      ],
    };
  },
);
 
async function main() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
  console.error("fx-rate MCP Server running on stdio");
}
 
main().catch((e) => {
  console.error("Fatal:", e);
  process.exit(1);
});

ビルドし、Claude Codeにstdioサーバーとして登録します。

ビルドと登録
npx tsc
claude mcp add --transport stdio fx-rate \
  -- node /absolute/path/to/my-mcp-server/dist/index.js

これでClaude Codeから get_rate(from, to) が呼び出せるようになります。実装のポイントは3つです。

  • 入力スキーマは zod で厳密に: 文字列長やレンジ制約まで書くと、LLMが引数を外しづらくなる
  • 戻り値の content[].typetext が基本: JSONを詰めるより構造化テキストのほうがLLMの解釈が安定する
  • ログは console.error を使う: console.log はstdoutを汚し、MCPプロトコルを壊してしまう

権限とセキュリティ

MCPは強力ですが、同時にプロンプトインジェクションの入口にもなります。信頼境界の設計は利用者側の責任です。最低限、以下の観点で見直しておくと安全度が上がります。

観点対応
サーバーの信頼性サードパーティサーバーは自己責任。公式ドキュメントとソースコードを確認してから入れる
認証情報の保存OAuthトークンはOSキーチェーンに自動保存される。.env を手書きするより安全
スコープ汚染--scope project でコミットする .mcp.json にAPIキーを直書きしない。${VAR} 展開で環境変数に逃がす
出力の肥大化MCPツールの戻り値は1万トークン超で警告が出る。MAX_MCP_OUTPUT_TOKENS で明示調整
管理対象運用組織配布では managed-mcp.jsonallowedMcpServers で許可リスト運用

特に .mcp.json に書いた環境変数展開 ${API_KEY} は、ローカルで定義された環境変数を参照する挙動になるため、リポジトリに値そのものを書かずに済むところが実用上の利点です。

選び方の判断早見表

どのユースケースにどのサーバー方式を選ぶかで迷いやすいので、類型化して並べると次の通りです。

ユースケース推奨サーバー/方式理由
PRレビュー・Issue起票GitHubコネクタ(HTTP / OAuth)公式メンテナンス、@ でPR番号参照が効く
本番エラー調査Sentryコネクタ(HTTP / OAuth)/mcp で即認証、スタックトレース取得が自然文で通る
社内DBへの読み取りdbhub (stdio)readonly DSNを環境変数で渡せば安全に限定公開
ドキュメントの横断検索Google Driveコネクタ(HTTP / OAuth)claude.ai側で権限管理できる
社内REST API連携自作stdioサーバーOAuth不要、zod で入力を固められる
認証必須の社内HTTP API自作HTTPサーバー + headersHelperトークン取得コマンドを都度実行できる
チーム共有の固定セット--scope project.mcp.jsongitで配布、onboardingが1コマンド
組織ロックダウンmanaged-mcp.json + 許可リストIT管理者による集中管理

言い換えると、OAuth 2.0が使えるクラウドSaaSはHTTPコネクタ、読み取り専用の社内リソースはstdio、認証が特殊な社内APIは自作HTTPという3分岐で大体カバーできます。迷ったらまずHTTP + OAuthを試し、動かない場合にstdioへ落とすのが素直な順序です。

関連記事として、Claude Code全体像はClaude Code完全ガイド、CLAUDE.mdの設計はCLAUDE.md 10パターンが下地として役立ちます。Hooksとの組み合わせはClaude Code Hooksのはじめかたを参照すると、MCPツールの呼び出しに前後処理を差し込む設計が見えてきます。

まとめ

MCPは「AIと外部ツールを接続する共通規格」という単純な役割ですが、Claude Codeと組み合わせることで日常のタスク横断作業が大幅に縮まる実用性を持ちます。まずはGitHubとSentryのような定番HTTPコネクタで claude mcp add/mcp の流れを体で覚え、次に社内固有の用件が出てきたらstdioでの自作サーバーを書く、という段階的な導入がもっとも習得コストが低い進め方と言えそうです。managed-mcp.jsonallowedMcpServers による組織運用、--scope project でのチーム共有といった仕組みも揃っているため、小さく始めて段階的にガバナンスを上げていけるのがMCPエコシステムの強みです。

この記事を共有:XLinkedIn