API 키나 사용자 데이터 로그 없이 프라이빗 웹 검색 및 Moshpit 네트워크 이름 해석을 제공하는 MCP server입니다.
다른 이름 moshcoder/pit.world, pit-world, pitworld
- 스타
- 1
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 0.5.0
- 마지막 커밋
- 2026년 11월 14일
- 라이선스
- MIT
pit.world MCP란?
pit.world은(는) MCP server입니다. API 키나 사용자 데이터 로그 없이 프라이빗 웹 검색 및 Moshpit 네트워크 이름 해석을 제공하는 MCP server입니다.
프로젝트 README에서 생성된 요약
pit.world MCP server 정보
pit.world MCP server는 AI agent가 프라이빗하게 웹을 검색하고 Moshpit 네트워크 이름을 해석할 수 있도록 지원합니다. API 키가 필요 없으며 사용자 데이터, 쿠키 또는 IP 주소를 기록하지 않고 Google과 Bing 인덱스를 통합하여 개인정보 보호 중심의 검색 경험을 제공합니다. 이 도구는 익명성을 유지하면서 웹 접속이 필요한 Claude 또는 Cursor 사용 개발자를 위해 설계되었습니다.
표준 웹 검색 외에도 이 server는 Moshpit 네트워크 및 비즈니스 디렉토리와 상호작용하기 위한 특화된 tool을 포함합니다. 사용자는 Moshpit 이름을 해석하거나, 실시간 네트워크 통계를 확인하거나, 카테고리 및 위치별로 전문 리스팅을 찾아볼 수 있습니다. 또한 edit key를 보유한 소유자를 위해 edit_listing과 같은 도구를 통한 비즈니스 관리도 지원합니다. 이 server는 bunx를 통해 stdio 방식으로 실행되며, PIT_URL 환경 변수를 사용하여 다른 인스턴스를 가리키도록 설정할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
pit.world MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 pit.world MCP 설치
$ claude mcp add pit-world -- npx -y pitworldCursor에 pit.world MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"pit-world": {
"command": "npx",
"args": [
"-y",
"pitworld"
]
}
}
}VS Code에 pit.world MCP 설치
.vscode/mcp.json
{
"servers": {
"pit-world": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"pitworld"
]
}
}
}VS Code CLI에 pit.world MCP 설치
$ code --add-mcp '{"name":"pit-world","type":"stdio","command":"npx","args":["-y","pitworld"]}'Claude Desktop에 pit.world MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"pit-world": {
"command": "npx",
"args": [
"-y",
"pitworld"
]
}
}
}Codex에 pit.world MCP 설치
$ codex mcp add pit-world -- npx -y pitworldCodex config.toml에 pit.world MCP 설치
~/.codex/config.toml
[mcp_servers.pit-world] command = "npx" args = ["-y", "pitworld"]
Gemini CLI에 pit.world MCP 설치
$ gemini mcp add -s user pit-world npx -- -y pitworldGemini settings.json에 pit.world MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"pit-world": {
"command": "npx",
"args": [
"-y",
"pitworld"
]
}
}
}구성
PIT_URLpit.world instance to query (default https://pit.world)
SERPER_API_KEY
| 이름 | 설명 | 유형 |
|---|---|---|
| PIT_URL | pit.world instance to query (default https://pit.world) | |
| SERPER_API_KEY | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능moshcoder/pit.world is public and reachablegithub.com/moshcoder/pit.world ↗통과
- 패키지가 이 저장소를 소스로 명시pitworld names moshcoder/pit.world as sourcenpmjs.com/package/pitworld ↗통과
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-11github.com/moshcoder/pit.world ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from pitworld통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음101 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기pit.world
Private search, and the front door to the Moshpit network.
An MCP server for private web search. pit mcp is a stdio Model Context Protocol server that gives any agent (Claude, Cursor, any MCP client) web search with no API key and no logging, plus Moshpit name lookups. It is in the official MCP Registry as world.pit/pit.
pit.world is a search engine that keeps nothing about you: no query logs, no cookies, no profile, no trackers, no JavaScript required. It is also where the Moshpit network lives in public: type a Moshpit name like chovy.hacker and it resolves through the registry, next to your web results.
# 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 server
claude mcp add pit -- bunx pitworld mcp
{ "mcpServers": { "pit": { "command": "bunx", "args": ["pitworld", "mcp"] } } }
Tools:
search: private web search (Google and Bing indexes, merged), returns titles, URLs and snippets.moshpit_resolve: resolve a Moshpit name such aschovy.hackerto where it points.moshpit_network: live numbers for the Moshpit network.listing: a business listing by domain (who operates it, category, service area, services, price, hours, feed, ring membership).pros: search the pro directory by category, place and words.ring: the pit.world web ring, in order.edit_listing: edit a listing you own, with its edit key.
No key is needed. PIT_URL points it at another pit.world instance (default https://pit.world).
What it does
- Web search, privately. Your browser talks only to pit.world. pit.world asks the Google index (through Serper) and the Bing index (through DataForSEO) at the same time, merges the two lists, and tags each result with the engine that found it. The providers get the words, never your IP, browser, cookies or referrer. Linkup, Exa and Perplexity are fallbacks if both fail.
- Moshpit names. A query that looks like
label.endingis checked against the Moshpit registry, and a registered name gets a card with where it points. - Bangs.
!gh hqtui,rust lifetimes !so,!pit chovy.hacker: straight to that site's search, without a referrer. The full list is at pit.world/about#bangs. - Default search engine. OpenSearch description at
/opensearch.xml, suggestions at/suggest, andhttps://pit.world/search?q=%sfor any browser.
Business listings, the pro directory and the web ring
- Listings (
/b/<domain>). Every site has one. Its owner claims it with a DNS TXT record or a homepage meta tag and gets an edit key (pitk_…, shown once, stored as a hash). The owner writes who operates it (an agent or person handle likeriotcoder@profullstack.com, or an https link to an OpenAgent record or profile), the company and its site, a category, the service area (free text plus city, region, country), services, price range, hours, phone and links. - Listed by pit.world (seeded). pit.world can list a business itself from public information before its owner claims it: the business's own website, licensing and permit records where available, and public company directories. License facts are checked at the issuer (e.g. CSLB for California contractors); NicheDB's public OutreachGraph mirror is matched by exact website domain and adds attributed industry and observed website topics. Never an email address, and never quote routing: the page says it is unclaimed and written by pit.world, is indexable, and carries a "Is this your business? Claim it" button. Claiming hands it to the owner (pit.world never writes to it again) and the owner can take it out of the directory from the edit page. Startup adds submitted public listings and refreshes directory matches daily. To refresh from
listings.dbon the server:bun src/admin.ts enrich-nichedb [--force]; to seed a public entry:bun src/admin.ts seed FILE.json(an array of{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. - Imported from NicheDB (source
nichedb). Companies in nichedb.dev/c/directory, the public half of OutreachGraph (a company by its domain, its industry and stack; never an email, phone or person), become unclaimed listings: imported in id order after a saved cursor, ten pages of 200 every 5 minutes until caught up, then hourly (PIT_DIRECTORY_IMPORT=offstops it). Only companies whose domain resolves to a public address are listed; adult and gambling ones never are. They follow every claimed and seeded listing in/pros(filtered and paged in SQL), carry "Unclaimed listing, data from nichedb.dev" with the record's link, the claim button and vote buttons. SEO guard: an imported listing is indexable and insitemap.xmlonly with a real description (read once from its homepage the first time the page is opened) and a category; otherwise its page isnoindex. Claiming one hands it to the owner like any other. - OpenProfile (
/b/<domain>/openprofile.md). Every listing in the directory is also an OpenProfile.md withKind: organization: web, category, location, area, phone, license, services, links, and whether the owner has claimed it. Found by<link rel="openprofile">on the listing page and aLinkheader;GET /api/proscarries each one'sopenprofileURL. OutreachGraph reads them as a lead source. - Views.
/b/<domain>counts page views by people (crawlers, link previews and scripts are not counted) for listings in the directory; the count isviewsinGET /api/listing. - Pro directory (
/pros,/pros/<category>). Claimed listings and ones pit.world listed, browsable by a fixed list of categories (home services, legal, accounting, software and dev agencies, health, and so on:GET /api/pros/categories) and searchable by words and place. Paid featured placements first, clearly labeled and active only during their paid period, then editorial picks, verified owners by latest edit and unclaimed ones. No reviews in v1: there is no identity to anchor a review to that a business could not fake, so there are none rather than ones that can be bought. - Quote requests. A listing with a confirmed private address shows a "Request a quote" form. pit.world mails the owner from
hello@pit.worldwith the sender as Reply-To; the owner's address is never shown, sent, or returned by the API. The address only works after its owner clicks the link mailed to it, so a listing cannot aim pit.world's mail at someone else. One listing per request; three requests an hour per visitor (HMAC'd IP, memory only), five an hour and twenty a day per listing, four hundred a day site-wide; a honeypot field; messages with more than three links are refused. pit.world keeps no copy: only the time, to count. - The pit.world ring (
/ring). *.pit.world sites only: the core sites (pit.world, seo.rank, family.ancestry, ...) and then every claimed listing that is a pit.world subdomain or a Moshpit name (relayed at<name>.pit.world), in the order they joined: for those, claiming is joining, and owners can leave from the edit page. A business on its own ICANN domain can claim its listing and be in /pros, but is never a ring member (ringEligibleinsrc/pros.ts). Hops:/ring/next|prev|random?from=<site>(also?host=,?url=,?via=, or the Referer),302withno-store;/api/ringfor members that draw the bar themselves;/ring/opmlfor every member's feed. The verified and edit pages show the links to paste. - Mirrored to rssamplifier.com. pit.world reads each claimed site's homepage for
<link rel="alternate">RSS/Atom on claim and daily, and keeps the ringpit-worldon rssamplifier.com/ring/pit-world in step: submit new feeds, add members, remove ones that left. The sync is a diff (idempotent), runs a few seconds after a claim or edit and once a day, and needsRSSAMPLIFIER_API_KEY(an rssamplifier API key of the account that owns the ring; off without it). Moshpit-only names are not mirrored, since rssamplifier cannot reach them. New claims are also a feed:/b/feed.xml.
Public industrial directory listings
Powell Industries is listed as an unclaimed electrical-infrastructure company in src/directory-seeds.ts, using the existing server-side ensurePublicDirectorySeeds import. View it at /b/powellind.com or browse /pros/industrial. Business owners can claim their entry using the standard verification process. The legacy /pro route already redirects to /pros. This directory listing does not imply endorsement, partnership, or any acquisition by xAI.
Business metadata and company enrichment
Every company listing has a canonical website and a categorized directory page. /pros/industrial is the industrial electrical-power category, and /b/powellind.com is Powell Industries' profile. Both the directory cards and detail pages show the category prominently, along with website and publicly listed phone, when known. A JSON-LD Organization block on the detail page, the JSON API (/api/listing / /api/pros) and /b/<domain>/openprofile.md expose the same public facts to search engines and agents.
Two independent, daily source-driven enrichments run on the existing listings:
- NicheDB / OutreachGraph:
src/nichedb.tsmatches the exact website hostname from NicheDB's public OutreachGraph directory mirror and adds attributed business/industry/technology topics. Only company records are accepted; person or site rows are not used as proof of a business association. The OutreachGraph public export intentionally does not expose emails, phone numbers, locations, or CRM leads. No private API token or workspace campaign data is used. - Official company website:
src/official-company-sites.tsuses the existing SSRF-checked HTTPS verifier for unclaimed, seeded companies only, bounded to three concurrent requests, with a 24-hour refresh.src/company-metadata.tsextracts an explicitly linked same-domain contact page, team/leadership page, company social links, role-based public company inbox (info@,sales@, etc.), and a corporate phone only from matching on-domain Organization JSON-LD. It never guesses a person's address or imports CRM contact data. Each fact retains the company's site as its source. An owner claim hides these automatic facts rather than overriding owner-entered data. A missing or unavailable site remains un-enriched; no fake fields are filled.
People enrichment: PIT links to an official team/leadership page when one is explicitly published by the company. Do not import named prospects from OutreachGraph into PIT's public directory unless their company affiliation has explicit, authoritative public evidence, and only use their public, voluntarily published professional profiles. Keep private campaigns, scores, guessed emails, personal phone numbers, and unpublished OpenProfile.md files out of public profiles. This phase does not replicate OutreachGraph's people database.
Deployment note: changes to the code do not update a running process by themselves. After deployment, server startup migrates the listings SQLite database and refresh jobs fill metadata; verify GET /api/pros/categories, GET /api/listing?domain=powellind.com, and /pros/industrial to confirm live data and category counts.
Promotion campaigns: promote first, then show the results
A promotion campaign lists and promotes the businesses an OutreachGraph campaign targets, measures what that did for each one over its own 30-day window, and only then writes to them, with the numbers. It is how the Los Gatos builders campaign runs (pit.world/roundup/los-gatos-builders).
- Import.
scripts/outreachgraph-campaign-export.sh cmp_...writes a complete, read-only snapshot of the OutreachGraph campaign (OutreachGraph has no API that lists every member with its addresses).pit promo import ID snapshot.jsongives every source row exactly one disposition (matched, merged into the same business, unresolved, excluded) and the totals must add up. Leads at one domain are one business with all their lead ids. Re-importing the same snapshot changes nothing; only a complete snapshot can mark a business as having left (its listing stays, its priority goes). Businesses without social profiles are kept. - The roster first.
pit promo roster ID: lead ids, business, website, listing, verification, planned action. A member is publishable when its listing is in the directory with a name, category, place, description and a checked source (a license checked at the issuer, or an owner claim). - Outreach hold. A member only launches when every way the upstream could send to it is held: each lead suppressed in OutreachGraph (the
los-gatos-promotion-holdsuppress list) or only in campaigns that wait for approval. Otherwise it is blocked with the reason; an operator can attest a hold (pit promo set ID DOMAIN --attest TEXT). - Priority. Verified members of a running campaign come first in
/pros, in SQL before pagination, after filters, so pages, the API and the mobile view agree. Turning priority off or stopping the campaign leaves the listing alone. Campaign membership is never shown publicly. - Roundup and spotlights.
pit promo preview IDshows every planned post with its text and time and a version;pit promo launch ID --version Vpublishes/roundup/<slug>and creates the calendar: a roundup announcement now, then one spotlight per business across the configured accounts,perAccountPerDayeach, frompostHourlocal time.pit promo worker ID(run where myna is logged in) posts due ones withmyna post <account> --front, reconciles every post against myna's history and queue by its tracking id (?via=plc_...) before posting so a crash never posts twice, and verifies each through the network's public API (BlueskygetPostThread, Mastodonstatuses). Scheduled is not published, published is not verified; only verified posts count. LinkedIn has no public read, so its posts never count. Accounts on networks where myna buys a CrawlProof ad per post are refused: promotion is organic, and a paid budget defaults to zero. - Measurement. Listing views, website clicks (
/b/<domain>/go, a redirect to the listing's own site only), phone taps (a beacon from/listing.js, deduplicated by its id), quote requests, and roundup views (campaign-level, never credited to each business). Crawlers, link previews, prefetches,PIT_INTERNAL_IPSand marked tests (?pt=test) are stored as excluded. No cookie, no IP, no user agent: a visitor is a hash under a salt deleted when its UTC day ends, so "visitor-days" exist and unique visitors over a window do not (reported as unavailable). Only businesses in a campaign are counted. - Moving off an account. When a network bans or locks an account,
pit promo reassign ID --from ACCOUNT --to ACCOUNT [--dry-run](run where myna is) moves every unposted placement (ready, scheduled, failed) to another account: same tracking id and planned time, text rewritten for the new network, back to ready so the worker re-queues it at the new account's pace. It cancels the old myna queue items, never moves a post myna already published (or one that is uncertain or mid-post), notes each move in the audit log and drops the old account from the campaign config. - Windows. Each business's window starts when its listing is live, its tracking passed a marked test (
pit promo test-tracking ID) and a placement naming it was verified, and lastsperiodDays(30) elapsed days. The hourly pass marks ended windows due and makes one review job per window (a restart never makes a second), which writes a versioned report and a draft. Late additions get their own window; gaps are recorded (pit promo gap), never hidden by moving dates. - Reports. Private and frozen per version (
pit promo report ID --md); shareable at/r/<token>(HTML,.md,.json) without the operator's costs. Unavailable is not zero. Late data makes a new version and voids unsent drafts that quoted the old one.pit promo csv IDcompares the campaign. - Drafts and sending. Each report gets one draft from its own numbers: an introduction unless a contact is on record (then a follow-up), an honest note when nothing was measured, blocked when there is no address. Sending is off until
sendAuthorized;deliverre-checks the window, the report version and upstream suppression at send time (unknown means no) and keeps one delivery per recipient, message version and window. - Surfaces. API
/api/v1/promotion/*(BearerPIT_ADMIN_TOKEN), dashboard/admin/promo(a signed-in pit.world admin),pit promo ...,pit promo tui ID, andpromo_*MCP tools whenPIT_ADMIN_TOKENis set.
One account for every pit.world site: social. and bbs.
Every Moshpit name gets two more addresses, with nothing to set up:
social.<name>.pit.world: the name's social feed. Posts from the AT Protocol network tagged with the name's niche (family.ancestryfollows #genealogy, #familyhistory, #ancestry, ...), read from every relay we can reach at once (Bluesky's and the independent ones: atproto.africa, relay.fire.hose.cam, relay.upcloud.world, relay.waow.tech), plus posts by members. Each is also an AT Protocol feed generator (did:web:social.<name>.pit.world). It is the pit-social service; pit.world forwards the host to it.bbs.<name>.pit.world: the name's bulletin board, a tsbb board made on its first visit (deploy/pit-bbs-provision), its own database, forums seeded, the pit.world admins as its administrators.
Both sign people in with their pit.world account: sign in once at pit.world/signin with CoinPay (OAuth 2.1, code + PKCE) and every board and feed signs you in through pit.world (/bridge/authorize, /bridge/token, @profullstack/bridges), silently when you are already signed in. Nobody makes an account per site. /account shows the sites you use, your CLI tokens, sign out and delete.
- A site's client id is its host; its secret is
base64url(HMAC-SHA256(PIT_BRIDGE_KEY, host)), so a new name works the moment it exists and no site is registered by hand.PIT_BRIDGE_CLIENTSadds exact extra hosts (our own apps on the relay). - Accounts link by CoinPay
sub(the person's CoinPay DID) only, never by email (CoinPay reports every email unverified). - CLI:
pit login(OAuth 2.1, public client, loopback redirect, PKCE S256, RFC 8252),pit whoami,pit logout,pit social <name>,pit bbs <name>. API:GET /api/v1/mewithAuthorization: Bearer pw_…. - Certificates: one Let's Encrypt certificate per name covers
<name>,social.<name>andbbs.<name>(deploy/pit-proxy-cert). - Settings:
PIT_COINPAY_CLIENT_ID,PIT_COINPAY_CLIENT_SECRET(CoinPay client with callbackhttps://pit.world/api/v1/coinpay/oauth/callback),PIT_BRIDGE_KEY,PIT_ADMIN_SUBS,PIT_SOCIAL_URL(defaulthttp://127.0.0.1:8794,off),PIT_BBS(off),PIT_BBS_MAX(default 100).
Credit codes and invites
- Credit codes (@profullstack/redeem-credits) grant
server_months: months of the $5-a-month Moshpit server sold on /start. Redeem on/account("Have a code?"),POST /api/v1/redeemorpit redeem CODE. A month is spent on/accountthrough the same order a paid month makes (names, username, SSH key to whoever sets up servers,PIT_BUILD_NOTIFY), marked as paid with a credit; if the order cannot be sent the month comes back. Names under our endings are already free, so codes never grant names. Mint on the box:bun $(readlink -f node_modules/.bin/redeem-credits) mint --db ~/.local/share/pit-world/accounts.db --unit server_months --amount 1 --label "who it is for". - Invites (@profullstack/affiliates): 3 per account, single use, 30 days, made on
/account/invites,POST /api/v1/invitesorpit invite./i/<code>sends a person through sign-in, and only a brand-new account spends it. An accepted invite gives nothing beyond the way in. - Affiliate links:
pit.world/join?ref=CODE(and/?ref=CODE) attributes a new account to the member, first touch, once. Promoter codes stay with the promoter program. - No cookie: the invite or ref rides the sign-in
nextURL. Tablescredit_*andaff_*live in accounts.db.
Privacy, by construction
- nginx writes no access log for the site (
ACCESS_LOG=offinbin/install.conf), and the app logs nothing per request. - No cookies to search. The server strips
Set-Cookiefrom every response except the sign-in and account routes, which set one only after you press Sign in. - Rate limiting keys on an HMAC of the IP under a secret regenerated every hour, in memory only.
- Anonymous votes and form limits use a salted, hashed device fingerprint (@profullstack/browser-fingerprint), used only to stop one device voting many times or flooding a form. The fingerprint itself is never stored, only
HMAC(secret, stable components). A result vote keeps a keyed hash of its search, never the words. See Votes. - Searches you vote on are counted, unlinked.
vote_phrasesholds the phrase, the day and a number, nothing about the voter. A search with no vote keeps nothing. Public at/api/voted-searchesafter three votes. - Identical searches are cached in memory for ten minutes to avoid paying twice; the cache holds words and results, nothing about who asked, and never touches disk.
- Strict CSP (
default-src 'none', same-origin scripts and styles only),Referrer-Policy: no-referrer, results link straight to the site.
The page says the same in plain words: pit.world/privacy.
pit.world MCP 질문
pit.world MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add pit-world -- npx -y pitworld를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
pit.world MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
이 MCP server를 사용하려면 API 키가 필요한가요?
아니요, 이 server는 API 키 없이 웹 검색 기능을 제공합니다.
검색 엔진은 개인정보를 어떻게 처리하나요?
검색 엔진은 쿼리 로그, 쿠키, 프로필 또는 트래커를 저장하지 않으며 JavaScript를 요구하지 않습니다.
Moshpit 이름을 통해 무엇을 할 수 있나요?
moshpit_resolve tool을 사용하여 'chovy.hacker'와 같은 Moshpit 이름을 해석하고 연결된 위치를 확인할 수 있습니다.