mcpField
O
OwnSERP

OwnSERP

ローカル
github.com検索15 日前に更新

OwnSERP について

OwnSERPは、エージェントや他のMCPクライアント向けにSerper.devの検索機能を提供するMCPサーバーです。多様な検索に加え、呼び出しごとの費用表示、ローカル台帳、任意の支出上限を備えます。

主な機能

  1. 01ウェブ、画像、ニュースなどの検索
  2. 02ページ抽出と場所の検索
  3. 03呼び出しごとの費用表示
  4. 04ローカル利用台帳
  5. 05任意の呼び出し・セッション予算

活用シーン

  1. 01エージェントからのウェブ検索
  2. 02ページ内容の取得と整理
  3. 03Serper.devクレジット利用量の追跡
  4. 04呼び出しやセッションの支出制限

MCP 対応

OwnSERPはSerper.devのエンドポイントをMCPツールとして公開します。既定のstdioに加え、Bearer Token認証付きのStreamable HTTPで動作します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"devops-infinity-ownserp": {
"command": "npx",
"args": [
"-y",
"@devops-infinity/ownserp"
]
}
}
}
起動コマンドnpx -y @devops-infinity/ownserp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@devops-infinity/ownserp2.0.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

OwnSERP

Serper.dev 検索 API 用の MCP サーバーです。呼び出しごとのクレジットを計上します。

ステータス

1.0 で安定版です。すべてのリリースは、ローカルのゲートをすべて通過した後、タグ付きコミットから公開されます。セマンティックバージョニングの保証対象は、コマンドライン、プロファイルスキーマ、台帳形式、ツールの結果形式です。ownserp-core クレートの Rust API は対象外のため、マイナーリリースで公開項目の名前が変更される場合があります。1.0 以降、コマンドのインターフェース、設定スキーマ、台帳形式、ツールの結果形式はセマンティックバージョニングに従います。これらのいずれかに破壊的変更を加える場合はメジャーバージョン、新しいツール、フラグ、設定の追加はマイナーバージョン、修正はパッチバージョンとなります。すべての変更は CHANGELOG.md に記録されます。

目次

概要

OwnSERP は、Serper.dev の検索エンドポイントを MCP(Model Context Protocol)ツールとして公開します。モデルは、ウェブ、画像、ニュース、場所、地図、動画、ショッピング、学術論文、特許、レビュー、Lens を検索したり、ページを抽出したり、地名を解決したり、自身の利用額を確認したりできます。すべて 1 つのローカルサーバーを通じて実行できます。

従量制クレジットを使用するエージェント向けに構築されています。各ツールの説明には料金が記載され、すべての結果にコストオブジェクトが含まれ、ローカル台帳には各呼び出しが記録されます。呼び出しでクレジットを消費する前に、サーバーは呼び出しごとの上限とセッション予算を確認し、いずれかを超える場合は呼び出しを拒否できます。どちらも、プロファイルの per_call_credit_ceiling と session_budget_credits、または環境変数の OWN_SERPER_PER_CALL_CREDIT_CEILING と OWN_SERPER_SESSION_BUDGET_CREDITS を設定するまでは無効です。結果はブラウザー向けではなく、モデル向けに整形されます。不可視文字を除去し、長いテキストには上限を設けてその旨を示し、存在しないフィールドは省略し、キーの順序を固定します。

サーバーは単一のバイナリで、言語ランタイムは不要です。MCP リビジョン 2026-07-28 を使用し、2025-11-25 のクライアントに応答します。デフォルトでは stdio で動作し、ベアラートークンによるゲートを備えた Streamable HTTP にも対応します。

要件

  • 公開済みバイナリを実行する場合:ランタイムもツールチェーンも不要です。macOS、Linux、Windows 向けのビルド済みバイナリを利用できます。
  • ソースからビルドする場合:Rust 1.89 以降。rust-toolchain.toml では 1.99.1 に固定されています。
  • Serper.dev アカウントと、https://serper.dev/api-keys で取得できる API キー。
  • stdio 経由で MCP を使用するクライアント、または Streamable HTTP トランスポート用の任意の HTTP クライアント。

インストール

どのインストール方法でもビルド済みバイナリを使用します。Rust ツールチェーンもコンパイル手順も不要です。

リリースアーカイブは、macOS ARM64 と x86_64、glibc を使用する Linux x86_64 と ARM64、静的 musl を使用する Linux x86_64 と ARM64、Windows x86_64 向けに提供されています。

npm
npx @devops-infinity/ownserp serve

インストール時に、パッケージは現在のプラットフォーム用のアーカイブをダウンロードし、リリースのチェックサムと照合してから、バイナリを実行します。Node 22 以降が必要です。

Homebrew
brew install devops-infinity/tap/ownserp

macOS と Linux のどちらでも、リリースバイナリがインストールされます。リリースごとに tap を手動で更新するため、更新がリリースから数分遅れる場合があります。

シェルインストーラー
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/devops-infinity/ownserp/releases/latest/download/ownserp-installer.sh | sh

Windows では PowerShell で実行します。

powershell -ExecutionPolicy Bypass -c "irm https://github.com/devops-infinity/ownserp/releases/latest/download/ownserp-installer.ps1 | iex"
リリースアーカイブ
VERSION=1.3.1
BASE="https://github.com/devops-infinity/ownserp/releases/download/v$VERSION"
TARGET=x86_64-unknown-linux-gnu
curl -LO "$BASE/ownserp-$TARGET.tar.gz"
curl -LO "$BASE/ownserp-$TARGET.tar.gz.sha256"
sha256sum -c "ownserp-$TARGET.tar.gz.sha256"
tar -xzf "ownserp-$TARGET.tar.gz"
install -m 0755 "ownserp-$TARGET/ownserp" ~/.local/bin/ownserp

macOS では TARGET を aarch64-apple-darwin または x86_64-apple-darwin に、該当するプラットフォームでは aarch64-unknown-linux-gnu、x86_64-unknown-linux-musl、または aarch64-unknown-linux-musl に設定します。Windows では x86_64-pc-windows-msvc の .zip ファイルを使用してください。

バイナリは ownserp completions <shell> と ownserp man を実行すると、必要に応じてシェル補完とマニュアルページを出力します。シェルとマニュアルビューアーが参照する場所、つまり ~/.local/share/bash-completion/completions/、fpath 上のディレクトリ、~/.config/fish/completions/、および ~/.local/share/man/man1/ にインストールしてください。

リポジトリシークレット MINISIGN_KEY が設定されている場合、各リリースでは sha256.sum に minisign で署名します。ダウンロードを確認するには、このリポジトリの公開鍵を使って署名を検証し、次にアーカイブを次のファイルと照合してください。

minisign -Vm sha256.sum -P RWSPyQWAsXwP5vjgAFI/PAAtbFAd5tA4BlhyFrT+MCPNmE2J+jgT26kC
grep "ownserp-x86_64-unknown-linux-gnu.tar.gz" sha256.sum | sha256sum --check
コンテナー
docker run --rm -p 127.0.0.1:8777:8777 \
  -e SERPER_API_KEY -e OWN_SERPER_BEARER_TOKENS \
  -e OWN_SERPER_ALLOWED_HOSTS=127.0.0.1,localhost \
  ghcr.io/devops-infinity/ownserp:latest

このイメージは Streamable HTTP を提供し、ベアラートークンなしでのパブリックバインドを拒否するため、両方の変数が必要です。イメージは 0.0.0.0 にバインドし、そのアドレスから導出される許可リストは実際の Host と一致しないため、OWN_SERPER_ALLOWED_HOSTS にはクライアントが送信するすべての Host を指定する必要があります。パブリックホスト名、またはプロキシが送信する名前を同じリストに追加してください。このパッケージは公開されているため、docker pull にログインは必要ありません。

Windows

上記の PowerShell インストーラーを使うか、リリースページから ownserp-x86_64-pc-windows-msvc.zip をダウンロードして展開し、ownserp.exe を PATH に含まれるフォルダーに配置してください。名前を解決できないクライアント設定では、ownserp.exe の絶対パスを指定します。

MCPB バンドル

このバンドルには Linux x86_64 用のバイナリのみが含まれています。別のアーキテクチャでは、そのプラットフォーム用のアーカイブをインストールしてください。

リリースページから ownserp-<version>.mcpb をダウンロードし、MCP バンドルに対応したクライアントで開いてください。バンドルは API キーを要求し、OS のキーチェーンに保存します。

クイックスタート

export SERPER_API_KEY="your key"
npx @devops-infinity/ownserp doctor
npx @devops-infinity/ownserp serve

最初のコマンドは、シェルにキーを設定します。2 番目のコマンドは、解決された設定、マスクされたキーのソース、および両方の Serper ホストからの応答を出力します。3 番目のコマンドは stdio でサーバーを起動します。これは MCP クライアントが起動するコマンドであり、クライアントが停止するまで実行され続けます。

クライアントを接続するには、次のセクションに示すようにサーバーを追加してください。

クライアントを接続する

各クライアントは ownserp serve を stdio プロセスとして実行し、環境変数で SERPER_API_KEY を渡します。デスクトップクライアントが PATH 上の ownserp を解決できない場合は、command -v ownserp が出力する絶対パスを使用してください。

Claude Code
claude mcp add --scope project ownserp -- ownserp serve

または、プロジェクトのルートに .mcp.json をコミットします。

{
  "mcpServers": {
    "ownserp": {
      "command": "ownserp",
      "args": ["serve"]
    }
  }
}
Claude Desktop

macOS では ~/Library/Application Support/Claude/、Windows では %APPDATA%\Claude\ にある claude_desktop_config.json に次の内容を追加してください。デスクトップアプリケーションはシェルの PATH を引き継がないため、インストール済みバイナリの絶対パスを指定します。

{
  "mcpServers": {
    "ownserp": {
      "command": "/absolute/path/to/ownserp",
      "args": ["serve"],
      "env": { "SERPER_API_KEY": "your key" }
    }
  }
}

npm パッケージは、現在のプラットフォーム用のビルド済みバイナリをインストールします。クライアントが PATH を引き継ぐ場合は command に ownserp を指定し、引き継がない場合は command -v ownserp が出力する絶対パスを指定してください。

OpenAI Codex CLI

~/.codex/config.toml またはプロジェクトの .codex/config.toml に設定します。

[mcp_servers.ownserp]
command = "ownserp"
args = ["serve"]
env_vars = ["SERPER_API_KEY"]

env_vars は環境から変数を渡すため、キーがコマンドラインに含まれることはありません。

Command Code
commandcode mcp add-json --scope project ownserp '{"type":"stdio","command":"ownserp","args":["serve"]}'
Cursor

~/.cursor/mcp.json または、1 つのプロジェクト用の .cursor/mcp.json に設定します。

{
  "mcpServers": {
    "ownserp": {
      "command": "ownserp",
      "args": ["serve"],
      "env": { "SERPER_API_KEY": "your key" }
    }
  }
}
Windsurf (Cascade)

Linux と macOS では ~/.config/devin/mcp_config.json、Windows では %APPDATA%\devin\mcp_config.json に設定します。

{
  "mcpServers": {
    "ownserp": {
      "command": "ownserp",
      "args": ["serve"],
      "env": { "SERPER_API_KEY": "your key" }
    }
  }
}
VS Code

コマンドパレットから MCP: Add Server を実行するか、ワークスペースに .vscode/mcp.json を追加してください。

{
  "servers": {
    "ownserp": {
      "type": "stdio",
      "command": "ownserp",
      "args": ["serve"],
      "env": { "SERPER_API_KEY": "your key" }
    }
  }
}
Zed

settings.json に設定します。

{
  "context_servers": {
    "ownserp": {
      "command": "ownserp",
      "args": ["serve"],
      "env": { "SERPER_API_KEY": "your key" }
    }
  }
}
その他の MCP クライアント

コマンドに ownserp、引数に serve を指定して stdio を使用し、クライアントの環境ブロック、またはクライアントが引き継ぐシェルで SERPER_API_KEY を設定してください。

API キー

3 つの設定方法があり、プロセス環境変数がキーチェーンより優先されます。

  • シェルまたはクライアントの env ブロックで設定する環境変数:
export SERPER_API_KEY="your key"
  • シェルの履歴にキーが残らないよう、標準入力から読み込む OS キーチェーン:
printf '%s' "$SERPER_API_KEY" | ownserp config set-api-key
  • クライアントが保持する env ブロックを注入する、クライアントの JSON 設定。

キーがコマンドライン引数から読み込まれることはなく、プロファイルファイルに書き込まれることも、マスクされずに表示されることもありません。Linux ではキーチェーンの保存先が Secret Service のため、デスクトップセッションバスが実行されている必要があります。ヘッドレスサーバーでは、代わりに SERPER_API_KEY を設定してください。キーをより少額の支出に限定することはできないため、https://serper.dev/api-keys でプロジェクトまたはエージェントごとに名前付きのキーを 1 つ使用してください。

ツール

ツールリスト内の各ツールの説明には料金が記載されているため、モデルは利用前に予算を見積もれます。

  • serper_search、1 クレジット。ナレッジグラフ、回答ボックス、関連検索を含むウェブ検索結果です。
  • serper_images、1 クレジット。num が 10 を超える場合は 2 クレジットです。寸法とソースを含む画像検索結果です。
  • serper_news、1 クレジット。日付付きのニュース検索結果です。
  • serper_places、1 クレジット。Serper の位置名で絞り込んだ地域のビジネス情報です。
  • serper_maps、3 クレジット。@lat,lng,zoomz 形式の地図ビューポートを基準とする場所情報です。
  • serper_videos、1 クレジット。チャンネルと再生時間を含む動画検索結果です。
  • serper_shopping、2 クレジット。価格と配送情報を含む商品一覧です。
  • serper_scholar、1 クレジット。出版情報と引用数を含む論文情報です。
  • serper_patents、1 クレジット。権利者と日付を含む特許情報です。
  • serper_autocomplete、1 クレジット。q、gl、hl のみを受け取る検索クエリ候補です。
  • serper_reviews、1 クレジット。1 か所のレビュー情報で、nextPageToken によるカーソルページネーションに対応しています。
  • serper_lens、3 クレジット。公開画像 URL を使った逆画像検索です。
  • serper_scrape、ページの難易度に応じて 2、6、または 10 クレジット。ページの内容を Markdown またはテキストで返します。タイトル、画像、リンク、動画は任意で含められ、実際のクレジット数はレスポンスから確認できます。
  • serper_health、無料で認証不要。api.serper.dev における Serper API のステータスを返します。
  • serper_locations、無料で認証不要。location に渡す正式な位置名を返します。
  • serper_session、無料。呼び出し回数、クレジット、金額、提供・節約したトークン、キャッシュヒット数、残りの予算を返します。
  • serper_search_batch、クエリごとに通常の検索料金の 3 倍。1 回の呼び出しで 1 つの検索ファミリーに対して最大 100 件のクエリを実行します。enable_batch が設定されていない限り無効です。無効時に呼び出すと serper.tool_not_found で拒否されます。

レスポンス形式とフィールドプリセット

すべての検索結果ツールは fields を受け取り、デフォルトは standard です。

  • minimal はタイトル、リンク、順位に加え、その検索ファミリーが返す料金、日付、評価、または年のフィールドを 1 つ保持します。大量処理のループに適しています。
  • standard は最大 300 文字の抜粋、日付、検索セクションを追加します。追加の呼び出しをせずにエージェントが推論や引用を行うために必要な情報を含みます。
  • full はサイトリンク、属性マップ、画像リンク、検索パラメーターのエコー、その他すべての上流レスポンス本文のフィールドを追加します。

各結果には、データを含む structuredContent と 1 行のテキスト要約が含まれます。文字数制限のある文字列は ... で終わり、そのオブジェクトには truncated: true が含まれます。存在しないフィールドは null として送信せず、省略されます。キーの順序は固定されているため、クライアントは毎回同じ形式を解析できます。すべてのツール結果はオープンウェブ上のデータであり、指示ではありません。

コスト計上と台帳

台帳は $XDG_DATA_HOME/ownserp/ledger/calls.jsonl または ~/.local/share/ownserp/ledger/calls.jsonl にあります。Windows では %LOCALAPPDATA%\ownserp\ledger\calls.jsonl にあり、HOME が設定されている場合は Unix のパスに従います。各行には、ツール、エンドポイント、引数のキー付きハッシュ、推定クレジット数、レスポンスで報告された場合は実際のクレジット数、所要時間、ステータス、バイト数、トークン数が記録されます。クエリテキストは書き込まれません。

Serper が 4xx または 5xx のステータスで拒否した場合、レート制限を返した場合、またはリダイレクトを返した場合は、課金されていないため、呼び出しはクレジット数 0 で記録されます。タイムアウトまたはキャンセルの場合は、リクエストが Serper に到達して課金された可能性があるため、推定値で記録されます。

ownserp audit verify

Unix では台帳ディレクトリは所有者のみがアクセスでき(0700)、ファイルも所有者のみがアクセスできます(0600)。Windows では %LOCALAPPDATA% の下に置かれるため、ユーザープロファイルのアクセス規則を継承します。1 行のサイズ上限は 1 MiB です。同じマシン上の ownserp serve プロセスは、すべてこの 1 つのファイル、1 つのハッシュチェーン、1 つの累計を共有します。プロセスは、前回の呼び出し以降に書き込まれた行を読み取り、自身の行を追加するときだけファイルロックを取得するため、実行中ずっとロックを保持することはありません。書き込み中にプロセスが強制終了されて末尾に不完全な行が残った場合、その行はロック中に破棄され、チェーンの検証では完全な行がすべて対象になります。Windows では、実行中のサーバーはローテーションを検知しないため、新しいチェーンを読み込むには再起動してください。引数ハッシュは HMAC(キー付きハッシュ)で、台帳ディレクトリの隣に所有者のみがアクセスできる権限で作成された args.key を使用します。そのため、台帳だけでは推測したクエリを確認できません。

session_budget_credits は、どのプロセスが書き込んだかにかかわらず、チェーン内のすべてのクレジットを数えます。他のプロセスが予約済みでまだ書き込んでいないクレジットは、このチェックでは見えないため、実行中のプロセス数に 1 回あたりのクレジット上限を掛けた分まで、予算を超過する可能性があります。この上限が適用されるのは、上限が設定されている場合のみです。上限が設定されていない場合、超過幅はプロセス数に最大の単一予約額を掛けた値になります。100 件のクエリを含む Maps または Lens のバッチでは、これは 900 クレジットです。レスポンスキャッシュと OWN_SERPER_QPS の上限はプロセスごとに適用されます。各プロセスは独自のキャッシュを保持し、独自の送信リクエストレートを使用します。クライアントに専用の台帳が必要な場合は、引き続き OWN_SERPER_LEDGER_DIR を使用できます。

台帳を失わずに閉じるには、ownserp audit rotate を実行します。チェーンを検証し、元のファイルと同じ場所にタイムスタンプ付きでアーカイブします。実行中のサーバーは、次回の書き込み時に新しいチェーンを開きます。

ドル建ての金額は、パックのティア(デフォルトは starter)に基づきます。選択肢は standard、scale、ultimate、または SERPER_USD_PER_1K を指定する custom です。

設定

環境変数:

  • SERPER_API_KEY
  • SERPER_USD_PER_1K
  • OWN_SERPER_PROFILE
  • OWN_SERPER_BIND
  • OWN_SERPER_QPS、クライアント側の1秒あたりのクエリ数の上限
  • OWN_SERPER_CACHE_TTL_SECS
  • OWN_SERPER_LEDGER_DIR
  • OWN_SERPER_BEARER_TOKENS
  • OWN_SERPER_ALLOWED_HOSTS
  • OWN_SERPER_HTTP_QPS、HTTP モードでのインバウンドリクエスト全体の上限。未設定または0の場合は無効です
  • OWN_SERPER_LOG_FORMAT、ログ1行につきJSONオブジェクトを1つ出力するには json を設定します

プロファイルファイルは $XDG_CONFIG_HOME/ownserp/profile.toml または ~/.config/ownserp/profile.toml にあります。Windows では、HOME が未設定の場合、%APPDATA%\ownserp\profile.toml にあります。

version = 1
pack = "starter"
usd_per_1k = 1.0
qps = 50
cache_ttl_secs = 0
cache_max_bytes = 16777216
ledger_dir = "/absolute/path/to/ownserp-ledger"
per_call_credit_ceiling = 10
session_budget_credits = 500
enable_batch = false
http = false
bind = "127.0.0.1:8777"
request_timeout_secs = 30
http_qps = 0

version はプロファイルスキーマのバージョンです。現在は1で、新しいバージョンを指定したプロファイルは、バージョンを明示して拒否されます。

ledger_dir には絶対パスを指定します。このファイルはTOMLドキュメントのため、~ や変数は展開されず、そのまま保存されます。

session_budget_credits は、再起動をまたいで、現在の台帳チェーンに記録されたすべてのクレジットをカウントします。ownserp audit rotate を実行すると、カウントがリセットされます。allowed_hosts には、HTTP モードで受け入れる Host 名を指定します。未設定の場合は、バインドアドレスから導出されます。

usd_per_1k のないカスタムパックでは、レートが不明なため、ドル換算額なしでクレジットが報告されます。

キャッシュはデフォルトで無効です。cache_ttl_secs に0より大きい値を設定すると有効になり、キャッシュがヒットすると cacheHit: true を返し、課金されません。tbs が設定された呼び出しでは、キャッシュをスキップします。

ownserp doctor は、解決された設定を出力し、キーをマスクして、キーの取得元を示し、両方のホストに接続を試みます。ownserp config show は、キーの取得元、マスクされたキー、クレジットパック、台帳ディレクトリ、プロファイルパスを出力します。

HTTP デプロイ

OWN_SERPER_BEARER_TOKENS="a random value of at least 32 characters" \
  ownserp serve --http --bind 127.0.0.1:8777

/healthz は認証なしでアクセスできます。OWN_SERPER_BEARER_TOKENS が設定されている場合、/readyz と /metrics にはベアラートークンが必要で、それ以外のパスはすべて MCP エンドポイントです。サーバーは、トークンなしでループバック以外のアドレスにバインドすること、および32文字未満のトークンを拒否します。保護対象の各ルートで Host ヘッダーを許可リストと照合し、リクエスト本文のサイズを1 MiBに制限して、本文の受信に30秒を割り当て、最大256接続を受け入れます。また、全体のレート制限を消費する前にベアラートークンを確認し、/readyz をその制限の対象外にし、同時に最大128件のリクエストを処理し、request_timeout_secs と再試行回数から各リクエストの期限を導出して、期限を過ぎると呼び出しをキャンセルします。Origin ヘッダーを含むリクエストは拒否し、すべてのレスポンスに x-content-type-options: nosniff と cache-control: no-store を設定します。同じサーバー上のすべてのベアラートークンで、そのサーバーの台帳、セッション予算、キャッシュを共有します。プロキシの背後で実行する場合は、プロキシが送信する名前を OWN_SERPER_ALLOWED_HOSTS に列挙し、プロキシ側でヘッダーとアイドルタイムアウトを適用してください。

セキュリティ

サーバーはAPIキーを1つ保持し、TLS経由でSerperにのみクエリを送信し、テレメトリーは送信しません。結果は信頼できないテキストとして扱われます。SECURITY.md には報告手順が記載されており、脅威モデル には資産、信頼境界、制御策、残存リスクが記載されています。

トラブルシューティング

各エラーには、固定コード、メッセージ、対処方法があり、ネットワーク障害の場合は、DNS、TLS、接続の問題を示す最大3つのサニタイズ済み原因が含まれます。ownserp は成功時に 0、実行時エラー時に 1、使用方法のエラー時に 2 で終了します。ownserp doctor は、キーが設定されていない場合、または Serper のヘルスプローブに失敗した場合に 1 で終了します。アカウントエンドポイントから報告されない残高は表示されますが、失敗にはなりません。コードと対処方法は次のとおりです。

  • serper.auth_missing。キーが設定されていません。SERPER_API_KEY を設定するか、ownserp config set-api-key を実行してください。
  • serper.auth_failed。Serper がキーを拒否しました。https://serper.dev/api-keys で確認してください。
  • serper.rate_limited。上流のレート制限、またはクレジット残高により呼び出しが停止されました。Serper は再試行ヘッダーを公開しておらず、サーバーは 429 を再試行しません。
  • serper.budget_refused。呼び出しごとの上限またはセッション予算を超えるため、処理が拒否されました。プロファイルの上限を引き上げるか、num の値を下げてください。
  • serper.bad_request。引数の検証に失敗しました。メッセージにフィールド名が示されます。
  • serper.tool_not_found。この設定のリストにツールがありません。tools/list を呼び出し、バッチツールには enable_batch を設定してください。
  • serper.config_error。設定に不備があります。ownserp doctor では、解決された各値とその取得元が表示されます。
  • serper.keychain_error。OS のキーチェーンを利用できません。ヘッドレスホストでは SERPER_API_KEY を使用してください。
  • serper.upstream_failed。再試行後も Serper またはネットワークで障害が発生しました。https://serper.betteruptime.com を確認してください。
  • serper.cancelled。クライアントがリクエストをキャンセルしました。
  • serper.internal_error。予期しないローカル障害です。1回再試行し、その後、メッセージを添えて issue を作成してください。

開発

この手順には Rust 1.89 以降が必要です。バージョンは rust-toolchain.toml で 1.99.1 に固定されています。

cargo install --path crates/ownserp --locked
tools/verify.sh

tools/verify.sh は、フォーマット、チェック、警告をエラーとする clippy、テスト、ドキュメントテスト、ドキュメント、アドバイザリ、依存関係ポリシー、未使用の依存関係、行カバレッジの最低80%、およびツリーと git 履歴のシークレットスキャンを含むすべてのゲートをローカルで実行します。必要なツールが見つからないチェックはスキップとして報告され、OWN_SERPER_STRICT_GATE=1 を設定すると、スキップはすべて失敗として扱われます。リリースではこの設定で実行されます。

リリースビルド自体は、v* タグがプッシュされたときに、ネイティブランナーのマトリックス上で .github/workflows/release.yml を実行して行われます。

ローカルでのライフサイクル:

  • tools/reinstall.sh はバイナリをビルドし、~/.local/bin にインストールします。
  • tools/release.sh --prepare はバージョンを更新し、--package はアーカイブとチェックサムを作成します。
  • tools/publish-npm.sh は npm パッケージを公開し、tools/npm-auth-setup.sh は OTP を不要にするトークンを保存します。
  • tools/registry-auth.sh は、シェルにすでに設定されている環境変数から GitHub、npm、crates.io、MCP Registry、ghcr のセッションを更新します。そのため、リリース中に各レジストリでログインを求められることはありません。
  • tools/install-hooks.sh は git にローカルフックを設定します。各コミットの前にシークレットスキャンを実行し、各プッシュの前にすべてのゲートを実行します。
  • RELEASING.md はリリース手順書です。
  • docs/benchmark.md では、ライブツールの構成を Python Serper MCP サーバーと比較し、測定結果を記録しています。

配布

  • crates.io:ownserp および ownserp-core。
  • npm:@devops-infinity/ownserp。
  • Homebrew tap:devops-infinity/tap。
  • MCP Registry:io.github.devops-infinity/ownserp。
  • GitHub リリース:macOS ARM64 および x86_64、glibc を使用する Linux x86_64 および ARM64、静的 musl を使用する Linux x86_64 および ARM64、Windows x86_64 向けのアーカイブ。それぞれにチェックサムが付属するほか、シェルインストーラー、PowerShell インストーラー、Linux MCPB バンドルもあります。
  • コンテナーイメージ:ghcr.io/devops-infinity/ownserp(公開)。
  • このリポジトリ内のマニフェスト:server.json、mcpb/manifest.json、Dockerfile。

サポート

質問、バグ報告、機能リクエストは https://github.com/devops-infinity/ownserp/issues で issue を作成してください。セキュリティ上の問題は SECURITY.md に記載された非公開の窓口から報告し、issue では決して報告しないでください。

貢献

https://github.com/devops-infinity/ownserp で、Issue やプルリクエストを歓迎します。プルリクエストを作成する前に tools/verify.sh を実行してください。ゲートを通過した変更のみが取り込まれます。リリースを行う前に RELEASING.md をお読みください。

結果は Serper を通じて Google から取得されます。下流のユーザーは、Serper の利用規約で定められた帰属表示の義務を引き続き負います。

ライセンス

MIT または Apache-2.0。LICENSE-MIT と LICENSE-APACHE をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。