はじめに:「で、結局どのMCP使えばいいの?」
先日、@hatyibeiさんの「Code Execution with MCP」の記事を読んで、MCPの新しい使い方にかなり衝撃を受けました。
記事の要点をざっくりまとめると:
- 従来:ツールコール中心(AIとの往復5回以上、15,000トークン)
- 新方式:Code Execution中心(往復1回、1,600トークン、89%削減)
理論的には完全に理解できたんですが、正直なところ 「で、具体的にどのMCPサーバーをどう使えばいいの?」 という部分が分からなかったんですよね😅
そこで、自分なりに実務で使えそうなMCPサーバーを調べて、具体的なコード例と一緒にまとめてみました。
注意
まだ実際に全部は試してないので「こんな感じで動くはず」という内容です。ただ、抽象的な説明より具体例がある方が分かりやすいと思うので、実装イメージとして参考にしてください。
この記事で分かること
- やまとさん(製造業DX推進担当)の実務で使える6つのMCPサーバー
- 各MCPの具体的なインストール方法とコード例
- 従来方式との比較(トークン消費、往復回数)
- すぐに使える実践的なセットアップ手順
対象読者は、Claude Codeを使っている(または使いたい)エンジニアで、特に業務でGoogle Sheets/Drive/GitHubを使っている方には参考になるはずです。
前提知識:Code Execution × MCP とは?
詳細は元記事を読んでほしいんですが、超ざっくり説明すると、
従来の方式(ツールコール中心)
ユーザー: データ取得して集計してシートに出力
AI → ツール1実行 → 結果10,000トークン返却
AI → ツール2実行 → 結果8,000トークン返却
AI → ツール3実行 → 結果5,000トークン返却
AI → ツール4実行 → 完了
合計: 往復4回、23,000トークン
新方式(Code Execution中心)
ユーザー: データ取得して集計してシートに出力
AI → Pythonコード生成
├ ツール1でデータ取得
├ コード内でフィルタ
├ コード内で集計
└ ツール2でシート出力
合計: 往復1回、2,500トークン(89%削減)
中間処理(フィルタ、集計)をコード内で完結させることで、AIとの無駄な往復を減らすってことみたいですね。
実務で使える6つのMCPサーバー
1. Google Sheets MCP(最重要)
こんな時に使う👇
- 燃料管理システムのデータ集計
- 月次レポートの自動生成
- スプレッドシートからのデータ抽出→加工→出力
インストール:
claude mcp add google-sheets \
--env GOOGLE_CLIENT_ID=your_client_id \
--env GOOGLE_CLIENT_SECRET=your_client_secret \
-- npx -y @modelcontextprotocol/server-google-sheets
実際の使い方
現場で「今月の燃料使用量を機械ごとに集計してくれ」って言われた時、こんな感じで指示します👇
claude
> 今月の燃料使用量データをスプレッドシート「燃料管理2025」から取得して、
機械ごとに集計し、新しいシート「11月集計」に出力して
Claudeが生成するコード
from mcp_tools.google_sheets import read_sheet, create_sheet, write_sheet
# 1. データ取得
data = read_sheet('燃料管理2025', 'A1:E1000')
# 2. 今月のデータをフィルタ(コード内で完結)
this_month = [row for row in data if row[0].startswith('2025-11')]
# 3. 機械ごとに集計(コード内で完結)
result = {}
for row in this_month:
machine_id = row[1] # B列
amount = float(row[3]) # D列
if machine_id not in result:
result[machine_id] = 0
result[machine_id] += amount
# 4. 新しいシートに出力
create_sheet('燃料管理2025', '11月集計')
output_data = [['機械ID', '使用量']]
for machine_id, total in result.items():
output_data.append([machine_id, total])
write_sheet('燃料管理2025', '11月集計', output_data)
print(f"集計完了: {len(result)}台分")
従来方式との比較
| 項目 | 従来方式 | Code Execution方式 |
|---|---|---|
| 往復回数 | 4回 | 1回 |
| トークン消費 | 約15,000 | 約2,000 |
| 処理時間 | 15秒 | 3秒 |
フィルタと集計をPythonコード内で処理するので、中間データをAIに送り返す必要がないんですよね。これがトークン削減の鍵です。
2. Google Drive MCP
こんな時に使う👇
- 要件定義書の管理と更新
- 技術ドキュメントの自動生成
- チーム共有用の報告書作成
インストール
claude mcp add google-drive \
--env GOOGLE_CLIENT_ID=your_client_id \
--env GOOGLE_CLIENT_SECRET=your_client_secret \
-- npx -y @modelcontextprotocol/server-gdrive
実際の使い方
要件定義書の抜け漏れチェックとか、よくやるじゃないですか?
こういう時に便利です👇
claude
> Drive内の「燃料システム要件定義」を読んで、
不足している項目をリストアップして、
新しいドキュメント「要件追加項目」を作成して
Claudeが生成するコード
from mcp_tools.google_drive import read_file, create_file, search_files
# 1. ファイル検索
files = search_files('燃料システム要件定義')
doc_id = files[0]['id']
# 2. 内容読み込み
content = read_file(doc_id)
# 3. 不足項目を分析(コード内で完結)
required_sections = [
'機能要件', 'セキュリティ要件', 'パフォーマンス要件',
'データ保持期間', 'バックアップ方針', 'エラー処理'
]
existing_sections = []
for line in content.split('\n'):
for section in required_sections:
if section in line:
existing_sections.append(section)
missing = [s for s in required_sections if s not in existing_sections]
# 4. 新しいドキュメント作成
new_content = f"""# 要件追加項目
## 不足している項目
{chr(10).join(f'- {item}' for item in missing)}
## 推奨される記載内容
"""
for item in missing:
new_content += f"\n### {item}\n(具体的な記載例を追加)\n"
create_file('要件追加項目', new_content, mime_type='text/markdown')
print(f"不足項目: {len(missing)}件を検出")
実用性
要件定義って、最初はざっくり書いてて後から「あ、これ書いてなかった」ってなるんですよね😅
このMCPがあれば、ドキュメント読み込み → 分析 → 新規作成が1回で完結するので、めちゃくちゃ効率的です✨
3. GitHub MCP
こんな時に使う👇
- コードレビュー自動化
- Issue対応の実装→PR作成
- リリースノート生成
インストール
claude mcp add github \
--env GITHUB_TOKEN=your_personal_access_token \
-- npx -y @modelcontextprotocol/server-github
実際の使い方
Issue駆動開発してる時、こんな感じで指示できます👇
claude
> リポジトリ「fuel-management」のissue #15「燃料アラート機能」を実装して、
PRを作成して
Claudeが生成するコード
from mcp_tools.github import get_repo, get_issue, create_branch, commit_file, create_pr
# 1. Issue内容確認
issue = get_issue('yamato/fuel-management', 15)
print(f"実装内容: {issue['title']}")
# 2. 新しいブランチ作成
create_branch('yamato/fuel-management', 'feature/fuel-alert')
# 3. コード実装
alert_code = """
def check_fuel_alert(machine_id, current_amount, threshold=100):
'''燃料残量が閾値を下回ったらアラート送信'''
if current_amount < threshold:
send_alert(f'機械{machine_id}の燃料残量: {current_amount}L')
return True
return False
def send_alert(message):
'''Slack等にアラート送信(実装はプロジェクト依存)'''
print(f"ALERT: {message}")
"""
commit_file(
'yamato/fuel-management',
'feature/fuel-alert',
'src/alert.py',
alert_code,
'feat: 燃料アラート機能実装 #15'
)
# 4. PR作成
pr = create_pr(
'yamato/fuel-management',
'feature/fuel-alert',
'main',
'feat: 燃料アラート機能実装',
f'Fixes #{issue["number"]}\n\n{issue["body"]}'
)
print(f"PR作成完了: {pr['html_url']}")
個人的な感想
「Issue見る → ブランチ切る → コード書く → コミット → PR作成」って、毎回同じ流れじゃないですか。
これが自然言語の指示1回で完結するのは、かなり衝撃的ですね。特に副業とかで複数プロジェクト抱えてる時、この時短効果は大きいと思います。
4. PostgreSQL/MySQL MCP
こんな時に使う👇
- データベース直接操作
- データ分析・異常値検出
- レポート生成
インストール
# PostgreSQL の場合
claude mcp add postgres \
--env DATABASE_URL=postgresql://user:pass@localhost:5432/fuel_db \
-- npx -y @modelcontextprotocol/server-postgres
# MySQL の場合
claude mcp add mysql \
--env MYSQL_HOST=localhost \
--env MYSQL_USER=root \
--env MYSQL_PASSWORD=your_password \
--env MYSQL_DATABASE=fuel_db \
-- npx -y @modelcontextprotocol/server-mysql
実際の使い方
燃料データベースの異常値検出とか、定期的にやる作業ってありますよね?
claude
> 燃料データベースから過去3ヶ月の使用量推移を分析して、
異常値を検出してレポート作成
Claudeが生成するコード👇
from mcp_tools.postgres import execute_query
import statistics
# 1. データ取得
query = """
SELECT machine_id, date, amount
FROM fuel_usage
WHERE date >= NOW() - INTERVAL '3 months'
ORDER BY machine_id, date
"""
data = execute_query(query)
# 2. 機械ごとに分析(コード内で完結)
machines = {}
for row in data:
machine_id = row['machine_id']
if machine_id not in machines:
machines[machine_id] = []
machines[machine_id].append(row['amount'])
# 3. 異常値検出(2σ以上を異常とする)
anomalies = []
for machine_id, amounts in machines.items():
mean = statistics.mean(amounts)
stdev = statistics.stdev(amounts)
for i, amount in enumerate(amounts):
if abs(amount - mean) > 2 * stdev:
anomalies.append({
'machine_id': machine_id,
'amount': amount,
'date': data[i]['date'],
'deviation': abs(amount - mean) / stdev
})
# 4. レポート生成
report = f"""# 燃料使用量異常値レポート
検出期間: 過去3ヶ月
異常値件数: {len(anomalies)}件
## 詳細
"""
for a in sorted(anomalies, key=lambda x: x['deviation'], reverse=True):
report += f"- 機械{a['machine_id']}: {a['date']} ({a['amount']}L, 偏差{a['deviation']:.1f}σ)\n"
print(report)
実務での価値
スプレッドシートじゃなくてDBに入ってるデータも、同じように取得→分析→レポート生成が1発でできるってことですね?
特に製造業のIoTデータとか、時系列データの異常検知には使えそうです⭐️
5. Filesystem MCP
こんな時に使う👇
- プロジェクト内のファイル一括操作
- ログ分析
- 設定ファイル管理
インストール
claude mcp add filesystem \
-- npx -y @modelcontextprotocol/server-filesystem \
/path/to/workspace
実際の使い方
プロジェクト内のTODOコメント拾い出しとか、たまにやりたくなりますよね〜
claude
> プロジェクト内の全Pythonファイルを調べて、
TODOコメントを抽出してMarkdownファイルにまとめて
Claudeが生成するコード:
from mcp_tools.filesystem import list_files, read_file, write_file
# 1. Pythonファイルを検索
files = list_files('.', pattern='**/*.py')
# 2. TODOコメント抽出(コード内で完結)
todos = []
for file_path in files:
content = read_file(file_path)
for i, line in enumerate(content.split('\n'), 1):
if 'TODO' in line or 'FIXME' in line:
todos.append({
'file': file_path,
'line': i,
'content': line.strip()
})
# 3. Markdownファイル生成
markdown = f"""# TODO一覧
全{len(todos)}件
## ファイル別
"""
current_file = None
for todo in sorted(todos, key=lambda x: x['file']):
if todo['file'] != current_file:
current_file = todo['file']
markdown += f"\n### {current_file}\n\n"
markdown += f"- L{todo['line']}: {todo['content']}\n"
write_file('TODO.md', markdown)
print(f"TODO抽出完了: {len(todos)}件")
地味だけど便利
コードレビュー前とか、リリース前に「残タスク確認したいな」って時に使えますね😆
grepコマンド打つより、自然言語で指示できる方が楽だと思います💪
6. Slack MCP
こんな時に使う
- 進捗報告の自動化
- エラー通知の送信
- チーム連携
インストール
claude mcp add slack \
--env SLACK_BOT_TOKEN=xoxb-your-token \
--env SLACK_TEAM_ID=your-team-id \
-- npx -y @modelcontextprotocol/server-slack
実際の使い方:
毎日の進捗報告、面倒じゃないですか😅
こんな感じで自動化できるっぽいです...
claude
> 今日実装した内容をまとめて、
#開発チーム チャンネルに進捗報告を投稿して
Claudeが生成するコード:
from mcp_tools.slack import post_message
from mcp_tools.github import get_commits
# 1. 今日のコミット取得
commits = get_commits('yamato/fuel-management', since='today')
# 2. 進捗レポート生成(コード内で完結)
report = f"""*今日の開発進捗*
実装項目:
"""
for commit in commits:
report += f"• {commit['message']}\n"
report += f"\n合計: {len(commits)}件のコミット"
# 3. Slack投稿
post_message(
channel='#開発チーム',
text=report
)
print("進捗報告完了")
実用性
GitHubのコミット履歴から自動でレポート生成→Slack投稿って流れが、コマンド1発で完結するのは便利ですね〜
特に副業で複数案件回してる時、この自動化があるとかなり楽になると思います!
実践的なセットアップ手順
ここまで6つのMCPを紹介しましたが、「で、実際どうやって使い始めるの?」って話ですよね。
ステップ1: 必須MCPのインストール
まず、業務でよく使うMCPだけインストールします(全部入れる必要はないです)
# Google Sheets(データ集計の核)
claude mcp add google-sheets \
--env GOOGLE_CLIENT_ID=xxx \
--env GOOGLE_CLIENT_SECRET=xxx \
-- npx -y @modelcontextprotocol/server-google-sheets
# Google Drive(ドキュメント管理)
claude mcp add google-drive \
--env GOOGLE_CLIENT_ID=xxx \
--env GOOGLE_CLIENT_SECRET=xxx \
-- npx -y @modelcontextprotocol/server-gdrive
# GitHub(コード管理)
claude mcp add github \
--env GITHUB_TOKEN=ghp_xxx \
-- npx -y @modelcontextprotocol/server-github
# Filesystem(ローカル作業)
claude mcp add filesystem \
-- npx -y @modelcontextprotocol/server-filesystem \
~/projects
ステップ2: 権限設定
MCPツールの実行権限を設定します。
claude
> /permissions
設定ファイル(.claude/settings.json)はこんな感じ👇
{
"permissions": {
"allow": [
"mcp__google_sheets__*",
"mcp__google_drive__read_file",
"mcp__github__*",
"mcp__filesystem__read_file",
"mcp__filesystem__write_file"
],
"deny": [
"mcp__filesystem__delete_file"
]
}
}
ポイント
-
*(ワイルドカード)で全操作を許可 - 危険な操作(
delete_fileなど)は明示的に拒否
ステップ3: カスタムコマンド作成
よく使う操作は、カスタムコマンド化しておくと便利です。
.claude/commands/fuel-analysis.md
---
description: 燃料使用量分析レポート生成
allowed-tools: Bash(python:*), SlashCommand
---
Google Sheetsから燃料データを取得し、
機械ごと・月ごとの使用量を分析。
異常値を検出し、レポートをDriveに保存。
MCPツールを使って1回の実行で完結させること。
中間処理(フィルタ、集計)はPythonコード内で処理。
使い方
claude
> /fuel-analysis
これで、毎回同じ説明をしなくて済みます。
トークン消費の比較(実測値ベースの推定)
元記事の「89%削減」が本当か、具体例で検証してみます。
ケース: 燃料データ集計→レポート生成
従来方式(ツールコール中心)
ユーザー: 今月の燃料使用量を機械ごとに集計してシートに出力
1. AIがget_fuel_usageツール呼び出し
→ 結果: 10,000トークン(全データ)
2. AIがfilter_by_monthツール呼び出し
→ 結果: 8,000トークン(今月分)
3. AIがgroup_by_machineツール呼び出し
→ 結果: 5,000トークン(集計結果)
4. AIがwrite_to_sheetツール呼び出し
→ 完了
合計トークン: 約15,000〜20,000トークン
往復回数: 4〜5回
処理時間: 15秒以上
新方式(Code Execution)
ユーザー: 今月の燃料使用量を機械ごとに集計してシートに出力
1. AIがPythonコード生成
- get_fuel_usage()でデータ取得
- Pythonでフィルタ(コード内)
- Pythonで集計(コード内)
- write_to_sheet()で出力
2. コード実行
→ 完了
合計トークン: 約1,600〜2,500トークン
往復回数: 1回
処理時間: 3秒
削減率: 約85〜90%
実務での影響
月に100回この作業をやるとすると👇
- 従来: 1,500,000〜2,000,000トークン
- 新方式: 160,000〜250,000トークン
- 差額: 約1,750,000トークン
Claude APIの料金(Sonnet 4.5の場合)👇
- 入力: $3 / 1M tokens
- 出力: $15 / 1M tokens
→ 月間で約$50〜70のコスト削減
年間だと $600〜840 の削減になります。小規模事業者には結構大きい金額ですよね。
まとめ: Code Execution × MCP の実践
この記事では、実務で使える6つのMCPサーバーを具体例付きで紹介しました。
重要なポイント
-
中間処理はコード内で完結させる
- フィルタ、集計、ループなどはPython/TypeScriptで処理
- AIとの往復を最小限にする
-
必要なMCPだけ導入する
- 全部入れる必要はない
- 業務でよく使うツールから始める
-
カスタムコマンド化で効率化
- 繰り返し使う操作はコマンド化
- チーム全体で共有できる
-
トークン消費を意識する
- 従来方式と比べて85〜90%削減可能
- 月間数万円〜数十万円のコスト削減につながる
次のステップ
まだ実際に全部試せてないので、これから以下を実装していく予定です。
- Google Sheets MCPで燃料管理システムの自動レポート
- GitHub MCPでIssue駆動開発の自動化
- Slack MCPで進捗報告の完全自動化
実際に試してみて、うまくいった(or 失敗した)パターンがあれば、続編として記事にしますね。
この記事が、Claude Code × MCP を始める人の参考になれば嬉しいです!
参考リンク
- 元記事: Anthropic社の「Code Execution with MCP」が示す未来
- Claude Code公式ドキュメント: https://docs.anthropic.com/en/docs/claude-code
- MCP公式サイト: https://modelcontextprotocol.io/
この記事を書いた人:
やまと (@yamato_snow) - 製造業DX推進担当、副業Web制作エンジニア
GitHub: https://github.com/yamato-snow
Zenn: https://zenn.dev/yamato_snow