Zenn
Open5

忙しい人のためのCursor設定方法と機能活用ガイド by ChatGPT Deep Research

P-HunterP-Hunter

Cursorの初期設定や各機能(.cursorrules、Composer/Agent機能、シンボル機能、MCPサーバー)の生産性向上に役立つポイントを優先してまとめます。

これには、

  • 効率的な設定方法
  • 各機能の主要な活用法
  • 使うことで得られる生産性向上のメリット
    をシンプルにまとめ、時間がない人向けに短く要点を押さえた内容にします。

完了次第、お知らせします。

Cursorで生産性を上げるための設定と機能活用ガイド

CursorはAI搭載のコードエディタで、適切な設定と機能活用によって開発効率を大幅に高められます (1)。時間のない人でもすぐ試せるポイントを、以下のトピック別に簡潔にまとめました。

1. Cursorの初期設定

まずは環境を整えて、Cursorを効率よく使えるように設定しましょう。

  • AIモデルの選択: 最適なAIモデルを選びます。記事執筆時点では汎用モデルとしてclaude-3.5-sonnetが最も高性能とされています (2)。Cursor Settingsでこのモデルを選択し、必要に応じて他のモデルも有効にしておきます。
  • プロジェクトルールの有効化: Cursor Settingsの「General」で「Include .cursorrules file」をオンにし、プロジェクト固有のルールを読み込むよう設定します (2)。これによりリポジトリ直下の.cursorrulesファイル(後述)が自動的にAIに適用されます (3)。
  • エディタ環境のインポート: VS Codeなどから移行する場合、拡張機能やテーマ、キーバインドをワンクリックで引き継げます (4)。お気に入りの設定を導入しておくことで、新しい環境でも違和感なく作業に集中できます。

2. .cursorrulesファイルの活用

.cursorrulesはプロジェクトごとにAIへの指示を与えるための設定ファイルです。適切に活用することで、コード補完の精度向上やスタイル統一が期待できます。

  • ルールファイルの作成: プロジェクトのルートディレクトリに.cursorrulesファイルを作成し、AIへのルールを記述します (2)。内容としてはプロジェクトの目的や技術スタック、コーディング規約、頻出するユーティリティ関数の説明など、AIが知っておくと良い情報を盛り込みます (3)。これによってCursorは常にプロジェクト文脈を理解した提案を行えるようになります。
  • コードスタイル統一: .cursorrules内でコーディングスタイルや使用するフレームワークのバージョンを指定しておくと、AIが常にそれに沿ったコードを生成します。例えばSwiftUIプロジェクトなら「常に最新のAPI(NavigationStackなど)を使う」「古いコールバックではなくasync/awaitを使う」といったルールを書いておけば、AIは最新のベストプラクティスに従ってコード補完してくれます (5)。同様にNext.jsや型付けのガイドラインなどを指定して、チームのコーディング規約に沿ったコード提案を得ることも可能です。

3. ComposerとAgent機能の活用

CursorのAI支援機能(Composer/Agent)を使いこなすことで、自動補完や大規模なコード修正を一層効率化できます。

  • インラインのコード補完: コーディング中にエディタが提案する自動補完を積極的に活用しましょう。Cursorの補完は一度に複数行を予測する高度なもので (4)、ボイラープレートなコードや繰り返しがちな処理をTabキー一つで素早く記述できます。些細なミスも自動修正(スマートリライト)されるため、まずはAI提案を受け入れてみて必要に応じて調整すると良いでしょう (4)。
  • Composer(マルチファイル編集): 複数ファイルにまたがる修正にはComposer機能が便利です。Cursor Settingsの「Beta」タブでComposer機能を有効にしたら (1)、⌘+Shift+I(WindowsはCtrl+Shift+I)でComposerウィンドウを開けます。通常のチャット欄と同じ要領で変更内容を指示すると、プロジェクト内の複数ファイルに対するコード修正を一括生成してくれます (1)。大規模なリファクタリングや横断的なAPI変更など、手動では時間のかかる作業も一度の指示で完了できるので非常に効率的です。
  • Agentモード(自動タスク実行): Composerウィンドウ内のモードを「Agent」に切り替えると、AIがゴール達成のために必要なステップを自律的に計画・実行するようになります (6)。例えば「この機能を実装して」という大まかな指示を出すと、関連ファイルすべてに変更を加え、必要ならテストやターミナルコマンドの実行まで自動で試みます(実行中も逐一プログラマに確認してくれるので安心です (6))。複数ステップに及ぶ開発作業を任せることで、自分はレビューや微調整に集中でき、生産性が向上します。

4. シンボル機能によるナビゲーション

大規模なプロジェクトでも、Cursorのシンボル機能を使えば目的のコードや定義にすぐ辿り着けます。以下のショートカットを活用して、素早くプロジェクトをナビゲーションしましょう (7):

  • ファイル検索: Ctrl+P でファイルを名前検索して即座に開けます (7)。ファイル名の一部を入力するだけで候補が絞り込まれるため、ディレクトリを手動でたどる手間を省けます。
  • 全文検索: Ctrl+Shift+F でワークスペース全体からキーワードを検索できます (7)。関数名やエラーメッセージなどで検索すれば、定義箇所や使用箇所を瞬時に洗い出せます。
  • シンボル検索: Ctrl+T を押すと関数・クラス・変数などシンボル単位で検索し、その定義へジャンプできます (7)。プロジェクトが大きくても、関心のある関数定義に迷わずアクセス可能です。
  • コード参照の活用: AIに質問したり変更を依頼する際、プロンプト内で「@」記号を使ってコードを参照できます。@を入力するとファイル名やシンボル名の候補一覧が表示され、選ぶだけでそのコード片を引用挿入できます (4)。これにより「この関数を改善して」といった指示を出す場合でも、該当関数を**@記法で添えるだけでAIが正確に認識し**、的確な回答や修正提案をしてくれます (4)。

5. MCPサーバーの活用(チーム開発・リモート開発向け)

CursorのMCP(Model Context Protocol)サーバー機能を利用すると、AIがエディタの枠を超えて外部ツールを使ったり複雑なタスクを自動化したりできます。チーム開発やリモート開発の生産性向上につながるポイントを押さえておきましょう。

  • 外部ツールとの連携: MCPサーバーを導入すると、AIがプロジェクト専用の「ツール」を使えるようになります。例えばデータベース問い合わせ用のMCPや、社内APIにアクセスするMCPを用意すれば、チャット上で直接SQLクエリを投げたりGitHubなどの外部APIを叩くことも可能です (8)。また文献検索用のMCPを用意すれば、その場で仕様書やナレッジベースを検索して回答させることもできます (8)。こうしたカスタムMCPサーバーはチーム内で共有しておけば、全員が同じ自動化ツールを利用できるので作業の標準化と効率アップに役立ちます (8)。
  • 複雑なタスクの自動化: MCPサーバーには様々な種類がありますが、例えばSequential Thinkingと呼ばれるMCPを組み込むと、AIが問題解決の手順を論理立てて進めるようになります。実際にSequential Thinking MCPを有効化したユーザーからは「エージェントによるエラー修正がよりうまくいくようになった」との報告もあり (9)、複雑なバグ修正や大規模実装でもミスを減らしやすくなります。さらにファイルシステム操作系のMCPを使えば、AIが自動で複数ファイルを書き換えるといった高度な編集も可能になります(Cursor標準のedit_file機能との併用時には注意が必要との指摘があります (10))。このようにMCPサーバーを使いこなすことで、チーム開発やリモート環境においてもAIがより実践的なサポートを提供し、生産性向上につながります。

以上の設定・機能を活用することで、Cursorを使った開発のスピードと快適さが飛躍的に向上します。ぜひ時間の許す範囲で一つずつ試してみてください。各ポイントは短時間で設定可能なので、忙しい中でも効果を実感できるはずです。

参考文献

[1] 4 Tips to Boost Your Productivity Using Cursor | HackerNoon
[2] How to use Cursor to launch your startup idea
[3] Good examples of .cursorrules file? - Discussion - Cursor - Community Forum
[4] Exploring Cursor AI: The Future of Code Generation
[5] Exploring Cursor: Rules for AI Using cursorrules
[6] Cursor - The AI Code Editor | Any Mind
[7] Unified Contextual Navigation Search: Streamlining Developer Workflows - Feature Requests - Cursor - Community Forum
[8] Cursor as an MCP client - Discussion - Cursor - Community Forum
[9] How to use MCP Server? - How To - Cursor - Community Forum
[10] Mcp servers: Conflict Between Cursor's edit_file and Filesystem MCP Server in Composer Agent Mode - Bug Report - Cursor - Community Forum

P-HunterP-Hunter

YOLOモード (Yolo Mode)

機能の概要

YOLOモードYou Only Live Onceモード)は、Cursor内のAIエージェント(Agent)がユーザーの許可なしに自動でターミナルコマンドやツールを実行できる機能です。通常、Agentがコードを書いたりコマンドを提案した場合、開発者がそれを確認・承認してから実行します。しかしYOLOモードを有効にすると、Agentが判断したコマンド(テストの実行やビルドなど)を逐一許可を求めずに自動実行します。これにより、人間の介在を減らし、AIが連続した作業を自律的に進めることが可能になります。まさに「一度きりだから全部自動でやってしまえ」という名前通りの大胆なモードです。

動作の仕組み

YOLOモードを使うと、CursorのAgentはターミナルコマンドやMCPツールの実行要求時にユーザー確認をスキップします。例えば通常であれば「このコマンドを実行してよいか?」という承認ダイアログが表示されますが、YOLOモードではこれを自動承認し即座にコマンド実行します。仕組みとしては、Agentが内部でコマンド実行ツールを呼び出す際のガード(安全確認)を解除する形です。とはいえすべてが無条件実行されるわけではなく、現状ではファイル内容の変更適用については依然としてユーザーの確認が必要です。これはAIがコードを破壊するリスクを避けるための措置で、YOLOモード中でも編集結果のプレビューに対して「Accept(受け入れ)」ボタンを押すフローは残されています。将来的には完全自動化(いわゆる"YOLO+")も検討されているようです。

また、YOLOモードでも安全策(ガードレール)は用意されています。ユーザーはCursor設定で特定コマンドの許可・禁止リスト(denylist/allowlist)を定義でき、危険なコマンド(例: rmによる削除など)が自動実行されないよう制限できます。これにより、自律実行中でもシステムに深刻な変更を加える操作はブロック可能です。内部的には、Cursorが保持するシェルのプロファイルを用いてコマンドを実行し、結果をエージェントが受け取ります。エージェントは**「このタスクを完了するために次に何をすべきか」を推論しながら複数のコマンドを連続実行します(上限25回まで。25回に達すると一旦停止し、ユーザーが続行指示可能)。このようにLLMの推論+ツール実行**をループさせることで、Agentが人手を介さず問題解決に向けて動作するのがYOLOモードの仕組みです。

活用事例やメリット

YOLOモードの最大のメリットは、開発フローの自動化と効率化です。例えば「テストスイートを実行し、失敗したらコードを修正して再度テストする」といった一連の作業をAgentに任せることができます。開発者は指示を出すだけで、あとはAIが試行錯誤を繰り返しながら最終的な目的達成まで進んでくれるため、生産性が飛躍的に向上します。具体的な活用例としては以下のようなケースがあります:

  • 自動テストとバグ修正: 「このリポジトリのテストを全部走らせて、失敗したテストに対応する修正を行って」と指示すれば、AIがテスト実行→エラー解析→コード修正→再テストを繰り返し、すべてのテストが通るまで作業してくれます。人間は結果をまとめて確認するだけで済みます。
  • ビルド&デプロイの自動化: ビルドスクリプトやデプロイコマンドをAgentに託すことで、CIのような一連の開発パイプラインをローカルで自動実行できます。YOLOモードなら途中で確認ダイアログに止められることなく最後まで実行可能です。
  • 情報収集と反復改善: Web検索ツールや他のMCPツールと組み合わせて、Agentが外部情報を取り入れながらコード改良やドキュメント生成を連続で行う、といった使い方もできます。例えば「最新のフレームワークAPIの使い方を調べてコードを書き換えて」と指示すれば、Agentが@Web検索→コード編集→結果検証まで行います。

これらの事例から分かるように、YOLOモードは開発者の手を離れてAIが能動的に作業を進める点が革新的です。特に複雑なリファクタリングや大規模コード生成の際、人間が逐一確認しなくても良いので流れを中断せず集中したアウトプットが期待できます。また、AIエージェントの推論能力を最大限活用できるため、ユーザーの思考では及ばないような解決策を自律的に試すこともあり得ます。もちろんリスクも伴いますが、適切にガードレールを設定しておけば生産性向上の恩恵が大きいでしょう。

設定や有効化の方法

YOLOモードを利用するには、Cursorの設定画面で明示的に有効化する必要があります。デフォルトでは安全のため無効になっているため、以下の手順でオンにします:

  1. Cursor設定を開く: Cursorウィンドウ右上の歯車アイコンをクリックします(メニューの「Cursor > Cursor Settings」からも開けます)。
  2. Featuresタブを選択: 設定画面の左側メニューから「Features」(機能)タブをクリックします。
  3. YOLO Modeを有効化: スクロールして「Enable Yolo Mode」というオプションを探し、チェックボックスをオンにします。有効化すると、警告や注意事項が表示される場合があります。内容を理解した上で承認してください。

この設定をオンにすると、以後Composer内のAgentモードで実行されるコマンドは自動承認されます。さらに細かな設定として、「Yolo Prompt」という項目で追加ルールを記述できます。例えば「rmdeleteを含む削除系コマンドのときだけ確認を求める」といった指示をYolo Promptに書いておけば、特定の条件下では例外的に確認させることも可能です。このように、YOLOモードの振る舞いをカスタマイズして安全性と自動化のバランスを調整できます。

設定後、実際にYOLOモードを使うにはComposerをAgentモードに切り替える必要があります。CursorのComposerには「Normal(通常)」と「Agent(エージェント)」の切り替えトグルがあり、AgentにするとエージェントAIが有効になります。YOLOはこのAgentモード時の動作に影響する機能ですので、Composer右下でAgentモードにするのをお忘れなく。また、初めて利用する際は小さなタスクで挙動を確認し、問題ないことを確かめてから大きな処理に使うことが推奨されます。

関連技術や類似機能

YOLOモードは自律エージェントに関する技術の一種で、近年話題の「Auto-GPT」や「BabyAGI」などと理念を同じくします。これらはLLMに連続的な目標指向の行動を取らせる試みで、CursorのYOLOモードもIDE上でそれを実現するものです。加えて、OpenAIの**「関数呼び出し(Function Calling)」機能やLangChainのツール実行といった概念とも関連があります。CursorではMCPという仕組みでツール統合をしていますが、YOLOモードは統合したツールをユーザー確認なしで次々呼び出す**点で共通しています。

他の開発支援AIとの比較では、ReplitのGhostwriterなどもコードを自動で実行・検証する機能を試していますが、CursorのYOLOモードはより汎用的にコマンド全般を自動化できる点で先進的です。また、VS Code拡張の類にはここまで踏み込んだ自動実行機能はなく、Cursor特有の特徴と言えます。似た概念としてはCI/CDパイプラインの自動実行や、Lint/フォーマッタの自動適用がありますが、YOLOモードはAIの推論に基づくマルチステップ実行という点でそれらスクリプトベースの自動化と一線を画しています。技術的には、エージェントAIのプランニング能力(与えられたゴールに対してどのようなコマンド列を実行すべきかを考える能力)と、VS Codeターミナルとの統合、さらにCursor独自の安全ガードの組み合わせによって実現されています。このように、YOLOモードは最新のAIエージェント技術をIDEに応用した尖った機能であり、使いこなせば開発効率を飛躍的に高める可能性があります。

P-HunterP-Hunter

プロジェクトルール (Project Rules)

設定可能なルールの種類

プロジェクトルールは、プロジェクトごとにAIの挙動をカスタマイズするためのルールセットです。Cursorには大きく分けてグローバルルールプロジェクトルールの2種類があります。

  • グローバルルール: 全プロジェクト共通で適用されるルールで、Cursorの設定画面(Settings > General > Rules for AI)から設定します。個人の好みや全体に適用したい指示(例:「常に日本語で回答せよ」や「コードはTypeScriptで書け」など)を記述します。
  • プロジェクトルール: 個別のプロジェクト専用のルールで、プロジェクト直下の.cursor/rules/ディレクトリに**.mdc拡張子**のファイルとして保存します。プロジェクト固有のコーディング規約やフレームワーク仕様、ディレクトリ構成などに関する指示を細かく定められます。

このように2段構えでルールを定義できるため、「普段は全てのプロジェクトで○○を守る(グローバルルール)」+「このプロジェクトではさらに△△に従う(プロジェクトルール)」といった柔軟な使い分けが可能です。なお、従来は.cursorrulesという単一ファイルでプロンプトをカスタマイズしていましたが、バージョン0.45以降は**プロジェクトルール(.mdc)**の方式が推奨されています。.cursorrulesは後方互換のため残っていますが、将来的には廃止予定と公式にも明記されています。

ルール適用の仕組み

プロジェクトルールはYAML風マークダウン形式のテキストファイルで定義され、その内容がAIモデルへの追加指示(システムプロンプト)として機能します。各ルールファイルにはメタ情報としてDescription(説明)Globパターンを指定でき、これによって「どんなときにこのルールを適用すべきか」をCursorが判断します。具体的な仕組みは以下の通りです:

  • ファイルパターンマッチング: ルールファイルにはFile patterns: *.ext, path/to/dir/*のようにGlob形式で対象ファイルパターンを記述できます。エージェントがあるファイルに対して回答やコード生成を行う際、そのファイルパスがどのルールのGlobに合致するかをチェックします。一致したルールは自動でプロンプトに付与されます。例えば、*.tsxにマッチするルールがあれば、エージェントが.tsxファイルに関するやりとりをする時にそのルールが自動適用されます。
  • 説明(Description)による選択: 各ルールには自由記述の説明を付けられます。Agentは必要に応じてこの説明を読み、今自分が取り組んでいるタスクに関連しそうなルールを能動的に選択して適用することもあります。つまり明示的なGlobマッチだけでなく、「React関連のガイドライン」と説明されたルールを、Reactコード生成のときにAIが参照する、といった柔軟な動作もします。説明文はエージェントにとってのヒントとなるため、ルールの目的や適用範囲が端的に分かる記述が重要です。

内部的には、ルールファイルの内容はAIへのシステムプロンプトとして追加されます。例えば「コードはBEMメソドロジーに従って書くこと」というルールがあれば、それがAIの指示として組み込まれ、AIはその制約に従ってコードを生成します。複数のルールが適用される場合は、それらが連結されて一つの大きな指示となります。ただし、すべてのルールが常に適用されるわけではなく、Cursorはコンテキストに応じて関連性の高いルールを選択します。例えば、ユーザーが「新しいReactコンポーネントを作って」と頼んだ場合、Reactに関するルールが優先的に適用されるといった具合です。

ルールの記述方法と例

プロジェクトルールは.cursor/rules/ディレクトリ内に.mdcファイルとして作成します。ファイル名は任意ですが、内容を表す名前(例: react-guidelines.mdc)が推奨されます。ファイルの構造は以下のようになります:

---
Description: このルールの説明(例: Reactコンポーネントのスタイルガイド)
File patterns: src/components/*.tsx, src/pages/*.tsx
---

# ここからルール本文
以下のガイドラインに従ってReactコンポーネントを実装してください:

1. 関数コンポーネントを使用し、アロー関数で定義する
2. propsには必ずTypeScriptの型定義を付ける
3. スタイルはCSS Modulesを使用する
4. ...

このように、ファイル先頭にYAML形式のメタデータを記述し、その後にマークダウン形式でルール本文を書きます。ルール本文は自由形式で、箇条書きや見出し、コードブロックなどマークダウンの機能を活用できます。

実際のルール例をいくつか示します:

  1. コーディングスタイルルール:
---
Description: TypeScriptコーディング規約
File patterns: *.ts, *.tsx
---

# TypeScriptコーディング規約

- 変数名はキャメルケース(camelCase)で記述する
- クラス名・インターフェース名はパスカルケース(PascalCase)で記述する
- 定数は大文字のスネークケース(UPPER_SNAKE_CASE)で記述する
- any型の使用は避け、明示的な型定義を行う
- 関数の戻り値の型は必ず明示する
- ...
  1. プロジェクト構成ルール:
---
Description: プロジェクトのディレクトリ構成ガイド
File patterns: *
---

# プロジェクト構成

このプロジェクトは以下のディレクトリ構造に従います:

- `src/components/`: 再利用可能なUIコンポーネント
- `src/pages/`: 各ページのコンポーネント
- `src/hooks/`: カスタムReactフック
- `src/utils/`: ユーティリティ関数
- `src/types/`: 型定義
- `src/api/`: APIクライアント

新しいファイルを作成する際は、この構造に従ってください。
  1. ドメイン固有ルール:
---
Description: ECサイト固有の業務ロジックルール
File patterns: src/features/cart/*, src/features/checkout/*
---

# ECサイト業務ロジック

カートと決済に関する実装では以下のルールを守ってください:

1. 金額計算は必ず`Money`クラスを使用し、浮動小数点演算を直接行わない
2. 税率計算は`TaxCalculator`サービスを利用する
3. 在庫確認は必ず非同期で`InventoryService.checkAvailability()`を呼び出す
4. ...

このように、プロジェクトの様々な側面に対応するルールを個別のファイルに分けて管理できます。

活用事例とメリット

プロジェクトルールの活用事例とそのメリットを紹介します:

  • チーム開発での統一性確保: プロジェクトのリポジトリに.cursor/rules/を含めることで、チームメンバー全員が同じルールセットを使えます。これにより、AIが生成するコードが一貫したスタイルやアーキテクチャに従うようになり、コードベースの統一性が高まります。例えば「このプロジェクトではReduxではなくContext APIを使う」といったチーム決定事項をルール化しておけば、新メンバーも含めて全員が同じ方針でコードを書けます。
  • プロジェクト固有の知識伝達: 複雑なドメインロジックや特殊なビジネスルールをプロジェクトルールとして記述しておくと、AIがそれを理解した上でコード生成やアドバイスを行えます。例えば「この金融アプリでは小数点以下の計算に特殊なルールがある」といった知識をAIに持たせることで、バグの少ないコード生成が期待できます。
  • レガシーコード対応: 古いフレームワークや独自の設計パターンを使ったレガシープロジェクトでも、そのルールをプロジェクトルールとして定義しておけば、AIが既存コードベースと整合性のあるコードを生成できます。「このプロジェクトではAngularJS 1.xの特定のパターンに従う」といった制約を設定できます。
  • 複数プロジェクト間の切り替え: 開発者が複数のプロジェクトを行き来する場合でも、プロジェクトルールのおかげでAIは自動的にそのプロジェクト固有のルールに適応します。朝はReactプロジェクト、午後はVueプロジェクトといった切り替えでも、AIの支援が一貫して得られます。
  • 新人教育・オンボーディング: プロジェクトルールは新しいチームメンバーにとって学習リソースにもなります。AIがプロジェクト固有のルールに従ってコードを生成し説明するため、新人は自然とプロジェクトの作法を学べます。「なぜこのように実装するのか」をAIに質問すれば、ルールに基づいた回答が得られます。

これらの活用により、プロジェクトルールはAIを通じたナレッジマネジメントの役割も果たします。プロジェクトの暗黙知を形式化し、AIを介して全メンバーに共有できるのです。

運用のポイントと注意点

プロジェクトルールを効果的に運用するためのポイントと注意点をまとめます:

  • ルールの粒度と分割: 全てを1つのファイルに詰め込むのではなく、関心事ごとに分割するのが良いプラクティスです。例えば「コーディングスタイル」「アーキテクチャ」「テスト方針」など、カテゴリ別にファイルを分けると管理しやすくなります。ただし、あまりに細かく分割すると全体像が把握しづらくなるため、バランスが重要です。
  • ルールの優先順位: 複数のルールが競合する可能性がある場合は、Description欄に優先度を明記しておくと良いでしょう。例えば「Priority: High」のように記述しておけば、AIがルール適用の判断材料にできます。
  • ルールのメンテナンス: プロジェクトの進化に合わせてルールも更新する必要があります。定期的にレビューし、古くなったルールは修正・削除するプロセスを設けましょう。特に技術スタックの変更やリファクタリング後は、ルールの見直しが重要です。
  • 過度な制約に注意: あまりに厳格で詳細なルールを設定すると、AIの創造性や問題解決能力を制限してしまう恐れがあります。「こうしなければならない」という禁止事項だけでなく、「こういう方針で考える」という指針を示す形が望ましいです。
  • ドキュメントとの整合性: プロジェクトの他のドキュメント(README、Wiki等)とプロジェクトルールの内容に矛盾がないよう注意しましょう。理想的には、プロジェクトルールがドキュメントの内容を補完し、より具体的な実装指針を提供する関係が望ましいです。
  • 新メンバーへの説明: プロジェクトルールの存在と目的を新メンバーに説明することも重要です。「AIに任せておけば大丈夫」ではなく、ルールの背景や意図を理解してもらうことで、より効果的な活用が期待できます。

これらのポイントを押さえつつ、プロジェクトの特性や開発チームの働き方に合わせてプロジェクトルールを活用することで、AIとの協働開発がよりスムーズになるでしょう。

参考文献

P-HunterP-Hunter

MCPサーバー (MCP Servers)

機能の概要

MCPサーバー(Model Control Protocol Server)は、CursorのAIエージェントに追加の能力を与えるための拡張機能です。標準のCursorは主にコードの読み書きやターミナルコマンドの実行といった基本機能を持っていますが、MCPサーバーを導入することで、AIエージェントに外部サービスとの連携特殊なツールの利用といった新たな能力を追加できます。例えば、Web検索、データベースクエリ、APIリクエスト、ファイル操作など、通常のAIモデルでは直接扱えない操作を可能にします。MCPサーバーはプラグインのような役割を果たし、Cursorの機能を拡張するための標準的な方法を提供します。

MCPサーバーは大きく分けて2種類あります:

  1. SSE(Server-Sent Events)タイプ: HTTPサーバーとして動作し、Cursorからのリクエストを受け付けるタイプ。常時起動しているWebサーバーとして実装されます。
  2. STDIO(Standard Input/Output)タイプ: Cursorから起動されるコマンドラインプログラムとして動作し、標準入出力を通じて通信するタイプ。必要なときだけ起動される形です。

どちらのタイプも、Cursorに「このMCPサーバーはこういう能力を持っています」と登録しておくことで、AIエージェントがそれを認識し、適切なタイミングで利用できるようになります。

仕組みと動作原理

MCPサーバーの基本的な仕組みは、ツール定義ツール実行の2段階で構成されています。

1. ツール定義とCursorへの登録

MCPサーバーは、自身が提供するツール(機能)のリストをCursorに伝えます。各ツールには名前、説明、必要なパラメータなどが定義されています。例えば「get_weather」というツールであれば、「場所」というパラメータが必要、といった情報です。Cursorはこれらの定義を読み込み、AIエージェントに「利用可能なツール」として認識させます。

登録方法は以下の2通りです:

  • SSEタイプ: Cursorの設定画面でMCPサーバーのURLを登録します(例: http://localhost:3000)。Cursorは起動時にこのURLに接続し、提供されるツール一覧を取得します。
  • STDIOタイプ: 同じくCursor設定画面でコマンドを登録します(例: python my_mcp_server.py)。Cursorは必要に応じてこのコマンドを実行し、標準入出力を通じてツール一覧を取得します。

2. ツール実行のフロー

AIエージェントがツールを使う必要があると判断した場合(例: ユーザーの質問に答えるためにWeb検索が必要と判断した場合)、以下のフローで処理が進みます:

  1. ツール選択: AIエージェントは利用可能なツールの中から、タスクに適したものを選びます。例えば「天気を知りたい」という質問には「get_weather」ツールを選択します。
  2. パラメータ設定: 選んだツールに必要なパラメータを設定します。例えば「get_weather」なら「場所=東京」といった具合です。
  3. ツール呼び出し: CursorはMCPサーバーに対してツール実行リクエストを送信します。SSEタイプならHTTPリクエスト、STDIOタイプなら標準入力を通じてJSONメッセージを送ります。
  4. ツール実行: MCPサーバー側でツールのロジックが実行されます。例えば天気APIにリクエストを送り、結果を取得するといった処理です。
  5. 結果の利用: ツールからの応答はエージェントAIに入力され、会話の続きのコンテキストとして扱われます。エージェントはその情報を踏まえてユーザーへの回答や次のアクション決定を行います。例えば「最新の依存ライブラリのバージョンを調べてアップデートして」と頼めば、AIがMCP経由でウェブ検索→結果取得し、その情報を見てpackage.jsonを書き換えるといった一連の流れが可能です。

以上がCursorとMCPサーバーの基本的な連携の流れです。

技術スタックや構造

MCPサーバー連携の技術スタックは、クライアント-サーバー型アーキテクチャで構成されています。Cursor(クライアント)は内部でMCPプロトコルに従ったメッセージングを行い、外部のMCPサーバーとやり取りします。サーバー側は軽量なHTTPサーバーやCLIプログラムとして実装され、JSONベースの規約でツール一覧や実行結果をやり取りします。SSE通信の場合、サーバーはHTTPエンドポイントで待ち受け、Cursorからのリクエストに対しイベントストリームで応答します。STDIOの場合はCursorが指定コマンドを子プロセスとして起動し、その標準入力・標準出力を通じて通信します。どちらの場合も、複雑なネットワーク設定は不要で比較的扱いやすい構造です。

MCPサーバー自体の構造は、「利用可能ツールの定義」と「各ツール実行時のハンドラ」を持つシンプルなものです。例えばMCP天気サーバーなら「get_current_weather」「get_forecast」などのツールを定義し、呼ばれた際に実際に天気APIにリクエストして結果を返す処理を書きます。これらはMCP SDKを使って実装できます。SDKはPython版やTypeScript版が提供されており、開発者は簡潔にツールを定義するだけで必要なプロトコル部分(メッセージフォーマットや並列処理等)はライブラリが肩代わりしてくれます。ツールから返す値はJSONシリアライズ可能なデータで表現し、それをCursor側が受け取って文字列に変換し、AIにフィードします。AIはその内容をシステムメッセージ経由で得ている形になります。

内部的な例を挙げると、CursorからMCPサーバーへの要求は「ツール名」と「引数」を含むJSONです。サーバー側はそれを受け取り、該当ツールの処理(例えばファイル検索ならディスクをスキャン)を実行し、結果データをJSONで返します。Cursorはそれを受け取ると、チャット上にはフォーマットされたテキストあるいは構造化データとして結果を表示し、同時にAIのコンテキストに組み込みます。MCPは汎用プロトコルなので、このやり取りはどんな種類のツールでも同じ枠組みで行えます。拡張性・柔軟性を重視した構造になっているため、新しい種類のツール(例: データベース問い合わせツールや、グラフ描画ツール等)も共通の仕組みで簡単に追加できます。

導入のメリット

MCPサーバーを導入すると、CursorのAIエージェントがより広範なタスクをこなせるようになります。主なメリットを挙げます:

  • ローカルリソースへのアクセス: デフォルトのAIはエディタ内のコードしか扱えませんが、MCPサーバーによりローカルPCのファイルシステムやデータベースにアクセス可能になります。例えばプロジェクトの他の資料やログファイルを読んで分析するといった高度な支援が可能です。
  • インターネットや外部APIとの連携: Web検索やAPI呼び出しを行うMCPサーバーを用意すれば、AIが最新情報を取り込んだり他サービスと連携したりできます。Cursor標準でもWeb検索ツールはありますが、MCPなら特定サービス専用の検索(例: 社内Wiki検索)等カスタムが可能です。
  • 社内ツールの統合: 独自のビルドシステムやタスクランナー、チケットシステムなど社内ツールとAIを繋げられます。専用MCPサーバーを実装しておけば、エージェントが「JIRAからチケット概要を取ってきて」→「対応コードを書く」なんてことも可能になるでしょう。既存の社内向けAPIを呼ぶだけの簡単なMCPサーバーでも、AIの支援範囲が格段に広がります。
  • LLMプロバイダの柔軟な切替: MCPは標準プロトコルなので、バックエンドAIを変えても同じMCPサーバーを利用できます。例えばClaudeベースからGPTベースに変えてもMCP部分のコードはそのままです。ツール側を一度作っておけばAIエンジンの差替に影響されないのもメリットです。
  • データのセキュリティ管理: LLM自体には直接触れさせたくないデータも、MCPサーバー経由なら制御しやすいです。例えば機密データベースにクエリするMCPサーバーを組み込み、AIからの質問に対して必要最低限の結果だけを渡す、といったフィルタリングができます。データは自社インフラ内のMCPサーバーで処理されるため、外部に生データを送らずに済みセキュアです。

総じて、MCPサーバーの導入はAIアシスタントの腕を増やすイメージです。標準のCursor AIが持っていない専門知識や操作能力を後付けできるため、開発支援AIを自分たちのプロジェクト・業務に最適化した強力なカスタムAIエージェントに仕立て上げることができます。

運用のポイント

MCPサーバーを実際に運用する上で留意すべきポイントをまとめます:

  • サーバープロセスの管理: STDIOタイプの場合、Cursorが必要に応じてプロセスを起動しますが、長時間動作するものは起動しっぱなしになる可能性があります。SSEタイプは常駐サービスとして自前で用意する必要があります。いずれにせよ、Cursor起動時にMCPサーバーが使える状態になっているよう、プロセス管理やサービス登録を考慮してください。
  • 環境変数や依存の設定: MCPサーバーが動作するには特定の環境変数や認証情報が必要なことがあります(APIキーなど)。その場合、wrapperスクリプトを用意して環境変数をセットしてからサーバー実行する方法が推奨されています。また依存ライブラリのインストール漏れがないようサーバー環境を整備しておきましょう。
  • プロジェクト固有の設定: Cursorはグローバル設定とは別に、プロジェクトごとに .cursor/mcp.jsonでMCPサーバー設定を上書きできます。例えばチームで共有するプロジェクトではリポジトリ内に.cursor/mcp.jsonを含め、必要なMCPサーバー定義(名前とコマンド/URL)を書いておけば、メンバー各自が追加設定する手間を省けます。プロジェクトをクローンしたらCursorでそのJSONを読んで自動登録される流れです。
  • セキュリティ: MCPサーバーは強力な操作ができる分、悪用リスクもあります。信頼できるサーバー(自分で実装・監査したもの)以外はむやみに追加しない方が安全です。また、サーバー実装時にも入力検証をしっかり行い、AI側から不正なコマンドを渡されても暴走しないようにする必要があります。例えばファイル操作サーバーなら、親ディレクトリに遡れないようにするとか、削除系操作に二重確認を入れる等の対策が考えられます。
  • パフォーマンス: ツール実行はネットワーク通信やプロセス起動を伴うため、頻繁に呼ばれるとCursor全体の応答が遅くなる場合があります。必要のないサーバーは有効化しない、重い処理はサーバー側でキャッシュする、といった工夫でパフォーマンスを維持しましょう。Cursor側でも一度取得したツール結果を会話コンテキストに載せた後は、重ねて同じツールを呼ばないようAIが判断するケースもありますが、万能ではありません。
  • デバッグ: MCP通信で問題が起きたときは、Cursorの開発者ツールコンソールやサーバー側のログを確認します。CursorにはMCP呼び出し時のリクエストIDやエラー内容が表示されることがありますので、それを手掛かりにします。必要に応じてサーバーを単体で動かし、想定通りのJSONのやり取りができているかテストすることも大事です。

以上の点に気を付ければ、MCPサーバーは比較的安定して運用できます。適切なメンテナンスの下で、開発プロセスに役立つ様々なツールをAIに持たせることができるでしょう。

P-HunterP-Hunter

Web検索ツール (Web Search Tool)

Web検索ツールの概要

CursorのWeb検索ツールは、AIがインターネット上から最新の情報を収集するための組み込み機能です。チャットやComposer上で@Webという特殊コマンドを使うことで起動できます。@Web <検索クエリ>と入力すると、Cursorはそのクエリ(および現在の会話文脈)をもとにウェブ検索を行い、関連する情報を取得してAIのコンテキストに加えます。この機能を使うと、ユーザーが別途ブラウザで検索結果を調べて貼り付ける手間を省き、AI自らがインターネットを参照して回答精度を高めることが可能です。特に、ローカルのコードベースだけでは答えられない最新のドキュメントや一般知識が必要な質問に有効で、「今この瞬間のウェブ上の知見」をAIに持たせることができます。CursorのAgentモードでは、この@Web検索をAIが自動的に発動する場合もあります。例えばユーザーの質問が自分の訓練データ以降の新しい技術に関するものであったり、コード中に出てこないAPIの使い方だったりすると、エージェントが自律的にウェブ検索ツールを呼び出し補足情報を取得するのです。これにより、Cursorはインターネットに常につながった開発アシスタントとして振る舞えます。

どの検索エンジンと連携しているか

Web検索ツールが内部で使用している検索エンジンは公式には明言されていません。しかし、推測やコミュニティの情報によればGoogleのカスタム検索APIBrave Search APIなどが利用されている可能性があります。Cursorは検索クエリを受け取ると自前でHTTPリクエストを発行し検索結果を得ていますが、その際に無料で使える検索サービス(例えばDuckDuckGoの検索API)や独自に構築した検索サーバーを経由している可能性も考えられます。あるフォーラムでの推測では、CursorはaxiosやfetchのようなHTTPクライアントで検索エンジンに問い合わせ、cheerioのようなHTMLパーサで結果ページをスクレイピングしているのではないかとも言われています。また、場合によってはPuppeteerやSeleniumといったヘッドレスブラウザ技術を用いてJavaScriptで生成されるページの情報も取得している可能性があります。いずれにせよ、ユーザー視点ではどの検索エンジンであれ結果の要点がAIに渡されることが重要で、実際Cursorは最終的に得られたコンテンツのテキストをAIに供給しています。

Cursorの公式ドキュメントからは「検索エンジンのAPIや独自バックエンドサービスを使って情報収集を行っている」との示唆があります。そのため、内部ではGoogleやBingのAPIキーを用意し、結果を一定のフォーマットで取得しているのかもしれません。例えばGoogle Custom Search APIを使えばWeb全体から指定キーワードの検索結果(上位数件)をJSONで得られます。Brave SearchやDuckDuckGoのAPIも類似の機能を提供しています。実際、コミュニティによるMCP拡張ではBrave Searchを使ってウェブ検索するサーバーが作られている事例があり、Cursor標準機能もそれに近いことをしている可能性があります。以上をまとめると、「CursorのWeb検索ツールは特定の検索エンジンに強く依存しない設計で、必要に応じて外部の検索サービスを利用している」と言えます。裏側の実装詳細はブラックボックスですが、ユーザーから見れば主要な検索エンジンでヒットする内容は一通り拾ってきてくれる印象です。

技術的な仕組み

Web検索ツールの技術的仕組みは、以下のステップで構成されると考えられます:

  1. 検索クエリの生成: ユーザーが明示的に@Webコマンドを使った場合はそのクエリを利用し、エージェントが自動でウェブ検索をする場合は、まず現在のユーザー質問からキーワードを抽出してクエリを組み立てます。エンティティ認識(NER)などNLP技術を使って重要語句を選ぶことも考えられます。例えば「最新のReactのContext APIの使い方を教えて」という質問なら、「最新 React Context API 使い方」というクエリに変換されるでしょう。
  2. 外部検索サービスへのリクエスト: CursorはバックエンドでHTTPリクエストを発行し、検索エンジンに問い合わせます。この際、REST API経由でJSON結果をもらう方法や、HTMLページを直接取得する方法があります。前者ならGoogle/Bing APIを使い、後者ならDuckDuckGoの検索結果HTMLを取得するなどが考えられます。HTMLを取得する場合はクライアント側でパースする必要がありますが、Node.js環境で動作しているCursorならcheerioといったHTMLパーサでDOM解析が可能です。
  3. 検索結果の処理: 得られた検索結果から有用な情報を抜き出します。もしJSONで複数の結果リンクが得られた場合、Cursorは上位いくつかのページに順次アクセスして内容を取得するかもしれません。あるいは検索エンジン側でスニペット(ページの要約)が提供されればそれを使うでしょう。HTMLを解析する場合、記事本文やコードブロックのみを抜粋するなどの工夫が必要です。ここでNLPによる要約やキーフレーズ抽出を行い、ノイズを減らすことも考えられます。例えば「Stack Overflowの回答部分だけ抜く」「ブログ記事の冒頭数段落だけ抜粋する」といった処理です。
  4. AIへのコンテキスト提供: 最終的に抽出・要約されたテキスト情報を、AIへのプロンプトに追加します。Cursorでは【番号†Lxx-Lyy】のような形式でソースを示しつつ内容をコンテキストに載せる仕組みがあります(回答に引用付きで示されるのはそのためです)。AIはその追加情報を参照し、ユーザーへの答えを生成します。例えば「こちらの資料によれば…」と出力に反映されることもあります。
  5. ユーザーへの提示: CursorはAIの回答を表示する際、参照したウェブ情報の出典を番号付きで示します。これによりユーザーはAIの答えの裏付けを確認できます。実際Cursorの回答UIでは、参考にしたWebページのタイトルがリンクとして表示されるため、ユーザーはクリックして詳細を閲覧可能です。

この一連の流れはわずか数秒〜十数秒程度で行われ、ユーザーからは単に「AIが詳しい答えをした」と見えるだけですが、その背後では上記のような検索→解析→要約→回答生成のパイプラインが動いています。技術的に特筆すべきは、このフローがすべてIDE内部で自動化されている点です。従来、開発者がドキュメントを調べる際は手動でブラウザを開いて検索していましたが、CursorではAIがその代行をしてくれるわけです。

ユースケースと活用事例

Web検索ツールが威力を発揮するのは、ローカル環境だけでは得られない知識が必要なケースです。いくつか具体例を挙げます:

  • 最新技術やライブラリの情報収集: 「来月リリースの新バージョンで非推奨になった関数は何か?」といった質問でも、AIがウェブから最新情報を取ってきて回答できます。自分で検索して調べる手間が省け、IDE内で疑問が解決します。
  • エラーメッセージの解決: 出力されたエラーログや例外メッセージをそのまま@Webに投げると、Stack OverflowやGitHub Issuesなどの情報源をAIが見つけてきてくれます。AIは複数の検索結果を横断的に読み取って要点をまとめるため、エラー解決策を短時間で整理してくれるでしょう。
  • 実装例の検索: たとえば「JavaでOAuth認証するコードを書いて」とお願いした場合、AIが自信がなければ自動で@Web検索し、ブログや公式ドキュメントからコードスニペットを取得して参考にします。これにより、AIの生成するコードがより実践的なものになります。
  • ドキュメントの引用: ライブラリの使い方説明などで、公式ドキュメントの一節をAIが引用して教えてくれる場合があります。ユーザーは引用元も確認できるので信頼性の高い情報を得られます。
  • 競合する情報の統合: AIは検索で複数のページを参照し、その内容を融合して回答します。例えば「XフレームワークとYフレームワークの違い」を尋ねれば、各公式サイトや比較記事をAIが読み合わせ、ポイントを箇条書きで整理してくれるかもしれません。人間がマニュアルでまとめるより速く、かつ引用付きなので後で詳細を掘り下げることもできます。

このように、Web検索ツールの活用によりIDEから離れることなく調査・学習・問題解決が完結します。特にCursorのAgentは自律的に検索してくれるので、ユーザーが気づいていない関連情報まで拾って提案してくれる点が強力です。「ドキュメント駆動開発をAIが代行する」とも言えるでしょう。

拡張機能やカスタマイズの可能性

現状、Cursorに標準搭載されているWeb検索ツールは内部実装が固定であり、ユーザーが直接どの検索エンジンを使うか設定で変更することはできません。しかし拡張の余地は多分にあります。CursorはMCPサーバー機能を通じて、独自のWeb検索ロジックを追加することも可能です。実際、コミュニティではBrave検索APIを使ったウェブ検索MCPサーバーや、Stack Overflow専用検索サーバーなどが試作されています。これらを導入すれば、標準の@Webとは別に「@Brave」や「@StackOverflow」のようなカスタムコマンドを実現でき、より特化した情報源から回答を得ることができます。

また、Cursorの設定でカスタムAPIキーを登録する項目があることから、将来的にユーザー自身の検索APIキー(GoogleやBingなど)を使って結果精度を上げたり制限緩和したりするオプションも考えられます。現在でも、環境変数や設定ファイルをいじればCursorの検索要求先を変更できる裏技があるかもしれませんが、非公開ですので公式対応を待つのが安全でしょう。

他の類似ツールとの比較では、OpenAIのChatGPTプラグインに「ブラウザ」プラグインがあったり、Bing ChatやPhindといったLLMがウェブ検索を組み合わせたサービスがあります。CursorのWeb検索ツールはそれらと同様の発想ですが、開発者向けに特化している点で差別化されています。例えばコード例を優先して持ってくる、公式ドキュメントを重視する、といったチューニングがなされている可能性があります。そのカスタマイズはブラックボックスですが、ユーザーから見て期待通りの情報が来やすいならば有用です。

もしより高度なカスタマイズをしたければ、前述のMCP自作以外に、AIに対する指示として検索行動を制御することも一案です。例えば「@Webで公式ドキュメントのみ検索して」とユーザーが言えば、エージェントはクエリに「公式サイト」を含めるかもしれません。このようにプロンプト次第で検索対象の絞り込みも一応可能です。

総じて、CursorのWeb検索ツールはデフォルトでも強力ですが、更なる拡張性も備えています。将来的にはGUI上で「使用する検索エンジンの選択」や「社内ナレッジベースとの連携」等が実装される可能性もあります。現時点でも工夫すれば自分好みの情報収集エージェントに仕立てることができ、まさに開発者のための万能サーチ助手として機能します。

参考文献

作成者以外のコメントは許可されていません