Claude Codeで業務ツールを自作する方法|skills・rules・MCPを使いこなす実践ガイド
「Claude Codeを使い始めたけれど、毎回同じ指示を手入力している」「プロジェクトのルールをAIに覚えてもらえたら楽なのに」——こうした課題を感じている方は少なくないでしょう。実は、Claude Codeにはskills(カスタムスラッシュコマンド)、rules(CLAUDE.md)、MCP(外部ツール連携)という3つの拡張機能が備わっており、これらを組み合わせることで、自分だけの業務ツールをAI上に構築できます。
本記事では、それぞれの機能の役割と具体的な設定手順を、実際のコードサンプル付きで解説します。プログラミング経験がなくても始められる内容から、開発チーム向けの高度な活用法まで、段階的に紹介していきます。
Claude Codeの「拡張機能」全体像 — skills, rules, MCPとは
Claude Codeは、Anthropicが提供するターミナルベースのAIコーディングツールです。単にコードを生成するだけでなく、ファイルの読み書き、Git操作、テスト実行など、開発ワークフロー全体を自律的にサポートします。しかし、初期状態のClaude Codeは「汎用AI」にすぎません。自社のプロジェクトに最適化するには、3つの拡張機能を活用する必要があります。
それぞれの役割と使い分け
| 機能名 | 役割 | 設定場所 |
|---|---|---|
| rules(CLAUDE.md) | プロジェクトの知識・ルールをAIに教える「教科書」 | プロジェクトルート直下のCLAUDE.md |
| skills(カスタムコマンド) | 繰り返しタスクを1コマンドで実行する「ショートカット」 | .claude/commands/フォルダ内のMarkdownファイル |
| MCP連携 | 外部ツール・サービスと接続する「プラグイン」 | .claude/settings.jsonまたは~/.claude/settings.json |
この3つは独立した機能ですが、組み合わせることで真価を発揮します。たとえば、CLAUDE.mdにデプロイ手順を記述し(rules)、その手順をワンコマンドで実行するスラッシュコマンドを作成し(skills)、デプロイ完了後にSlackへ通知する(MCP)——という一連の自動化が実現できます。
CLAUDE.md(rules)の書き方 — プロジェクト知識をAIに教える
CLAUDE.mdは、プロジェクトルートに配置するMarkdownファイルです。Claude Codeは会話開始時にこのファイルを自動的に読み込み、プロジェクト固有のコンテキストとして参照します。いわば「AIに渡すプロジェクトの取扱説明書」です。
基本構文
CLAUDE.mdは通常のMarkdown記法で記述します。特別な構文はなく、見出し、箇条書き、コードブロックなどが使えます。以下が基本的なテンプレートです。
# プロジェクト名 - Claude Code Context
## プロジェクト概要
このプロジェクトは○○を目的としたWebアプリケーションです。
フロントエンドはReact + TypeScript、バックエンドはNode.js + Expressで構成されています。
## 技術スタック
- フロントエンド: React 19, TypeScript 5.x, Vite
- バックエンド: Node.js 22, Express
- データベース: PostgreSQL 16
- テスト: Vitest, Playwright
## コーディング規約
- TypeScriptはstrict modeを使用する
- 変数名・関数名はcamelCase、型名・クラス名はPascalCase
- コンポーネントファイルは1ファイル1コンポーネント
- インポート順: 外部ライブラリ > 内部モジュール > 型定義
## ディレクトリ構成
src/
components/ # UIコンポーネント
hooks/ # カスタムフック
services/ # API通信ロジック
types/ # 型定義
utils/ # ユーティリティ関数
## デプロイ手順
1. mainブランチにマージ
2. GitHub Actionsが自動でビルド・テスト実行
3. テスト成功後、ステージング環境に自動デプロイ
4. 手動承認後、本番環境にデプロイ
## 禁止事項
- any型の使用は原則禁止(やむを得ない場合はコメントで理由を明記)
- console.logを本番コードに残さない
- 環境変数をハードコードしない(.envファイルで管理)
プロジェクト固有のルール設定
CLAUDE.mdの真価は、プロジェクト特有の暗黙知を明文化できる点にあります。たとえば以下のような情報を記述しておくと、Claude Codeの出力品質が格段に向上します。
- 過去の失敗から得た教訓:「CSS minifyにclean-css-cliは使用禁止。過剰最適化でレイアウトが崩壊した」など
- 外部サービスとの連携方法:APIキーの管理場所、エンドポイント、認証方式
- 命名規則のローカルルール:ファイル名のプレフィックス、ブランチ名の規約
- レビューで毎回指摘される事項:エラーハンドリングのパターン、ログ出力のフォーマット
よくあるパターン(コーディング規約、デプロイ手順、禁止事項)
実際の運用で効果が高いCLAUDE.mdの記述パターンをもうひとつ紹介します。環境変数やデプロイ先の情報を含める例です。
## 環境変数
- GITHUB_TOKEN: GitHub Personal Access Token(必須)
- DATABASE_URL: PostgreSQL接続文字列
- REDIS_URL: Redisキャッシュサーバーの接続先
## テスト
npm test # 全テスト実行
npm run test:watch # ウォッチモード
npm run test:coverage # カバレッジ付き実行
目標カバレッジ: 80%以上
## Git運用ルール
- コミットメッセージはConventional Commits準拠
- feat: 新機能
- fix: バグ修正
- docs: ドキュメント変更
- refactor: リファクタリング
- PRはsquash mergeでマージする
- mainへの直接pushは禁止
CLAUDE.mdはGitリポジトリにコミットするため、チーム全員がClaude Codeを使う際に同じルールが適用されます。新メンバーがジョインしたときも、CLAUDE.mdを読むだけでプロジェクトの全体像を把握できるという副次的なメリットもあります。
なお、個人的な設定(自分だけのワークフロー、ローカル環境の差異など)は、CLAUDE.mdとは別に~/.claude/settings.jsonやプロジェクト内の.claude/settings.local.jsonで管理できます。チーム共有のルールと個人設定を分離することで、リポジトリの整合性を保てます。
skills(カスタムスラッシュコマンド)の作り方
skillsは、Claude Codeの中で自分だけのスラッシュコマンドを定義できる機能です。「/deploy」と入力するだけでデプロイ手順が実行されたり、「/blog」でブログ記事の生成パイプラインが起動したりと、繰り返し行うタスクをワンコマンド化できます。
.claude/commands/フォルダの構成
カスタムコマンドは、プロジェクトルートの.claude/commands/フォルダにMarkdownファイルとして配置します。ファイル名がそのままコマンド名になります。
my-project/
.claude/
commands/
deploy.md # /deploy コマンド
blog.md # /blog コマンド
test.md # /test コマンド
seo-report.md # /seo-report コマンド
CLAUDE.md
package.json
src/
...
ファイル名にハイフンを含める場合、コマンド名もそのまま/seo-reportのようにハイフン付きで呼び出せます。
Markdownでの定義方法
各Markdownファイルの内容が、そのままClaude Codeへのプロンプト(指示文)になります。以下はデプロイコマンドの実例です。
# deploy.md の内容
以下の手順でプロジェクトをデプロイしてください。
1. まず `npm run build` を実行してビルドが成功することを確認
2. ビルド成功後、`npm test` でテストを実行
3. テストが全件パスした場合のみ、以下のscpコマンドでデプロイ:
scp -r -i $PEM_KEY public_html/* $DEPLOY_HOST:$DEPLOY_PATH/
4. デプロイ後、curl でトップページにアクセスしてステータス200が返ることを確認
5. 結果を報告
$PEM_KEY, $DEPLOY_HOST, $DEPLOY_PATH は環境変数から取得すること。
エラーが発生した場合は即座に中断し、エラー内容を報告してください。
引数の受け取り方($ARGUMENTS)
カスタムコマンドは$ARGUMENTSという特殊変数で引数を受け取れます。これにより、同じコマンドでもパラメータを変えて柔軟に使い回せます。
# blog.md の内容
ブログ記事を生成してください。
対象: $ARGUMENTS
以下の手順で進めてください:
1. 指定された記事番号・テーマに基づいて記事を生成
2. テンプレートは public_html/blog/blog-0220.html を参照
3. 画像は scripts/generate-blog-images.mjs で生成
4. JSON-LDの構造化データを含めること
5. blog.html にカードを追加
6. sitemap.xml を更新
このコマンドは以下のように呼び出します。
/blog blog-0231 テーマ:Claude Code拡張機能 カテゴリ:AI活用
$ARGUMENTSの部分が「blog-0231 テーマ:Claude Code拡張機能 カテゴリ:AI活用」に置換されて、Claude Codeに渡されます。
さらに高度な使い方として、コマンド内で他のコマンドを呼び出すことも可能です。たとえば、ブログ生成後にSEOチェックを自動実行するコマンドを作ることもできます。
MCP連携で外部ツールとつなげる
MCP(Model Context Protocol)は、Anthropicが提唱したAIと外部ツールを接続するためのオープンプロトコルです。Claude Codeは標準でMCP連携に対応しており、設定ファイルにサーバー情報を記述するだけで、データベース、Slack、GitHub、ファイルシステムなどの外部リソースにAIがアクセスできるようになります。
MCPサーバーの概念
MCPでは、外部ツールを「MCPサーバー」として抽象化します。MCPサーバーは、Claude Codeに対してtools(ツール)、resources(リソース)、prompts(プロンプト)の3種類の機能を提供します。
- tools:AIが実行できるアクション。データベースへのクエリ実行、Slackへのメッセージ送信など
- resources:AIが参照できるデータソース。設定ファイルの内容、APIのレスポンスなど
- prompts:定型的なプロンプトテンプレート。レビュー依頼のフォーマットなど
MCPについて詳しく知りたい方は、MCPとは?AIの「USB-C」と呼ばれる新規格を解説の記事も参考にしてください。
設定方法(settings.json)
MCP連携は、.claude/settings.json(プロジェクト単位)または~/.claude/settings.json(グローバル)に記述します。以下はファイルシステムMCPサーバーの設定例です。
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/path/to/allowed/directory"
]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "ghp_xxxxxxxxxxxx"
}
}
}
}
設定のポイントは以下の3点です。
- command:MCPサーバーを起動するコマンド(通常は
npxやnode) - args:起動時の引数。npmパッケージ名やディレクトリパスを指定
- env:MCPサーバーに渡す環境変数。APIトークンなどの認証情報を設定
実用例(Slack通知、DB接続、API呼び出し)
MCP連携の活用例を3つ紹介します。
Slack通知:デプロイ完了やエラー発生時に、指定のSlackチャンネルに自動通知を送信できます。MCPサーバーとして@modelcontextprotocol/server-slackを設定し、skills(カスタムコマンド)の中で「Slackに通知して」と記述するだけです。
データベース接続:PostgreSQLやSQLiteのMCPサーバーを設定すれば、Claude Codeが自然言語の質問に対してSQLクエリを自動生成・実行し、結果を返してくれます。「先月の売上トップ10を教えて」と聞くだけで、適切なSELECT文が実行されます。
外部API呼び出し:REST APIを呼び出すMCPサーバーを構築すれば、社内システムやSaaSツールとの連携が可能になります。たとえば勤怠管理システムのAPIに接続し、「今月の残業時間が多い社員をリストアップして」と指示するような使い方ができます。
業務ツール自作の実践例3選
ここまで紹介したskills、rules、MCPを組み合わせた、実際の業務で使える自作ツールの例を3つ紹介します。
実践例1:日報自動生成コマンド
毎日の日報作成を自動化するカスタムコマンドです。Git操作とMCPを組み合わせて、その日の作業内容を自動で集約します。
# .claude/commands/daily-report.md
今日の日報を生成してください。
以下の情報を収集して、日報フォーマットにまとめること:
1. 今日のGitコミット履歴を取得
git log --since="today 00:00" --oneline --author="$(git config user.name)"
2. 今日マージされたPR(あれば)
gh pr list --state merged --search "merged:>=$(date +%Y-%m-%d)"
3. 現在のブランチと未完了タスクの状況
4. 以下のフォーマットで出力:
## 日報 - $ARGUMENTS(日付が指定されなければ今日の日付を使用)
### 完了したタスク
- (コミット・PRの内容をもとに箇条書き)
### 進行中のタスク
- (作業ブランチの状況をもとに記述)
### 明日の予定
- (未完了タスクから推定)
### 備考
- (特記事項があれば)
このコマンドを/daily-reportで呼び出すと、Git履歴をもとにその日の作業内容が自動的に整理されます。日報作成に費やしていた15〜20分の時間を、ほぼゼロにできます。
実践例2:コードレビュー自動化
プルリクエストの自動レビューコマンドです。CLAUDE.mdに定義したコーディング規約をもとに、AIが品質チェックを実行します。
# .claude/commands/review.md
コードレビューを実行してください。
対象: $ARGUMENTS(PRの番号またはブランチ名)
## レビュー基準(CLAUDE.mdのコーディング規約に準拠):
1. **型安全性**: any型の使用がないか
2. **エラーハンドリング**: try-catchが適切に配置されているか
3. **命名規則**: 変数名・関数名がcamelCase、型名がPascalCaseか
4. **テスト**: 新規コードにテストが書かれているか
5. **セキュリティ**: 環境変数のハードコード、SQLインジェクションのリスクがないか
## 出力フォーマット:
- 各ファイルの変更差分を確認
- 問題点は重要度(Critical / Warning / Info)で分類
- 改善案を具体的なコード例つきで提示
- 全体の品質スコアを100点満点で評価
/review 42と実行すれば、PR #42の差分を自動で取得し、CLAUDE.mdのルールに基づいたレビューコメントを生成します。人間のレビュアーが見る前の「プレレビュー」として活用でき、レビューの往復回数を減らせます。
実践例3:データベースクエリアシスタント
MCP経由でデータベースに接続し、自然言語でのクエリ実行を可能にする構成です。
# .claude/settings.json のMCPサーバー設定
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://user:pass@localhost:5432/mydb"
}
}
}
}
# .claude/commands/query.md
データベースクエリアシスタントとして動作してください。
ユーザーの質問: $ARGUMENTS
以下のルールに従うこと:
1. 質問を分析し、適切なSQLクエリを生成
2. 実行前にクエリ内容を表示して確認を求める
3. SELECTクエリのみ実行可能(INSERT/UPDATE/DELETEは禁止)
4. 結果は見やすいテーブル形式で表示
5. 大量のデータが返る場合はLIMIT 100を付与
/query 先月の売上が100万円を超えた取引先を一覧で見せてと入力すると、AIがSQLを組み立てて実行し、結果を整形して表示します。SQLを書けない営業担当者でも、自然言語でデータを引き出せるようになります。
よくある質問(FAQ)
Q. Claude Codeのskills(カスタムコマンド)とは何ですか?
skillsとは、.claude/commands/フォルダにMarkdownファイルを配置することで作成できるカスタムスラッシュコマンドです。/deploy、/blog、/testなど、よく使う操作を1コマンドで呼び出せるようになります。ファイル名がコマンド名になるシンプルな仕組みで、プロンプト(指示文)をMarkdownで記述するだけなので、プログラミングの知識がなくても作成できます。Gitリポジトリにコミットすれば、チーム全員が同じコマンドを使えるため、作業の属人化を防ぐ効果もあります。
Q. CLAUDE.mdにはどんな内容を書けばいいですか?
プロジェクト概要、技術スタック、コーディング規約、デプロイ手順、禁止事項、環境変数の説明などを記述します。Claude Codeがコード生成やレビュー時にこのファイルを自動参照するため、プロジェクト固有のルールを漏れなく伝えられます。特に効果が高いのは「過去の失敗から得た教訓」の記述です。「このライブラリは使わない」「このパターンはバグを生みやすい」といった暗黙知を明文化することで、同じ問題の再発を防げます。
Q. MCPサーバーの設定は難しいですか?
基本的な設定はsettings.jsonにサーバー名・起動コマンド・環境変数を記述するだけです。公式が提供するMCPサーバー(ファイルシステム、GitHub、Slack、PostgreSQL等)であれば、npmパッケージをインストールして設定ファイルに追記するだけで連携が完了します。カスタムのMCPサーバーを自作する場合はTypeScriptやPythonの知識が必要ですが、既存のサーバーを利用するだけなら設定ファイルの編集のみで対応可能です。
Q. Claude Codeは無料で使えますか?
Claude Codeの利用にはAnthropic APIキーまたはClaude Pro以上のサブスクリプションが必要です。APIキーの場合は従量課金制で、使用したトークン量に応じて料金が発生します。Claude Maxプラン(月額$100〜$200)ではAPIとは別枠のClaude Code利用枠が提供されます。最新の料金体系はAnthropicの公式サイトで確認してください。
Q. skills・rules・MCPの違いは何ですか?
rules(CLAUDE.md)はプロジェクトの知識・ルールを定義し、AIの判断基準になります。skills(カスタムコマンド)は繰り返しタスクを1コマンドで実行するショートカットです。MCPはModel Context Protocolの略で、外部ツール(データベース、Slack、APIなど)との接続を可能にする仕組みです。rulesが「何を知っているか」、skillsが「何ができるか」、MCPが「何とつながるか」を定義すると考えると分かりやすいでしょう。三者を組み合わせることで、AIを活用した強力な業務ツールが構築できます。
まとめ
Claude Codeは「ただのAIコーディングツール」ではなく、skills・rules・MCPという3つの拡張機能を活用することで、自社専用の業務自動化プラットフォームに変えることができます。
本記事の要点を整理します。
- CLAUDE.md(rules)にプロジェクトの知識・規約・禁止事項を記述することで、AIの出力品質が向上し、チーム全体で一貫したルールが適用される
- skills(カスタムコマンド)は.claude/commands/にMarkdownファイルを配置するだけで作成でき、$ARGUMENTSで引数も受け取れる
- MCP連携はsettings.jsonにサーバー設定を追記するだけで、データベース・Slack・GitHubなど外部ツールとAIを接続できる
- 3つの機能を組み合わせることで、日報自動生成、コードレビュー自動化、データベースクエリアシスタントなどの実用的な業務ツールを構築できる
- プログラミング経験がなくても、Markdownの記述とJSON設定ファイルの編集だけで始められる
AIツールの進化により、「自分の業務に合ったツールを自分で作る」時代が到来しています。最初から完璧な設定を目指す必要はありません。まずはCLAUDE.mdにプロジェクトの基本情報を書くところから始めて、必要に応じてskillsやMCPを追加していく——この段階的なアプローチが、業務効率化への最短ルートです。
株式会社Sei San SeiのBPaaS(業務自動化)サービスでは、Claude Codeを活用した開発環境の構築・業務自動化の設計を支援しています。「自社の業務をAIで自動化したい」「Claude Codeの導入を検討しているが設定がわからない」という方は、BPaaSサービスの詳細ページをご覧ください。お気軽にご相談ください。