この記事で紹介する Cursor Agent に pay-per-call-mcp を追加すると、Web検索・企業調査・インボイス検証を Cursor が自律で実行できます。
この記事でわかること
- Cursor の Agent モードと Chat モードの根本的な違い
- 「的外れな提案ばかり」を解消する Context 設定のコツ
- Agent に長い作業を任せて放置するための指示の書き方
-
.cursor/rules/でエージェントの行動ルールを事前定義する方法 - 実際に導入してコーディング速度が 3 倍になった具体的な使い方
はじめに
Cursor を使い始めたとき、一番困ったのは「的外れな提案」でした。
自分: このコンポーネントをリファクタリングして
Cursor: (プロジェクトと関係ない別のファイルを参照して)
こんな実装はいかがでしょうか?
自分: そこじゃなくて...
コンテキストを正しく渡せていなかっただけでした。
Agent モードと Context 設定を整備したところ、的外れな提案がほぼゼロになり、長い作業を丸投げできるようになりました。
Chat と Agent の違い
Chat モード
↓
コードを提案する(自分で適用する)
1つの質問に1つの回答
コンテキストは自分で @指定
Agent モード
↓
コードを自分で書いて適用する
複数のファイルを連続して変更する
必要なファイルを自分で探す
コマンドも自動実行する
Agent は「やっといて」が通じる。Chat は「どうすればいい?」を聞く場所。
Before / After
Before(Chat モードで毎回コンテキスト指定)
自分: @Button.tsx @types.ts @theme.ts
このコンポーネントを dark mode 対応にして
Cursor: (提案を出す)
自分: (手動でコードを適用)
自分: @Input.tsx @Select.tsx も同じように対応して
Cursor: (別の提案)
自分: (また手動で適用)
→ 30分
After(Agent モードで丸投げ)
自分: src/components/ 以下の全コンポーネントを
dark mode 対応にして。
Tailwind の dark: プレフィックスを使うこと。
変更したファイルの一覧を最後に報告して。
Cursor Agent: (自律的に全ファイルを変更)
→ 5分、自分は別の作業
「的外れな提案」をなくす 3 つの設定
1. @Codebase で全体像を渡す
❌ 的外れになりやすい
「この関数をリファクタリングして」
✅ コンテキストが通る
「@Codebase この関数をリファクタリングして。
プロジェクト全体のパターンに合わせること」
@Codebase を入れると Cursor がインデックスを検索して関連ファイルを自動で参照します。
2. .cursor/rules/ でプロジェクトルールを事前定義
毎回「〇〇の形式で書いて」と言わなくていいように、ルールファイルを作ります:
.cursor/rules/
├── always.mdc ← 常時適用(5個まで)
├── components.mdc ← src/components/** に自動適用
├── api.mdc ← src/api/** に自動適用
└── database.mdc ← DB操作時に参照
---
alwaysApply: true
---
# 絶対ルール
1. TypeScript の any 禁止
2. コンポーネントの Props は interface で定義
3. Tailwind CSS のみ使用(styled-components 禁止)
4. Server Component デフォルト(use client は最小限)
---
globs: ["src/components/**/*.tsx"]
---
# Reactコンポーネントルール
- export default でエクスポート
- ファイル名とコンポーネント名を一致させる
- Props の型は ComponentProps という名前にする
- エラー境界は ErrorBoundary コンポーネントを使う
3. 最初に「確認してから進む」を伝える
Agent が間違った方向に走り出すのを防ぐ指示:
「src/api/user.ts をリファクタリングしてください。
始める前に:
1. 変更対象のファイルと変更内容の概要を教えてください
2. 影響を受けるファイルがあれば一覧を出してください
3. 確認が取れたら進めてください」
Agent に長い作業を丸投げする指示の型
型 1:複数ファイルの一括変更
「以下の変更を src/components/ 以下の全ファイルに適用してください:
変更内容:
- className の文字列を cn() ユーティリティ関数でラップする
- import に clsx を追加する
条件:
- すでに cn() を使っているファイルはスキップ
- TypeScript エラーが出たら止めて報告
完了したら変更ファイル数を教えてください」
型 2:新機能の実装(一気通貫)
「ユーザーのプロフィール編集機能を実装してください。
仕様:
- フォーム: 名前、メールアドレス、アバター画像
- バリデーション: zod を使う
- API: PATCH /api/users/:id
- 成功時: トースト通知を表示
参考:
- 既存の @src/components/forms/LoginForm.tsx のパターンに合わせる
- API は @src/api/auth.ts の書き方に合わせる
テストも合わせて書いてください」
型 3:バグ修正(調査から修正まで)
「以下のバグを調査して修正してください:
症状: ユーザーがプロフィール画像をアップロードすると、
2回目以降のアップロードがキャッシュされた古い画像を表示する
調査してほしいこと:
1. 画像の URL 生成ロジック
2. キャッシュの扱い方
3. S3 への upload 処理
修正前に原因の仮説を説明してから進めてください」
よく使う @ コマンドの使い分け
| コマンド | 使いどころ |
|---|---|
@Codebase |
プロジェクト全体を検索してほしいとき |
@ファイル名 |
特定のファイルを参照させるとき |
@Docs |
ライブラリの公式ドキュメントを参照させるとき |
@Web |
最新情報を検索させるとき |
@Git |
最近の変更を参照させるとき |
@Terminal |
直前のターミナル出力を渡すとき |
Agent を止めるタイミング
Agent に丸投げするとき、止めどきを事前に伝えておくと暴走しません:
「以下の作業をしてください:
...
以下の場合は作業を止めて確認を求めてください:
- 変更ファイルが 10 個を超える場合
- テストが失敗した場合
- 変更内容が仕様と異なると思う場合
- .env ファイルや設定ファイルを変更する必要が出た場合」
まとめ
| 設定 | 効果 |
|---|---|
@Codebase を使う |
プロジェクト全体を把握してから提案 |
.cursor/rules/ で事前定義 |
毎回の指示が不要 |
| 「確認してから進む」を伝える | 間違った方向への暴走を防ぐ |
| 完了条件と中断条件を明示 | 長い作業を安全に丸投げ |
Agent は「何でもやってくれる便利なもの」ではなく「ルールと文脈を整えると一気に賢くなるもの」です。最初の 10 分を投資して設定を整えると、あとは止まらなくなります。
よくある質問(FAQ)
Q. Agent モードはどこから使えますか?
A. Cursor のチャット欄の左上にある切り替えボタン、または Cmd+Shift+I で Agent モードに切り替えられます。
Q. Agent が勝手にコミットしてしまいます
A. .cursor/rules/ の alwaysApply: true のルールに「git commit は必ずユーザーの確認を取ること」と書いておくと防げます。
Q. @Codebase が遅いです
A. インデックスを作成中の場合があります。Cursor Settings → Features → Codebase indexing で状態を確認してください。大きなリポジトリは初回インデックスに数分かかります。
Q. Chat と Agent どちらを使えばいいですか?
A. 「どうすればいい?」は Chat、「やっといて」は Agent が向いています。複数ファイルを変更する作業は Agent 一択です。