pit.world MCP server について
pit.worldは、エージェントやMCPクライアント向けに、プライベートなウェブ検索とMoshpit名の照会を提供するstdio型MCPサーバーです。複数のウェブインデックスの結果をまとめ、APIキーなしで事業者情報やMoshpitネットワークの機能も利用できます。
主な機能
- 01統合ウェブ検索
- 02Moshpit名の解決
- 03事業者情報の閲覧
- 04専門業者ディレクトリの検索
- 05ウェブリング情報の取得
- 06所有する掲載情報の編集
活用シーン
- 01エージェントからウェブ検索
- 02Moshpit名の解決
- 03カテゴリや場所から事業者を検索
- 04認証済み事業者情報の更新
MCP 対応
stdio型MCPサーバーとして、検索、Moshpit名の解決とネットワーク情報、事業者情報、専門業者ディレクトリ、ウェブリング、掲載情報の編集を提供します。APIキーは不要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
pit.world
プライベート検索と、Moshpit ネットワークへの玄関口です。
プライベートなウェブ検索のための MCP サーバーです。 pit mcp は stdio の Model Context Protocol サーバーで、API キーもログ記録も不要なウェブ検索に加え、Moshpit 名の検索機能をあらゆるエージェント(Claude、Cursor、あらゆる MCP クライアント)に提供します。公式 MCP Registry に world.pit/pit として登録されています。
pit.world は、ユーザーに関する情報を一切保持しない検索エンジンです。検索クエリのログも、Cookie も、プロフィールも、トラッカーもなく、JavaScript も必要ありません。また、Moshpit ネットワークが公開されている場所でもあります。chovy.hacker のような Moshpit 名を入力すると、ウェブ検索結果と並んでレジストリから名前が解決されます。
# the web
https://pit.world/search?q=anything
# the CLI and TUI
bun add -g pitworld
pit search "private search engines"
pit resolve chovy.hacker
pit # interactive
# your agent
claude mcp add pit -- pit mcp
MCP サーバー
claude mcp add pit -- bunx pitworld mcp
{ "mcpServers": { "pit": { "command": "bunx", "args": ["pitworld", "mcp"] } } }
ツール:
search:プライベートなウェブ検索(Google と Bing のインデックスを統合)を行い、タイトル、URL、スニペットを返します。moshpit_resolve:chovy.hackerのような Moshpit 名の参照先を解決します。moshpit_network:Moshpit ネットワークの最新の数値を取得します。listing:ドメインでビジネスリスティングを取得します(運営者、カテゴリ、サービス提供地域、サービス、料金、営業時間、フィード、リングへの参加状況)。pros:カテゴリ、場所、キーワードでプロ向けディレクトリを検索します。ring:pit.world のウェブリングを順番に表示します。edit_listing:編集キーを使って、自分が所有するリスティングを編集します。
キーは不要です。PIT_URL を別の pit.world インスタンスに設定できます(デフォルトは https://pit.world)。
できること
- プライベートなウェブ検索。 ブラウザーが通信するのは pit.world だけです。pit.world は Google インデックス(Serper 経由)と Bing インデックス(DataForSEO 経由)に同時に問い合わせ、2 つのリストを統合し、各検索結果にそれを見つけた検索エンジンのタグを付けます。プロバイダーに渡されるのは検索語だけで、IP アドレス、ブラウザー、Cookie、リファラーは渡されません。両方の検索に失敗した場合は、Linkup、Exa、Perplexity が代替手段になります。
- Moshpit 名。
label.endingの形式に見えるクエリは Moshpit レジストリで確認され、登録済みの名前には参照先を示すカードが表示されます。 - Bangs。
!gh hqtui、rust lifetimes !so、!pit chovy.hackerのように入力すると、リファラーを送信せずにそのサイトの検索へ直接移動します。全リストは pit.world/about#bangs にあります。 - デフォルトの検索エンジン。
/opensearch.xmlに OpenSearch の説明があり、/suggestに検索候補があり、どのブラウザーでもhttps://pit.world/search?q=%sを利用できます。
ビジネスリスティング、プロ向けディレクトリ、ウェブリング
- リスティング(
/b/<domain>)。 すべてのサイトにリスティングがあります。所有者は DNS TXT レコードまたはホームページのメタタグで所有権を確認し、編集キー(pitk_…。一度だけ表示され、ハッシュとして保存されます)を取得します。所有者は、運営者([email protected]のようなエージェントまたは人物のハンドル、あるいは OpenAgent の記録やプロフィールへの https リンク)、会社とそのサイト、カテゴリー、サービス提供地域(自由記述と市区町村、地域、国)、サービス、価格帯、営業時間、電話番号、リンクを記載します。 - pit.world による掲載(事前登録)。 pit.world は、所有者がリスティングを申請する前に、公開情報から事業者を掲載できます。事業者自身のウェブサイト、発行元で有効性を確認した州のライセンス(例:カリフォルニア州の業者の場合は CSLB)、事業者が自身のサイトで公開している電話番号を使用します。メールアドレスは使用せず、見積もりの転送もしません。ページには未申請で pit.world が作成したことが表示され、検索対象となり、「この事業者の方ですか?申請する」ボタンが設置されます。申請すると所有者に引き継がれ(pit.world が以後そのリスティングに書き込むことはありません)、所有者は編集ページからディレクトリへの掲載を取り下げられます。事前登録はサーバー上で
listings.dbを対象に実行します。bun src/admin.ts seed FILE.json({domain, name, description, phone, category, area, city, region, country, services, links, license, licenseCheckedAt, featured}の配列)、bun src/admin.ts unseed DOMAIN、bun src/admin.ts views。 - OpenProfile(
/b/<domain>/openprofile.md)。 ディレクトリ内のすべてのリスティングは、Kind: organizationを持つ OpenProfile.md でもあります。ウェブ、カテゴリー、所在地、提供地域、電話番号、ライセンス、サービス、リンク、および所有者による申請の有無が含まれます。リスティングページの<link rel="openprofile">とLinkヘッダーから見つけられます。GET /api/prosでは、それぞれのopenprofileURL が含まれます。OutreachGraph はこれらを見込み客の情報源として読み込みます。 - 閲覧数。
/b/<domain>は、ディレクトリ内のリスティングについて、人によるページ閲覧数をカウントします(クローラー、リンクプレビュー、スクリプトはカウントされません)。カウントはGET /api/listingのviewsです。 - プロ向けディレクトリ(
/pros、/pros/<category>)。 申請済みのリスティングと pit.world が掲載したリスティングを、固定されたカテゴリー一覧(住宅サービス、法律、会計、ソフトウェアおよび開発エージェンシー、医療など。GET /api/pros/categories)から閲覧でき、キーワードと場所で検索できます。まず一部のおすすめリスティング(編集者の選定で、販売はしません)、次に最後に編集された順で確認済みの所有者、最後に未申請のリスティングを表示します。有料掲載はなく、v1 ではレビューもありません。事業者が偽造できない形でレビューと紐づけるための本人確認手段がないため、購入できるレビューを載せるのではなく、レビュー自体を掲載しません。 - 見積もり依頼。 確認済みの非公開住所があるリスティングには「見積もりを依頼」フォームが表示されます。pit.world は送信者を Reply-To に設定し、
[email protected]から所有者にメールを送ります。所有者のメールアドレスが表示、送信、API に返されることはありません。住所が機能するのは、所有者がその住所に送られたリンクをクリックした後だけなので、リスティングから pit.world のメールを他人に送信させることはできません。依頼ごとにリスティングは1件です。訪問者ごとに1時間あたり3件(HMAC 化した IP をメモリ上でのみ保持)、リスティングごとに1時間あたり5件、1日あたり20件、サイト全体で1日あたり400件までです。ハニーポットフィールドがあり、リンクが3つを超えるメッセージは拒否されます。pit.world は内容を保存せず、カウント用の時刻のみ保持します。 - pit.world リング(
/ring)。 対象は*.pit.worldのサイトのみです。 コアサイト(pit.world、seo.rank、family.ancestry など)に続いて、pit.world のサブドメインまたは Moshpit 名(<name>.pit.worldに中継されます)である、申請済みリスティングが参加順に並びます。これらは申請することで参加となり、所有者は編集ページから退出できます。独自の ICANN ドメインを持つ事業者はリスティングを申請して/prosに掲載できますが、リングメンバーにはなりません(src/pros.tsのringEligible)。移動先は/ring/next|prev|random?from=<site>(?host=、?url=、?via=、または Referer も使用可能)で、no-storeを付けた302を返します。/api/ringはバーを独自に表示するメンバー向け、/ring/opmlはすべてのメンバーのフィード向けです。確認済みページと編集ページに、貼り付けるリンクが表示されます。 - rssamplifier.com にミラーリング。 pit.world は、申請時と毎日、申請済みサイトのホームページから
<link rel="alternate">の RSS/Atom を読み取り、rssamplifier.com/ring/pit-world のリングpit-worldと同期します。新しいフィードを送信し、メンバーを追加し、退出したメンバーを削除します。同期は差分に基づいて行われ(冪等)、申請または編集の数秒後と、1日1回実行されます。RSSAMPLIFIER_API_KEY(リングを所有するアカウントの rssamplifier API キー)が必要で、設定されていない場合は無効です。rssamplifier からアクセスできないため、Moshpit 専用の名前はミラーリングされません。新しい申請もフィードとして公開されます。/b/feed.xml。
プロモーションキャンペーン:まず宣伝し、その後に結果を示す
プロモーションキャンペーンでは、OutreachGraph のキャンペーンが対象とする事業者を一覧にして宣伝し、それぞれについて独自の30日間の期間で効果を測定してから、その数値を添えて事業者に連絡します。Los Gatos の建築業者キャンペーン(pit.world/roundup/los-gatos-builders)は、この方法で実施されています。
- インポート。
scripts/outreachgraph-campaign-export.sh cmp_...は、OutreachGraph キャンペーンの完全な読み取り専用スナップショットを書き出します(OutreachGraph には、すべてのメンバーとその住所を一覧表示する API がありません)。pit promo import ID snapshot.jsonを実行すると、元データの各行に必ず1つの処理結果(照合済み、同じ事業者に統合、未解決、除外)が割り当てられ、合計が一致します。同じドメインのリードは、すべてのリード ID を含む1つの事業者として扱われます。同じスナップショットを再インポートしても何も変わりません。事業者が退会したと判断できるのは完全なスナップショットだけです(掲載情報はそのまま残り、優先度はなくなります)。ソーシャルプロフィールのない事業者も保持されます。 - まず名簿を確認。
pit promo roster IDでは、リード ID、事業者、ウェブサイト、掲載情報、確認状況、予定アクションを確認できます。掲載情報がディレクトリにあり、名称、カテゴリ、場所、説明、確認済みの情報源(発行元で確認済みのライセンス、またはオーナーからの申告)がそろっているメンバーは公開可能です。 - アウトリーチの保留。 上流システムから送信される可能性のあるすべての経路が保留されている場合に限り、メンバーへの配信を開始します。各リードが OutreachGraph で抑制されている(
los-gatos-promotion-hold抑制リストに登録されている)か、承認待ちのキャンペーンにのみ含まれている必要があります。そうでない場合は、理由とともにブロックされます。オペレーターは保留を証明できます(pit promo set ID DOMAIN --attest TEXT)。 - 優先度。 実行中のキャンペーンの確認済みメンバーは、フィルター適用後、ページネーション前に SQL で
/prosの先頭に表示されるため、ページ、API、モバイル表示で一貫します。優先度をオフにしたりキャンペーンを停止したりしても、掲載情報には影響しません。キャンペーンへの参加状況が公開されることはありません。 - まとめ記事とスポットライト。
pit promo preview IDでは、予定されている投稿すべての本文、時刻、バージョンを確認できます。pit promo launch ID --version Vは/roundup/<slug>を公開し、投稿カレンダーを作成します。内容は、直ちに投稿するまとめ記事の告知と、設定済みアカウントを使った各事業者1件ずつのスポットライトです。perAccountPerDay件を、現地時間のpostHourから投稿します。pit promo worker ID(myna にログイン済みの環境で実行)は、期限が来た投稿をmyna post <account> --frontで投稿し、投稿前にすべての投稿を myna の履歴およびキューとトラッキング ID(?via=plc_...)で照合するため、クラッシュしても二重投稿されません。また、各投稿をネットワークの公開 API(Bluesky のgetPostThread、Mastodon のstatuses)で検証します。予約済みは公開済みではなく、公開済みも検証済みではありません。件数に含めるのは検証済みの投稿だけです。LinkedIn には公開読み取り機能がないため、LinkedIn の投稿は件数に含まれません。myna が投稿ごとに CrawlProof 広告を購入するネットワークのアカウントは拒否されます。プロモーションはオーガニックであり、有料予算はデフォルトでゼロです。 - 測定。 掲載情報の閲覧、ウェブサイトのクリック(
/b/<domain>/go。掲載事業者自身のサイトへのリダイレクトのみ)、電話タップ(/listing.jsからのビーコン。ID で重複排除)、見積もり依頼、まとめ記事の閲覧(キャンペーン単位で集計し、個々の事業者には帰属させません)を測定します。クローラー、リンクプレビュー、プリフェッチ、PIT_INTERNAL_IPS、マーク付きテスト(?pt=test)は除外として記録されます。Cookie、IP アドレス、ユーザーエージェントは使用しません。訪問者は、UTC の日付が変わると削除されるソルトを使ったハッシュとして保存されるため、「訪問者日数」は算出できますが、期間内のユニーク訪問者数は算出できず、利用不可と報告されます。集計対象はキャンペーン内の事業者のみです。 - 期間。 各事業者の期間は、掲載情報が公開され、トラッキングがマーク付きテスト(
pit promo test-tracking ID)に合格し、その事業者の名前を含む掲載枠が検証された時点で始まり、経過日数でperiodDays(30日)続きます。毎時の処理では、終了した期間をレビュー対象としてマークし、期間ごとにレビュージョブを1つ作成します(再起動しても2つ目は作成されません)。このジョブはバージョン付きレポートと下書きを作成します。後から追加された事業者には、それぞれ専用の期間が設定されます。期間の空白は記録され(pit promo gap)、日付をずらして隠すことはありません。 - レポート。 レポートは非公開で、バージョンごとに固定されます(
pit promo report ID --md)。オペレーターの費用を含めず、/r/<token>(HTML、.md、.json)で共有できます。利用不可はゼロを意味しません。後からデータが追加された場合は新しいバージョンが作成され、古いバージョンを引用した未送信の下書きは無効になります。pit promo csv IDではキャンペーンを比較できます。 - 下書きと送信。 各レポートには、そのレポート独自の数値に基づく下書きが1つ作成されます。連絡先が記録されていない場合は紹介文、記録されている場合はフォローアップです。測定値がない場合はその旨を正直に記載し、住所がない場合はブロックされます。
sendAuthorizedが有効になるまで送信はオフです。deliverは送信時に期間、レポートのバージョン、上流での抑制状況を再確認します(不明な場合は送信しません)。また、受信者、メッセージのバージョン、期間の組み合わせごとに配信を1回に制限します。 - 利用経路。 API
/api/v1/promotion/*(BearerPIT_ADMIN_TOKEN)、ダッシュボード/admin/promo(pit.world にサインイン済みの管理者)、pit promo ...、pit promo tui ID、およびPIT_ADMIN_TOKENが設定されている場合のpromo_*MCP ツール。
すべての pit.world サイトで使える1つのアカウント:social. と bbs.
すべての Moshpit 名には、設定不要でさらに2つのアドレスが割り当てられます。
social.<name>.pit.world:その名前のソーシャルフィードです。名前のニッチにタグ付けされた AT Protocol ネットワーク上の投稿(family.ancestryなら #genealogy、#familyhistory、#ancestry など)を、到達可能なすべてのリレー(Bluesky と独立系の atproto.africa、relay.fire.hose.cam、relay.upcloud.world、relay.waow.tech)から同時に読み込み、メンバーの投稿も表示します。それぞれが AT Protocol フィードジェネレーター(did:web:social.<name>.pit.world)でもあります。pit-social サービスであり、pit.world がホストへのアクセスを転送します。bbs.<name>.pit.world:その名前の掲示板です。初回アクセス時に作成される tsbb ボード(deploy/pit-bbs-provision)で、独自のデータベースと初期登録済みのフォーラムがあり、pit.world の管理者が管理者になります。
どちらも pit.world アカウントでサインインします。pit.world/signin で CoinPay(OAuth 2.1、code + PKCE)を使って一度サインインすれば、すでにサインイン済みの場合は、各ボードやフィードにも pit.world 経由で(/bridge/authorize、/bridge/token、@profullstack/bridges)自動的にサインインできます。サイトごとにアカウントを作成する必要はありません。/account では、利用中のサイト、CLI トークン、サインアウト、アカウント削除を確認できます。
- サイトのクライアント ID はホスト名で、シークレットは
base64url(HMAC-SHA256(PIT_BRIDGE_KEY, host))です。そのため、新しい名前は作成された時点ですぐに利用でき、サイトを手動で登録する必要はありません。PIT_BRIDGE_CLIENTSには、追加するホスト名を完全一致で指定できます(リレー上の自社アプリ用)。 - アカウントは CoinPay の
sub(ユーザーの CoinPay DID)のみで紐付けられ、メールアドレスでは紐付けられません(CoinPay はすべてのメールアドレスを未検証として報告します)。 - CLI:
pit login(OAuth 2.1、パブリッククライアント、ループバックリダイレクト、PKCE S256、RFC 8252)、pit whoami、pit logout、pit social <name>、pit bbs <name>。API:Authorization: Bearer pw_…を付けたGET /api/v1/me。 - 証明書: 名前ごとに発行される1枚の Let's Encrypt 証明書で、
<name>、social.<name>、bbs.<name>をカバーします(deploy/pit-proxy-cert)。 - 設定:
PIT_COINPAY_CLIENT_ID、PIT_COINPAY_CLIENT_SECRET(コールバックhttps://pit.world/api/v1/coinpay/oauth/callbackを設定した CoinPay クライアント)、PIT_BRIDGE_KEY、PIT_ADMIN_SUBS、PIT_SOCIAL_URL(既定値はhttp://127.0.0.1:8794、off)、PIT_BBS(off)、PIT_BBS_MAX(既定値は 100)。
プライバシーを設計段階から確保
- nginx はサイトの アクセスログを記録しません(
bin/install.confでACCESS_LOG=off)。アプリもリクエストごとのログを記録しません。 - 検索用の Cookie はありません。 サーバーは、サインインとアカウントのルートを除くすべてのレスポンスから
Set-Cookieを削除します。これらのルートでも、[Sign in]を押した後にのみ Cookie を設定します。 - レート制限には、1時間ごとに再生成されるシークレットを使った IP アドレスの HMAC をキーとして使用し、メモリ上だけに保持します。
- 同一の検索は、二重の支払いを避けるため メモリ上に10分間キャッシュされます。キャッシュに保持するのは検索語と結果のみで、検索したユーザーに関する情報は含まれず、ディスクにも書き込みません。
- 厳格な CSP(
default-src 'none'、スクリプトとスタイルは同一オリジンのみ)、Referrer-Policy: no-referrer、結果のリンクはサイトに直接つながります。
ページにも同じ内容を平易な言葉で記載しています:pit.world/privacy。
API
GET /api/search?q=…&n=10 | { query, provider, cached, results: [{ url, title, description, host }], moshpit } |
GET /api/resolve?name=chovy.hacker | Moshpit の名前に対するレジストリの応答 |
GET /api/network | 登録済みのエンディング、レジストリのイベント、最近の登録、販売中のエンディング |
GET /api/bangs | すべての bang |
GET /api/listing?domain=… | リスティング(所有者の連絡先アドレスは表示されません) |
POST /api/listing/claim · POST /api/listing/verify | リスティングを登録します。編集キーは一度だけ返されます |
POST /api/listing | Authorization: Bearer pitk_… を指定して編集します。contactEmail は非公開の見積もり先アドレスを設定します("" でクリア) |
POST /api/listing/quote | { domain, name, email, phone?, message }:1件のリスティングに対する1件の見積もり依頼 |
GET /api/pros?c=legal&near=oakland&q=wills&n=20&page=1 | 専門家ディレクトリ |
GET /api/pros/categories | カテゴリ(件数付き)と価格帯 |
GET /b/<domain>/openprofile.md | ディレクトリのリスティングを OpenProfile.md(Kind organization)として表示 |
GET /api/ring | 順序付きのウェブリング |
キーは不要です。訪問者ごとにレート制限されます(Retry-After を含む 429)。
サーフェス
基本方針:すべてに TUI、CLI、MCP、API を用意します。
| Web + API | bun src/server.ts(PORT、HOST。ニュースレターと見積もり依頼には RESEND_API_KEY、リングミラーには RSSAMPLIFIER_API_KEY(および任意の RSSAMPLIFIER_URL、RSSAMPLIFIER_RING)、プロバイダーキーには SERPER_API_KEY、DATAFORSEO_LOGIN + DATAFORSEO_PASSWORD(Bing)、LINKUP_API_KEY、EXA_API_KEY、PERPLEXITY_API_KEY) |
| CLI | pit search、pit resolve、pit network、pit open、pit listing、pit claim、pit verify、pit edit DOMAIN --key … --operator … --category …、pit pros [WORDS] --category … --near …、pit categories、pit quote DOMAIN --name … --email … --message …、pit ring |
| TUI | pit |
| MCP | pit mcp:ツール search、moshpit_resolve、moshpit_network、listing、pros、ring、edit_listing。公式 MCP Registry に world.pit/pit として登録(server.json) |
| PWA | 任意のブラウザーからインストールできます(/manifest.webmanifest、共有先は /search)。public/sw.js のワーカーは静的シェルとオフラインページをキャッシュしますが、検索結果はキャッシュしません |
CLI、TUI、MCP は https://pit.world(または PIT_URL)と通信するため、キーは不要です。
自分で実行する
git clone https://github.com/moshcoder/pit.world && cd pit.world
bun install
SERPER_API_KEY=… bun src/server.ts # http://127.0.0.1:8787
本番環境は、ベアメタル上で bin/install.sh(OpenInstall)を使って稼働します。nginx、Let's Encrypt、bun を実行する systemd ユニットを使用します。
Moshpit ネットワーク
Moshpit は ICANN に並ぶ名前空間です。誰でもエンディング(.hacker、.eggs、.pit)を登録し、その下に名前を付けて任意の場所を指すようにできます。レジストリは公開され、追記専用で、証明書に署名するため、ネットワーク上の誰もが実際の HTTPS サイトとして名前を利用できます。moshcode(curl -fsSL https://moshcoding.com/install.sh | sh を実行し、続いて moshcode dns enable を実行)を使うか、ブラウザーのセキュア DNS を https://dns.moshcode.sh/dns-query に設定してネットワークに接続できます。各接続方法(moshcode、TronBrowser、ブラウザー DoH、Apple プロファイル、Windows、Android)と Moshpit Root CA を信頼する方法は pit.world/connect にあります。pit.world はルート証明書を /moshpit-root-ca.crt、Apple プロファイルを /moshpit.mobileconfig で提供しています。pit.moshcode.sh でエンディングを登録してください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。