Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
The Bee's Knees — a monetized multiplayer race to the queen, on Tollbooth DPYC
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
ใช้ได้ทั้ง Claude บนเว็บ แอปคอมพิวเตอร์ และมือถือ:
https://beesknees-mcp.fastmcp.app/mcpพิมพ์คำสั่งนี้ใน Terminal
claude mcp add --transport http beesknees https://beesknees-mcp.fastmcp.app/mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"beesknees": {
"url": "https://beesknees-mcp.fastmcp.app/mcp"
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"beesknees": {
"type": "http",
"url": "https://beesknees-mcp.fastmcp.app/mcp"
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:
https://beesknees-mcp.fastmcp.app/mcpชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
server ให้ล็อกอินก่อนจึงจะแสดงรายการเครื่องมือ
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub lonniev ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตอบกลับใน 322 ms (HTTP 401)
ประกาศวิธีล็อกอินแบบ OAuth ให้โปรแกรม AI พาไปล็อกอินเอง
ยังไม่ได้ตรวจ เราอ่านรายการเครื่องมือตอนตรวจ endpoint
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 3 จาก 3 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนคลาวด์ของผู้ทำ ต่อผ่านอินเทอร์เน็ตได้เลย ไม่ต้องลงโปรแกรม แต่ข้อมูลที่ส่งให้จะผ่านเซิร์ฟเวอร์ของผู้ทำ
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.4.0) เข้า registry 18 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Commonly
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Read Commonly pods and post as a Commonly agent you create, with a token from your Commonly account.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
A race to the queen, monetized with Tollbooth DPYC™ Bitcoin Lightning micropayments — and run for the benefit of pollinators.
Buy a drone a seat. Fly it to a flower, carry the pollen home through the hive wall, then tunnel inward. The first bee to reach a queen takes the round. Most of what the round collects goes to pollinator welfare; the winner and the operator each take a small share.
YOU (operator, human in the loop)
│ │ │ set & tune prices │ drive credential intake ▼ ▼ ┌───────────────┐ ┌──────────────────────────────────────────────┐ │ Pricing Studio│ prices │ The Bee's Knees — OPERATOR MCP │ │ (iOS) ├───────▶│ FastMCP · deployed on Horizon │ └───────────────┘ Neon │ ┌────────────────────────────────────────┐ │ │ │ geometry · board · match · settlement │ │ Patron (Citizen) │ │ @runtime.paid_tool(FROZEN_UUID) tools │ │
A hive is round because the field has to narrow. Ring 0 is the queen's chamber and ring 14 is the hive wall. Cells scale with circumference, so the wall holds 29 and the last ring before the chamber holds six. Everyone starts spread out and converges into a scrum — 226 cells of comb in all.
Outside the wall the meadow is a square lattice, sixteen cells to a side less the squares the hive covers, and the wall's doors are the only way between the two. A bee crosses the meadow toward a hive it can see from anywhere; inside, the rings funnel every bee toward one cell.
Movement is inward, outward, or sideways along a ring. Sideways is what makes it a maze rather than a set of lanes: it is how you slide onto somebody else's open shaft, or step out from under a collapse. A bee may not move inward twice in a row — it steps sideways between — so a straight radial shaft does not pay, and a small share of the comb is impassable.
**Cut your own shaft — slow, and open to everyone the moment it exists.
Or ride one somebody else paid for — fast, and they can bring it down on you.**
Three motions carry it. fly moves through open ground. dig cuts fresh comb and costs several cooldowns rather than one. seal buries an open cell so the bees behind must cut it again.
A bee acts once per cooldown, measured on the clock, so no amount of spending buys a faster bee. What spending buys is interference.
Five hives of twelve, and a match starts the moment any hive holds eight. Seats go into the emptiest hive, so the five fill evenly.
That is a measured decision, not a taste one. Racing fifty near-identical bees to a single queen is close to a lottery: first-past-the-post among fifty is an extreme-value draw, and those are settled by variance rather than by skill. The batch runner in sim/ puts a good strategy at 1.4x uniform with fifty bees in one hive and 2.1x with twelve. Winning your own hive is skill-weighted; which of the five leaders finishes first is a fair draw, so the signal survives.
node sim/run.ts --rounds 400 --bees 12 # re-measure before changing a rule
Most of what a round collects goes to pollinator conservation. The default beneficiary is [Pollinator Partnership](https://www.pollinator.org/) — chosen over the honeybee-focused charities on purpose, because managed honeybees are livestock and are not the ones in trouble; native and wild pollinators are, and they are what Pollinator Partnership covers.
Each settled match records its split: 80% to the charity and 10% each to the winner and the operator, with any rounding going to the charity. The operator pays the shares out over Lightning, and nothing pays on a timer — a payment leaves when the operator asks for it.
beesknees_pay_charity sends everything owed to the charity in one payment to its Lightning address. The share accrues match by match and settles as a batch, because a single match's share can be smaller than the fee to route it.beesknees_pay_out pays one settled match's charity or winner share.beesknees_treasury shows what the wallet can send against what is owed.beesknees_set_payout). Donating is the default; keeping it needs a Lightning address.beesknees_settlement_history serves what every settled match paid and to whom, and beesknees_payout_history lists every payment attempted, failures included. Both are free, because a claim about where the money went that costs money to check is not a claim anybody should believe.
The beneficiary is stored, not compiled in, so it can change: the operator names it, its website and its Lightning address with beesknees_set_charity, and beesknees_charity shows it to anyone, free. Every settlement records the beneficiary it actually paid, so history stays true even when the current one changes — a patron who played because of where the money went can always check where it went.
| Path | What lives there |
|---|---|
src/beesknees_mcp/geometry.py | The board. Pure arithmetic, no identity, no billing |
src/beesknees_mcp/server.py | Frozen tool catalog + OperatorRuntime bootstrap |
src/beesknees_mcp/board_store.py | The shared board and the settlements, in Neon |
src/beesknees_mcp/payouts.py | Sending the charity and winner shares over Lightning |
scheduler-worker/ | Cloudflare cron that asks the hives to advance every minute (beesknees_check_now, free, no secrets) |
modal_app.py | The sim bees: seats just enough ordinary, coupon-funded bees to start a thin hive |
frontend/src/game/ | The same rules in TypeScript — the client's engine |
frontend/src/lib/polar.ts | Cell ⇄ wedge, and the tap hit test |
frontend/src/lib/stageMath.ts | What changed between two looks at a hive — the WebGL board's diff |
frontend/src/art/ | The bee, the daisy, the crown as shapes — painted for the board, s for the page |
frontend/src/stage/ | The focused hive in WebGL (PixiJS). Reached only by dynamic import |
sim/run.ts | Batch runner: is this a game or a lottery? |
The rules exist in three copies — this Python, the client's TypeScript, and the renderers — and nothing at runtime reports that they have drifted; the game simply starts rejecting moves a player can see are legal. tests/test_geometry.py and frontend/src/game/rules.test.ts assert the same invariants on purpose, so a drift fails a build instead of a match.
nak key generate); the nsec is the single env var the server needs (TOLLBOOTH_NOSTR_OPERATOR_NSEC).btcpay_host, btcpay_api_key, btcpay_store_id via beesknees_request_credential_channel. Never as env vars, never in code.fastmcp.json is already wired.Get [Pricing Studio](https://github.com/lonniev/tollbooth-pricing-studio) (iOS). It reads and writes the pricing model live in Neon, so prices never live in code — surge, happy-hour, loyalty discounts and free trials are the thing a flat paywall can never give you.
frontend/ carries the Bee's Knees app, deployed to Cloudflare Pages with functions/mcp.js proxying /mcp same-origin. It runs a solo mode against the local engine — the whole match filled with bots but one seat — so the interface can be played before anybody has paid for anything.
The focused hive is drawn in WebGL on top of an SVG first paint. The SVG is what the server-side smoke and prerender checks see, what a browser shows on its first frame, and what the game falls back to if WebGL is lost; the stage takes over once PixiJS has loaded and drawn. Nothing about the game lives in the stage — it renders what both engines already compute.
uv venv --python python3.12 # coincurve has no 3.14 wheel
uv pip install -e ".[dev]" ruff check . && pytest -v python -m beesknees_mcp.server # runs the validate_operator_tools guard
cd frontend && npm install npm run dev # solo mode on http://localhost:5180 npm test && npm run smoke # invariants, then a real first paint (the SVG one)
Apache-2.0