メインコンテンツへスキップ
← 記事一覧に戻る
·開発·16 min read

Claude Code SKILL vs MCP server|役割・使い分け・判断フロー 2026

Claude CodeSkillsMCP個人開発自動化

結論を 1 行で

外部システム(DB / API / SaaS)に繋ぐなら MCP server。ローカルで完結する手順を自動化するなら Skill。 境界は「プロセス間通信が必要か」と「複数 AI ツールで共有したいか」で決まる。

これは Claude Code 公式 docs (Skills)Claude Code 公式 docs (MCP) を読み比べると明確に出てくる役割分担で、迷ったら下のフローチャートで即決できる。

この記事の前提

  • 環境: Claude Code v2.x、Skills は Agent Skills オープン標準、MCP は Model Context Protocol 標準
  • 読者の状況: SKILL も MCP server も触ったことはあるが、新規タスクが来た時にどっちで作るか即答できない
  • 筆者の検証環境: monorepo に Skill 10 本超 + MCP server 12 本超を併用運用中(次節で実例提示)

この記事でわかること:

  • SKILL と MCP の役割の違いを公式定義ベースで 1 行で言える
  • 新規タスクが来た時の 5 分岐判断フロー
  • ローカル文脈 / 外部 I/O / 再利用範囲 / 起動コストでの選び方
  • 両方を組み合わせる時の境界設計
  • monorepo に最初に置くべき Skill 3 + MCP 3 の最小構成

読者のよくある詰まり

  • SKILL も MCP も「Claude を拡張する」と書いてあって、結局どっちが何のためか分からない
  • 公式 docs を読んだが、選択基準が散在していてフローに落ちない
  • 同じ機能を SKILL と MCP のどっちで作っても動く気がして、選んだ後に「やっぱり逆だった」と感じる
  • ローカル処理を MCP で作ってプロセス起動コストに後悔する / 外部接続を SKILL で書こうとして詰まる

これらは全部「公式の役割定義をフレーズで押さえれば消える」モヤモヤだ。

それぞれの役割(公式定義)

Skill とは

"Skills extend what Claude can do. Create a SKILL.md file with instructions, and Claude adds it to its toolkit. Claude uses skills when relevant, or you can invoke one directly with /skill-name."

つまり Skill は 「Claude が読んで実行する手順書」。マークダウンに instructions を書くだけで、Claude が文脈に応じて自動で呼び出すか、ユーザーが /skill-name で明示的に呼び出す。

公式の用途定義:

"Create a skill when you keep pasting the same playbook, checklist, or multi-step procedure into chat..."

要は 「同じプレイブック / チェックリスト / 多段手順を毎回 paste している」状態を解消する ための機能。

配置場所と起動方式:

配置パス起動
Personal~/.claude/skills/<name>/SKILL.md全プロジェクトで使える
Project.claude/skills/<name>/SKILL.mdそのリポ専用
Plugin<plugin>/skills/<name>/SKILL.mdプラグイン経由
Enterprisemanaged settings 経由組織全体

frontmatter の description「Claude が起動するか判断するためのトリガー文」disable-model-invocation: true で手動起動限定にできる。

MCP server とは

"Claude Code can connect to hundreds of external tools and data sources through the [Model Context Protocol (MCP)], an open source standard for AI-tool integrations. MCP servers give Claude Code access to your tools, databases, and APIs."

つまり MCP server は 「外部システムに接続するためのプロトコル付きプロセス」。Claude Code が起動時に立ち上げて、Tools / Resources / Prompts を JSON-RPC で呼び出す。

公式の用途定義:

"Connect a server when you find yourself copying data into chat from another tool, like an issue tracker or a monitoring dashboard."

要は 「別ツールからデータをコピペしている」状態を解消する ための機能。

接続方式は 3 種類:

方式用途推奨度
HTTPクラウドサービス(Notion / Linear / Stripe 等)推奨
SSE一部の旧サービスdeprecated
stdioローカルプロセス(自作 / DB 接続等)ローカル限定で

claude mcp add --transport http <name> <url> 等で登録する。

4 軸比較表

SkillMCP server
何を提供するか手順書(Claude が読んで自分で実行)関数・データソース(Claude が JSON-RPC で呼ぶ)
実行方式コンテキストに content を読み込む別プロセスとして起動、stdin/stdout or HTTP で通信
主用途ローカル文脈・ファイル操作・定型作業手順外部システム接続(DB / API / SaaS)
必要な実装マークダウン 1 枚(プログラミング不要)TypeScript / Python(MCP SDK)
追加コスト起動コストほぼゼロプロセス起動 + 通信オーバーヘッド
再利用範囲Agent Skills 標準(他 AI ツール対応進行中)MCP 標準(Cursor / Claude Desktop 等で共通)

判断フロー(5 分岐)

新規タスクが来たら、以下を上から順に判定する:

1. 外部システム(DB / API / SaaS)への接続が必要か?
   → YES → MCP server
   → NO  → 2 へ

2. ローカルファイル / シェル / コンテキスト判断のみで完結するか?
   → YES → Skill
   → NO  → 3 へ

3. 同じ機能を Cursor や Claude Desktop でも使いたいか?
   → YES → MCP server(プロトコル標準で共通利用)
   → NO  → 4 へ

4. 起動が高頻度か?(1 セッションで何度も呼ばれる)
   → YES → Skill(プロセス起動コストなし)
   → NO  → 5 へ

5. 文脈で自動起動 / 明示起動 のどちらか?
   → 文脈で自動 → Skill(description で trigger)
   → 明示的に → Skill(disable-model-invocation: true で /command 化)

ほとんどのタスクは 1 か 2 で確定 する。3-5 は境界ケース。

3 軸での適性

判断フローを別の切り口でまとめると、3 軸で見ると分かりやすい:

外部 I/O が必要か

  • 必要 → MCP(プロセス分離 + プロトコル経由が安全)
  • 不要 → Skill(コンテキスト内で完結)

再利用範囲

  • Claude Code 単独 → Skill(手軽)
  • 複数 AI ツール共通 → MCP server(標準プロトコルで再利用)

起動コスト

  • 高頻度呼び出し → Skill(in-context、起動コストなし)
  • 重い・低頻度 → MCP(プロセス分離が安全)

5 ユースケースで判定

ユースケース結論理由
「コミット前に lint を通す」を毎回自動化Skillローカルファイル + シェルで完結
Notion からタスク一覧を取得MCP server (notion)外部 SaaS 接続
「PR レビュー時に CHANGELOG を更新」Skillgit + ファイル操作で完結
Supabase DB から user の購入履歴を取得MCP server (supabase)外部 DB 接続
記事 mdx の frontmatter を 5 軸チェックSkillローカルファイル + ロジックで完結

公式 docs のユースケース例も同じパターン:

  • Skill 例(公式): code 説明、deploy、commit、 explain-code、codebase-visualizer
  • MCP 例(公式): JIRA から issue 取得、Sentry のデータ分析、PostgreSQL クエリ、Figma デザイン取得、Gmail 下書き作成

「ローカルで完結する手順」と「外部システム接続」の境界が、両方の例から一貫して読み取れる。

両方を組み合わせるパターン

実運用で一番強いのは Skill が MCP server の Tool を呼ぶ 構成。Skill が「手順書」、MCP server が「外部システム接続」と完全に役割分担する。

---
name: pr-review-with-linear
description: TRIGGER when reviewing a PR. Fetches diff via GitHub MCP,
  posts review comments to the related Linear issue.
---

1. Use the GitHub MCP `get_pull_request_diff` tool to fetch the PR diff
2. Analyze the diff against our coding standards (this file's checklist)
3. Use the Linear MCP `create_comment` tool to post findings to the
   related Linear issue (issue ID is in PR description)

Skill が手順書として「読んで判断するロジック」を担い、MCP server が「外部 API へのアクセス」を担う。境界が綺麗。

ケーススタディ: monorepo の Skill / MCP 一覧

筆者の monorepo(Next.js + Supabase + Stripe + Claude Code 個人開発)で実際に使い分けている例。

Skill 側(ローカル完結・運用ルール系):

  • masatoman-article-rules — ブログ記事執筆前のターゲット / ゲイン / タイトル 3 軸チェック
  • x-post-rules — X 投稿前の主顧客訴求 + 禁止語 grep
  • sync-strategy — モノレポの戦略ファイル同期
  • maintenance — モノレポ整合性監査(plans / memory / scheduled-tasks 等 6 領域)
  • update-configsettings.json 編集
  • claude-hud:setup — statusline 設定

MCP server 側(外部システム接続系):

  • Supabase MCP — 各サブプロの DB 操作(list_tables, execute_sql, apply_migration, get_logs)
  • Stripe MCP — 決済データ確認
  • Vercel MCP — デプロイ状態確認、ログ取得
  • Cloudflare MCP — KV / R2 / D1 の設定
  • Slack MCP — 通知投稿
  • Gmail / Calendar / Drive MCP — Google サービス
  • Playwright MCP — note.com 自動投稿(ブラウザ操作)
  • Figma MCP — デザイン取得
  • Canva MCP — サムネイル生成

パターンは明確:ローカルロジック / チェックリスト / 運用ルール → Skill外部 SaaS / DB / API → MCP。境界は判断フローの 1〜2 で完全に決まっている。

ハマりどころ 3 つ

1. ローカル完結の処理を MCP で作って起動コストを払う

ローカルで完結する単発チェックを MCP で実装すると、毎回プロセス起動の遅延が乗る。Skill ならコンテキストに content を読み込むだけでオーバーヘッドゼロ。「とりあえず TypeScript で書きたいから MCP」は逆効果になりやすい。

2. 全 AI ツール共通で使いたいのに Skill で作る

他のツール(Cursor / Claude Desktop 等)でも同じ機能が欲しい場合は、MCP server なら Model Context Protocol 標準で共通利用できる。Skill は Agent Skills 標準準拠だが、現時点で他ツール対応はまだ進行中。再利用範囲を最初に決めると後で書き直しを避けられる。

3. description が曖昧で Skill が自動起動しない

公式:

"the description helps Claude decide when to load it automatically"

description に trigger phrase を明示しないと、Claude は「いつ呼ぶべきか」を判断できない。例:「TRIGGER when the user asks to commit changes...」のように 「いつ呼ぶか」を頭出し すると自動起動の精度が上がる。description と when_to_use の合算が 1,536 文字でカットされるので、要点を前に置く。

個人開発モノレポ向けの最小構成

最初に置くべきセット:

Skill 3 件(ローカル完結):

  1. commit checker — コミット前の lint + テスト + コミットメッセージ規約チェック
  2. deploy preflight — デプロイ前の環境変数 + secret + マイグレーション確認
  3. doc updater — 機能追加時の README / CHANGELOG 更新フロー

MCP server 3 件(外部接続):

  1. GitHub MCP — issue / PR / Actions の操作
  2. DB MCP(Supabase / Postgres など利用中のもの)— スキーマ確認 / クエリ実行 / マイグレーション
  3. メイン SaaS MCP(Notion / Linear / Stripe 等、自分のワークフローのハブ)

これだけで「定型作業の自動化」と「外部接続の即時アクセス」の 8 割をカバーできる。後は必要に応じて追加。最初から大量に作らないこと(公式:「Skill descriptions are loaded into context」、多すぎると context budget を圧迫する)。

今日やること(3 つ以内)

  1. 可視化: 自分が「定型作業」と「外部接続」のどちらで時間を使っているかを 1 日メモする
  2. 定型作業 1 つを Skill 化: 一番頻度の高い定型作業をマークダウン 1 枚で書く
  3. 外部接続 1 つを MCP 接続: claude mcp add で一番使う SaaS を 1 つ繋ぐ

関連記事

Claude Code完全ガイド2026

料金・使い方・他ツールとの使い分けを実運用者が解説

AGENTS.md vs CLAUDE.md|Claude Code 設定ファイルの違いと使い分け 2026

同 Cluster C1:設定ファイルの判断軸ガイド

【第1回】Claude Code Skills 入門

Skill 自作の最初の 1 本を 15 分で作る実装ガイド

【第2回】Claude Code MCP サーバー構築ガイド

MCP server をゼロから作る実用コード全公開

【第6回】Skill × MCP の統合 SaaS 開発フロー

Skill と MCP を組み合わせた個人開発の SaaS 構築パイプライン

Claude Crew Lab Free — 毎月の実験記録をメールで

Claude Code × 個人開発のリアルな事故・発見・SaaS アイデアを毎月第1月曜にお届け。登録で「収益化チェックリスト 15 項目」を無料プレゼント。

個人開発の実験ログを月1回、無料で

失敗 / 実数字 / 仮説 / 次に試すこと。売れた話だけでなく売れなかった理由も共有します。

まとめ

  • Skill = ローカル完結の手順書(マークダウン 1 枚、起動コストなし)
  • MCP server = 外部システム接続(プロセス + プロトコル、再利用性高い)
  • 判断フローは「外部 I/O が必要か」「複数ツール共有か」「起動頻度はどうか」の 3 軸で即決
  • 両方使う時は Skill が手順書、MCP が外部接続 の役割分担が綺麗
  • 最小構成は Skill 3 件 + MCP 3 件、後は必要に応じて追加

SKILL と MCP の境界がフレーズで押さえられると、新規タスクが来たときの「どっちで作るか」の意思決定が秒で済むようになる。次は Skill の本質を一段深く理解する フェーズに進める。

関連する有料記事

Stripe ペイウォール完全ガイド — 個人開発で最初の 1 売上を作るプレイブック

Skill と MCP で開発を加速したら、次は最初の 1 売上を出す段階へ。Stripe 自前ペイウォールの実装テンプレを全公開。

この記事が役に立ったらシェア