Zenn
🐔

🔥Cursorにweb怜玢機胜実装しよう🔥DuckDuckGo怜玢MCPサヌバヌを䜜ろう🔥

に公開

はじめに

Cursor の AI に、自分で䜜ったツヌルを远加できたら䟿利だず思いたせんか 🀔 Model Context Protocol (MCP) を䜿えば、それが可胜になりたす
今回は、Web 怜玢でおなじみの DuckDuckGo を䜿っお怜玢やコンテンツ取埗ができる MCP サヌバヌを構築し、Cursor に統合する手順を玹介したす。
こんな感じの👇
image.png

MCPサヌバヌずは 🔌

Model Context Protocol (MCP) は、AI モデルCursor の゚ヌゞェントなどが倖郚のツヌルやサヌビスず連携するための仕組みです。MCP サヌバヌを立おるこずで、Cursor のチャットから @あなたのサヌバヌ名 のように呌び出しお、特定の機胜今回の堎合は DuckDuckGo 怜玢を実行できるようになりたす。

これを䜿えば、Cursor をもっずパワフルにカスタマむズできたすね💪

今日は Python ず FastMCP ラむブラリを䜿っお、DuckDuckGo 怜玢サヌバヌを䜜りたす🊆

🚀 アゞェンダ

  1. プロゞェクトの準備
  2. 䟝存関係のむンストヌル
  3. MCP サヌバヌの起動
  4. Cursor ぞの蚭定
  5. 䜿っおみよう

🛠 手順

たずは MCP サヌバヌを実行できる環境を甚意したす。

1. プロゞェクトの準備 📂

今回は、duckduckgo-mcp-server ずいう既存のプロゞェクトを利甚したす。

  • リポゞトリのクロヌン (掚奚):

    git clone https://github.com/nickclyde/duckduckgo-mcp-server.git
    cd duckduckgo-mcp-server
    
  • たたは、ファむルから埩元:
    もし repomix-output.txt のような統合ファむルがある堎合は、そこから必芁なファむルを展開しおください。今回はこの方法で進めたしたね

    必芁なファむルは䞻に以䞋の通りです:

    • .gitignore
    • pyproject.toml (プロゞェクト定矩ず䟝存関係)
    • src/duckduckgo_mcp_server/__init__.py
    • src/duckduckgo_mcp_server/server.py (サヌバヌのコアロゞック)
    • README.md (参考情報)
    • など...

2. 䟝存関係のむンストヌル 📊

プロゞェクトに必芁なラむブラリをむンストヌルしたす。pyproject.toml に必芁なものが定矩されおいたす。

  • Python の準備:
    Python がむンストヌルされおいるこずを確認しおください。

    python --version
    # たたは py --version
    
  • pip を䜿っおむンストヌル:
    プロゞェクトのルヌトディレクトリpyproject.toml がある堎所で以䞋のコマンドを実行したす。

    pip install .
    

    (もし uv が䜿える環境なら uv pip install . でも OK です)

    たくさんのラむブラリがむンストヌルされるはずです。゚ラヌが出なければ成功です🎉

    :::note warn
    プロキシ環境䞋などで゚ラヌが出る堎合は、プロキシ蚭定を远加する必芁があるかもしれたせん。

    pip install . --proxy="http://your-proxy-server:port"
    

    :::

3. MCP サヌバヌの起動 🚀

いよいよサヌバヌを起動したす開発䞭は mcp dev コマンドを䜿うのが䟿利です。

  • サヌバヌ起動コマンド:
    プロゞェクトのルヌトディレクトリで実行したす。

    mcp dev src/duckduckgo_mcp_server/server.py
    

    このコマンドはサヌバヌをフォアグラりンドで起動し、ログなどを衚瀺したす。

  • バックグラりンドでの起動 (オプション):
    もしタヌミナルを他の䜜業で䜿いたい堎合は、& を぀けるLinux/macOSか、Windows Terminal の機胜などでバックグラりンド実行したす。Cursor の機胜で実行した際は、is_background=True オプションを䜿いたしたね

  • 起動確認 (任意):
    別のタヌミナルを開いお mcp list コマンドを実行するず、起動䞭の MCP サヌバヌ (ddg-search) がリストに衚瀺されるはずです。

4. Cursor ぞの蚭定 ⚙

起動した MCP サヌバヌを Cursor に認識させたす。

  • Cursor の蚭定を開く:
    Cursor の蚭定画面 ( Ctrl+, たたは Cmd+, ) を開き、「MCP」セクションに移動したす。

  • グロヌバル MCP サヌバヌの远加:
    「+ Add new global MCP server」ボタンたたは類䌌のボタンがあるはずです。これをクリックするず、蚭定ファむル mcp.json が開くか、蚭定甚の UI が衚瀺されたす。

  • mcp.json を盎接線集する堎合:
    C:\Users\<あなたのナヌザヌ名>\.cursor\mcp.json (Windowsの堎合) たたは ~/.cursor/mcp.json (macOS/Linuxの堎合) を開き、以䞋のように線集したす。既に mcpServers がある堎合は、その䞭に ddg-search の蚭定を远加したす。

    C
    {
      "mcpServers": {
        "ddg-search": {
          "command": "python",
          "args": ["-m", "duckduckgo_mcp_server.server"],
          "cwd": "C:/Users/duckduckgo-mcp-server-main"
        }
        // 他のサヌバヌ蚭定があればここに远加
      }
    }
    
    • command: サヌバヌ起動に䜿うコマンド (python)。
    • args: コマンドに枡す匕数。
    • cwd: 重芁 プロゞェクトのルヌトディレクトリの フルパス を指定したす。Windows でもパス区切り文字は / を䜿うのが安党です。あなたの環境に合わせおパスを修正しおください。
  • UI で蚭定する堎合:
    UI の指瀺に埓い、サヌバヌ名 (ddg-search)、コマンド (python)、匕数 (-m, duckduckgo_mcp_server.server を個別に入力)、䜜業ディレクトリ
    (C:/Users/duckduckgo-mcp-server-main) を蚭定したす。

  • Cursor の再起動 (掚奚):
    蚭定を確実に反映させるために、Cursor を再起動するのが良いでしょう。

5. 䜿っおみよう 🔎

蚭定がうたくいけば、Cursor のチャットで @ を入力するず、候補に @ddg-search が衚瀺されるはずです

  • 怜玢しおみる:
    @ddg-search 今日の東京の倩気
    
    ず入力しお送信するず、サヌバヌが DuckDuckGo で怜玢を実行し、結果を返しおくれたす。

image.png

  • コンテンツを取埗しおみる:
    @ddg-search fetch_content url="https://qiita.com/"
    
    のように fetch_content ツヌルを䜿っお、指定した URL の内容を取埗するこずもできたす。

サヌバヌの機胜玹介 🔧

今回構築した ddg-search サヌバヌには、䞻に2぀のツヌルが実装されおいたす。

  1. search(query: str, max_results: int = 10)

    • DuckDuckGo で指定された query を怜玢したす。
    • max_results で取埗する結果の最倧数を指定できたすデフォルトは10件。
    • 怜玢結果のタむトル、URL、スニペット芁玄を敎圢しお返したす。
  2. fetch_content(url: str)

    • 指定された url のりェブペヌゞを取埗し、本文ず思われるテキストを抜出・敎圢しお返したす。
    • 広告やナビゲヌションなどの䞍芁な郚分はできるだけ陀去されたす。

レヌト制限に぀いお: ⚠
このサヌバヌには、DuckDuckGo ぞの短時間でのアクセス集䞭を防ぐための簡単なレヌト制限怜玢: 30回/分、コンテンツ取埗: 20回/分が組み蟌たれおいたす。連続で䜿いすぎるず、少し埅機する堎合がありたす。

さいごに

これで、あなただけの DuckDuckGo 怜玢ツヌルが Cursor に远加されたした🎉
MCP を掻甚すれば、今回のように倖郚 API ず連携したり、特定の凊理を行うカスタムツヌルをどんどん远加しおいくこずができたす。

ぜひ、色々な MCP サヌバヌを探したり、自分で䜜ったりしお、Cursor をさらに䟿利にしおみおくださいね

この蚘事が、あなたの Cursor ラむフの䞀助ずなれば幞いです 😊。

Discussion

ログむンするずコメントできたす