MCP実用ガイド — Google Drive / Slack / GitHub連携と自作サーバー最小実装
Claude Codeの MCP をGoogle Drive / Slack / GitHubに繋ぎ、@modelcontextprotocol/sdk で自作サーバーも書くための実践ガイドです。
要点
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での使い方 |
|---|---|---|
| Tools | LLMから呼べる関数(副作用あり) | 通常のツール呼び出し。ユーザー承認あり |
| 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 の一行で、これらの多くをそのまま接続できます。代表的なコネクタを整理すると以下のとおりです。
| サービス | トランスポート | 認証 | 向いている用途 |
|---|---|---|---|
| GitHub | HTTP | OAuth 2.0 | PRレビュー、Issue作成、リポジトリ横断検索 |
| Google Drive | HTTP | OAuth 2.0 | ドキュメント取得、スプレッドシート参照 |
| Slack | HTTP | OAuth 2.0 | チャンネル投稿、メッセージ検索 |
| Sentry | HTTP | OAuth 2.0 | 本番エラー分析、スタックトレース取得 |
| Notion | HTTP | OAuth 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を起動し以下を実行します。
/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/mcpBearerトークン運用の内部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 を書きます。
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[].typeはtextが基本: 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.json か allowedMcpServers で許可リスト運用 |
特に .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.json | gitで配布、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.json や allowedMcpServers による組織運用、--scope project でのチーム共有といった仕組みも揃っているため、小さく始めて段階的にガバナンスを上げていけるのがMCPエコシステムの強みです。
関連する記事
Claude Code をもっと見る →MCPでコード実行する設計 — Anthropicが示す「ツール呼び出し」から「コードAPI」への移行
Anthropic「Trustworthy Agents in Practice」を読む — エージェント時代の5原則と現場の落とし所
MCPサーバを自作してClaude Codeにつなぐ — TypeScript実装の完全手順
Claude Codeとは — Anthropicのエージェント型AIコーディングCLIの完全ガイド(2026年4月最新版)
Managed Agentsの設計思想 — セッション/ハーネス/サンドボックスを分離した長時間エージェントのつくり方
Claude Code v2.1.136 — /clear後のMCP/Plugin喪失修正とOAuth競合解消
Claude Codeでよくあるエラー10選 — 起動失敗から認証・MCP・権限まで実機で踏みやすい順に対処
Claude Code導入を検討するCTO / Tech Leadのための評価軸6つ