Homespun
ใช้ทำอะไรได้
ยังไม่มีคำอธิบายภาษาไทย ดูข้อเท็จจริงด้านล่าง หรือเปิดคำอธิบายต้นฉบับจากผู้ทำ
- ต่อแบบ คลาวด์หรือติดตั้งในเครื่อง
- บัญชีหรือคีย์ คลาวด์: ไม่ต้องใส่คีย์ · ในเครื่อง: ต้องมี HOMESPUN_API_KEY, HOMESPUN_REGISTER_SECRET
- หมวด เครื่องมือนักพัฒนา
คำอธิบายต้นฉบับจากผู้ทำ (อังกฤษ)
Deploy a multi-user web app from your agent: hosting, auth, database, and permissions.ติดตั้ง
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ผลตรวจผ่าน 5/5 · สิ่งที่คุณถามผ่านเซิร์ฟเวอร์ของผู้ทำ (homespun.dev)
ขั้นแรก: คุณใช้ AI ตัวไหน
เลือกแอปที่คุณใช้ ขั้นตอนจะขึ้นด้านล่าง
ต่อกับ Claude ได้ · ประมาณ 2 นาที
ไม่ต้องใช้คีย์ ไม่ต้องลงโปรแกรม · ตั้งครั้งเดียวที่ claude.ai หรือแอปบนคอม แล้วใช้ในแชตได้ · บัญชีฟรีเพิ่มได้ 1 ตัว · แผน Team/Enterprise ให้เจ้าของ (Owner) เป็นคนเพิ่ม
เปิดหน้า Connectors ของ Claude
CustomizeConnectors
กด “+ Add” → “Add custom connector” แล้วกรอก 2 ช่องนี้
คัดลอกจากที่นี่ไปวางในช่องชื่อเดียวกันบนหน้าจอของ Claude แล้วกด Continue
Name · ชื่อHomespunRemote MCP server URL · ที่อยู่https://homespun.dev/mcpหัวข้อ Authentication ปล่อยตามที่ Claude ตรวจเจอ แล้วกด Add
เปิดใช้ในแชต
+ConnectorsHomespun
ลองเลย
ใช้ Homespun บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า Claude บอกว่ากำลังใช้ Homespun หรือมีชื่อเครื่องมือของ Homespun ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ต่อกับ ChatGPT ได้ เฉพาะแผนองค์กร
ใช้ได้กับ ChatGPT Business, Enterprise หรือ Edu บนเว็บ และแอดมินหรือเจ้าของ workspace ต้องเป็นคนเพิ่ม · ถ้าใช้ Free, Plus หรือ Pro: ChatGPT แผนของคุณยังต่อ MCP เองไม่ได้
เปิดหน้าเพิ่ม MCP ของ ChatGPT บนเว็บ
Plugins+Add custom MCP server
กรอกชื่อและที่อยู่
ใส่ชื่อ แล้ววางที่อยู่ใต้ Connection ติ๊กยอมรับคำเตือน แล้วกด Create as a plugin
Name · ชื่อHomespunConnection · ที่อยู่https://homespun.dev/mcpเลือก Homespun ในแชต
เปิดแชตใหม่แล้วเลือก Homespun จากรายการปลั๊กอินก่อนพิมพ์
ลองเลย
ใช้ Homespun บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า ChatGPT บอกว่ากำลังใช้ Homespun หรือมีชื่อเครื่องมือของ Homespun ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ OpenAI เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ต่อกับ Claude Code ได้ · ประมาณ 2 นาที
ไม่ต้องใช้คีย์ ไม่ต้องลงโปรแกรม
เปิด Terminal
Mac: กด Command+Space พิมพ์ Terminal · Windows: เปิด PowerShell
วางคำสั่งนี้แล้วกด Enter
claude mcp add --transport http --scope user homespun https://homespun.dev/mcpพิมพ์ /mcp ใน Claude Code
ต้องเห็น Homespun ในรายการและขึ้นว่าเชื่อมต่อแล้ว
ลองเลย
ใช้ Homespun บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า Claude Code บอกว่ากำลังใช้ Homespun หรือมีชื่อเครื่องมือของ Homespun ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ต่อกับ Cursor ได้ · ประมาณ 2 นาที
ไม่ต้องใช้คีย์ ไม่ต้องลงโปรแกรม
เปิดแชตของ AI ใน Cursor โหมด Agent
ลองเลย
ใช้ Homespun บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า Cursor บอกว่ากำลังใช้ Homespun หรือมีชื่อเครื่องมือของ Homespun ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Cursor เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ต่อกับ VS Code ได้ · ประมาณ 2 นาที
ไม่ต้องใช้คีย์ ไม่ต้องลงโปรแกรม
เปิดแชตของ AI ใน VS Code โหมด Agent
ลองเลย
ใช้ Homespun บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า VS Code บอกว่ากำลังใช้ Homespun หรือมีชื่อเครื่องมือของ Homespun ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ VS Code เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
โปรแกรมอื่นที่ใช้ MCP ได้ เช่น Windsurf, Zed หรือ Gemini CLI มีวิธีเพิ่มต่างกัน ดูวิธีของแต่ละตัวในหน้ารวมโปรแกรม
ที่อยู่สำหรับโปรแกรมที่ต่อผ่านเว็บ
https://homespun.dev/mcpค่าตั้งแบบไฟล์ JSON อยู่ในหัวข้อ “สำหรับคนเขียนโค้ด” ด้านล่าง
สำหรับคนเขียนโค้ด: คำสั่ง Terminal และค่าตั้ง JSON
ต่อผ่านเว็บ
Claude Code
claude mcp add --transport http --scope user homespun https://homespun.dev/mcpCursor (~/.cursor/mcp.json)
{
"mcpServers": {
"homespun": {
"url": "https://homespun.dev/mcp"
}
}
}VS Code (mcp.json)
{
"servers": {
"homespun": {
"type": "http",
"url": "https://homespun.dev/mcp"
}
}
}ติดตั้งในเครื่อง
Claude Code
claude mcp add --scope user homespun --env HOMESPUN_API_KEY='ใส่ค่าของคุณ' --env HOMESPUN_URL='ใส่ค่าของคุณ' --env HOMESPUN_AGENT_NAME='ใส่ค่าของคุณ' --env HOMESPUN_REGISTER_SECRET='ใส่ค่าของคุณ' -- npx -y @homespunapps/mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"homespun": {
"command": "npx",
"args": [
"-y",
"@homespunapps/mcp"
],
"env": {
"HOMESPUN_API_KEY": "ใส่ค่าของคุณ",
"HOMESPUN_URL": "ใส่ค่าของคุณ",
"HOMESPUN_AGENT_NAME": "ใส่ค่าของคุณ",
"HOMESPUN_REGISTER_SECRET": "ใส่ค่าของคุณ"
}
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"homespun": {
"command": "npx",
"args": [
"-y",
"@homespunapps/mcp"
],
"env": {
"HOMESPUN_API_KEY": "ใส่ค่าของคุณ",
"HOMESPUN_URL": "ใส่ค่าของคุณ",
"HOMESPUN_AGENT_NAME": "ใส่ค่าของคุณ",
"HOMESPUN_REGISTER_SECRET": "ใส่ค่าของคุณ"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"homespun": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@homespunapps/mcp"
],
"env": {
"HOMESPUN_API_KEY": "ใส่ค่าของคุณ",
"HOMESPUN_URL": "ใส่ค่าของคุณ",
"HOMESPUN_AGENT_NAME": "ใส่ค่าของคุณ",
"HOMESPUN_REGISTER_SECRET": "ใส่ค่าของคุณ"
}
}
}
}ค่าที่ต้องใส่เอง
HOMESPUN_API_KEYความลับ envHomespun agent API key. If unset, the server auto-registers a fresh agent against the relay on first use and saves the key to the shared CLI store (~/.config/homespun/config.json).HOMESPUN_URLenvHomespun relay base URL. Defaults to the hosted relay https://homespun.dev; set this to point at a different relay.HOMESPUN_AGENT_NAMEenvDisplay name for the auto-registered agent on the relay.HOMESPUN_REGISTER_SECRETความลับ envRegistration secret, required only for relays running REGISTRATION_MODE=secret.
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
สรุป
- ดาว GitHubi
- 1 (ดาวรวมทั้งรีโป)
รีโปนี้มี MCP หลายรายการ ดาวนับในอันดับแค่รายการเดียว - ดาวน์โหลดต่อสัปดาห์i
- 73/สัปดาห์
- โดเมนที่ยืนยัน
- ✓ homespun.dev
- การเชื่อมต่อ
- บนเครื่องหรือคลาวด์
- ช่องทาง (transport)
- stdio, streamable-http
- รุ่นล่าสุดi
- 1.6.98
- ส่งเข้า registryi
- 17 ต.ค. 2569
- แก้โค้ดล่าสุดi
- 20 ต.ค. 2569
- ผู้ทำ
- homespunapps
- แพ็กเกจ
npm: @homespunapps/mcp- เว็บผู้ทำ
- homespun.dev
- สถานะใน registry
- ใช้งานอยู่
ใช้กับโปรแกรมไหนได้
ดูจากแบบการต่อของ server ตัวนี้ และเอกสารของผู้ทำโปรแกรมแต่ละตัว ตรวจเมื่อ 10 พ.ย. 2569
ต่อผ่านคลาวด์ได้ใน
ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast
ติดตั้งบนเครื่องได้ใน
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
คู่มือที่เกี่ยวข้อง
ทำอะไรได้บ้าง
ชื่อและคำอธิบายเครื่องมือตามที่ server ตอบมาเมื่อ 7 พ.ย. 2569 ผู้ทำเป็นคนเขียน ไม่ใช่เรา แสดงเป็นข้อความล้วน
document_uploadCreate a short-lived, byte-scoped upload session for an HTML document authored in a native editor or shell. The caller supplies the exact UTF-8 byte length and SHA-256 hex digest as { size, sha256, app_id? }. The returned `upload_url` accepts a PUT of those raw UTF-8 bytes with `
deploy_appDeploy a v2 app: an HTML document plus a capability manifest, hosted at its own URL. For sandbox-authored files in hosted chat, native file editing and shell tools can create and validate the document. Its UTF-8 byte length and SHA-256 go to `document_upload`; the exact raw bytes
list_rowsList rows in a v2 app's mutable collection. This is also how a collection's current state is polled, since MCP has no streaming: pass the prior next_cursor as `since` to fetch only rows that are new or changed. Returns { rows, next_cursor, has_more }.
count_rowsThe live row count of a v2 app's collection (spec B4, issue #1056), a whole-scope total with no filter and no paging. Gated by the collection's countRead opt-in, independent of its read list: a collection that opted in returns its count even to a caller who cannot list the rows (
get_rowFetch a single row by its key from a v2 app collection, through a dedicated relay route rather than a client-side scan. Returns { row }, or an isError row_not_found.
add_rowCreate a row in a v2 app's collection, or return the existing row when `key` is already present (deduped:true). Row creation goes through this tool; there is no separate strict-create verb. Omit `key` to add a new row with a server-generated key, or pass `key` to ensure a row exi
update_rowUpdate an existing row in a v2 app's collection, replacing its data. Gated by the collection's `update` role list when it declares one, and by its `write` list otherwise, so a collection that scopes updates to the row's `creator` refuses an edit on someone else's row. Pass if_mat
delete_rowSoft-delete a row from a v2 app's collection. Recoverable: the row is tombstoned, not destroyed, and restore_row brings it back for 30 days (see list_deleted_rows). A watcher sees the deletion live as op:delete on the change feed. Pass if_match for an optimistic-locked delete. Re
list_deleted_rowsList a collection's recently deleted rows: the recovery bin. Deleting a row is a soft delete, so it can be restored with restore_row until recoverable_until passes (30 days after deletion by default). Owner or agent only, and deliberately independent of the collection's read perm
restore_rowRestore a soft-deleted row, undoing delete_row. The row comes back with its original data and creator, its version bumped. Find restorable keys with list_deleted_rows. Owner or agent only. Fails with restore_expired if the row was purged, or restore_conflict if another live row t
get_feed_eventsPoll a v2 app's change feed for what has happened: row creates, updates and deletes, from any writer, agent or human. It is the long-poll analogue of `homespun apps watch`, since MCP has no streaming. The loop is: call with no `since` first, process the returned entries, keep the
appsThe v2 app lifecycle apart from creation and redeploy, which deploy_app covers. Actions: list returns the owning human's apps; show returns full detail including manifest, timezone and has_share_token; audit is a read-only security review of every app the caller owns, computed fr
membersA v2 app's membership (auth spec section 6): who besides the owner can sign in to a private app and write to member-scoped collections. Actions: add invites or attaches a member by email, attaching immediately when the email already has a Human and otherwise sending a magic-link
grantsA v2 app's grant links (M5). A grant link is a capability URL that confers a declared custom role (x-homespun-manifest.roles) on a stable per-holder anonymous identity, so a holder's own rows are isolated by author/:own scoping. A grant does not escalate to owner, member or agent
transferA v2 app's ownership transfer (issue #1847): handing the app, and the quota and billing responsibility that come with it, to a different human. This is two steps, and `start` completing is only the first one. start mints a pending offer and emails the named person an accept link;
credentialsA v2 app's scoped service credentials (#1354, #1355): the bearer token an app owner points a backend they host themselves at, so their own server can read and write the app's data without holding the owner's full authority. Effective permission is always the intersection of the a
connectionsA v2 app's Connections: the stored credential (a static header token, or a full generic OAuth2 client) a manifest webhook rule authenticates its delivery target with, bound to a host so the credential can never be exfiltrated to another one. There is no update action: change a co
ingestA v2 app's inbound catch-hooks (inbound-webhooks). A catch-hook lets an external system such as Stripe, Zapier, Make, Home Assistant or an email router POST JSON to a secret URL that writes into a declared collection, so the app receives data with no agent online. Hooks are decla
attachmentsBinary attachments (images, PDFs, audio, video) referenced from event payloads and input_data via `format: homespun-attachment-id`. Actions: upload, fetch, presign, finalize, download, show, list, delete, mint_token, revoke_token, list_tokens. Choosing an upload path matters for
tasteThe agent's UI taste notes: a short freeform markdown document of presentation preferences gathered from human feedback, such as 'denser layout' or 'no rounded corners'. Reading it before generating or revising an app is what carries earlier feedback into new output. Actions: get
keyThe calling agent's API key. Actions: list returns key info (agent_id, key_prefix, timestamps); mint creates a sibling API key for the caller's own agent identity with the same scope and ownership and returns its raw value once, which is how an MCP-driven agent hands a CLI or chi
feedbackReports a problem with homespun itself to the relay operator, and lists what this agent has already reported. A report is the operator's only visibility into a failure that happened inside an agent's session, so an unreported one is a failure nobody can fix. The channel covers ho
agentAgent identity and binding. Actions: whoami returns the resolved relay URL, the active profile and whether a key is configured, with no network call and no secrets; claim binds this agent to a human using a one-shot claim code from their Settings UI, and is one-way; logout clears
communityPublishing an app as a community template, taking your own listing back down, installing a template, and, for relay operators, reviewing submissions. Actions: publish, unpublish, get_config_contract, install, list_pending, get_submission, approve, reject, set_trust_level. publish
publisherThe caller's community publisher identity: the @-handle and public profile shown in the template gallery. Actions: get returns the profile, including the handle, whether it has been claimed, tenure, and the rating and template counters; claim sets the handle from a lowercase 3-to
reviewRatings and reviews of community templates, responses from a template's own publisher, and, for relay operators, moderation. Actions: create leaves a 1-to-5 star rating and an optional written body on a template the caller has installed, identifying it by `template` (\" / \") or
get_skillThe relay's SKILL.md, a generated guide to the Homespun workflow covering events versus records, the schema grammars and the poll loop. Needs no API key. Useful when working out how the other tools fit together, or to refresh a cached copy. Pass version_only:true to return just t
ผลตรวจเบื้องต้นi
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 12 พ.ย. 2569
- ✓ ผ่าน
ตัวตนผู้ทำตรงกับ repo
ชื่อใน registry ยืนยันโดเมน homespun.dev แล้ว (registry ตรวจความเป็นเจ้าของโดเมน)
- ✓ ผ่าน
ยังมีคนดูแล
มีการแก้โค้ดล่าสุด 23 วันที่ผ่านมา
- ✓ ผ่าน
มีสัญญาอนุญาต (license)
ใช้ MIT
- ✓ ผ่าน
- – ไม่เกี่ยว
ล็อกอินแบบ OAuth
ไม่ต้องล็อกอิน
- ✓ ผ่าน
คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง
อ่านคำอธิบายเครื่องมือ 27 ตัวแล้ว ไม่พบคำสั่งแอบแฝงถึง AI
พูดคุย
ถาม แชร์เคล็ดลับ หรือแจ้งว่าใช้ไม่ได้ เรียงตามที่คนกดว่ามีประโยชน์
ยังไม่มีใครโพสต์ ถามหรือแชร์เป็นคนแรกได้เลย
ข้อความในส่วนนี้เขียนโดยผู้ใช้ ไม่ใช่ทีม PopNx
รีวิวจากผู้ใช้
ยังไม่มีรีวิว
เทียบกับตัวอื่นในหมวด เครื่องมือนักพัฒนาi
- ดาวมากกว่า 0% ของอีก 5793 ตัวในหมวดนี้
- ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 53% ของอีก 5793 ตัวในหมวดนี้
- ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 5793 ตัวในหมวดนี้
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
คำถามที่พบบ่อย
Homespun ปลอดภัยไหม?
จากการตรวจเบื้องต้นของเรา ผ่าน 5 จาก 5 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใช้กุญแจหรือรหัสอะไรบ้าง?
ต้องใส่ค่าเหล่านี้: HOMESPUN_API_KEY, HOMESPUN_REGISTER_SECRET
ตัวนี้รันบนเครื่องหรือบนคลาวด์?
ได้ทั้งสองแบบ จะลงในเครื่องหรือต่อผ่านคลาวด์ก็ได้
ยังมีคนดูแลอยู่ไหม?
repo บน GitHub มีการแก้โค้ดล่าสุด 23 วันที่ผ่านมา และส่งรุ่นล่าสุด (1.6.98) เข้า registry 26 วันที่ผ่านมา
ใช้กับโปรแกรมไหนได้บ้าง?
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT แผน Business ขึ้นไป
ตัวอื่นในหมวดเดียวกัน
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Serena MCP: the IDE for your agent
A powerful toolkit for coding, providing semantic retrieval and editing capabilities.
README จากผู้ทำ
เปิดอ่าน README
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
@homespunapps/mcp
A thin stdio [Model Context Protocol](https://modelcontextprotocol.io) server for Homespun. It lets any MCP client (Claude Desktop, Cursor, Windsurf, Cline, your own host) deploy a real multi-user web app in one call and keep operating its data afterwards: hosting on its own URL, magic-link identity, a shared realtime database with per-role permissions, email notifications and file attachments, all included.
It is a wrapper, not a reimplementation: all relay I/O goes through @homespunapps/core, and config is shared with the homespun CLI (~/.config/homespun/config.json), so the CLI and this server use the same agent identity.
Runtime requirement: Node.js >= 20
The binary is homespun-mcp. It speaks MCP over stdio and is meant to be launched by an MCP host, not run interactively.
Quickstart
No global install needed: point your MCP client at npx @homespunapps/mcp. On first use, if no API key is configured, the server auto-registers a fresh agent against the hosted relay and saves the key to the shared CLI store; nothing else to set up.
Claude Desktop
Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": { "homespun": { "command": "npx", "args": ["-y", "@homespunapps/mcp"] } } }
To pin an existing agent key instead of auto-registering, add an env block:
{
"mcpServers": { "homespun": { "command": "npx", "args": ["-y", "@homespunapps/mcp"], "env": { "HOMESPUN_API_KEY": "hs_..." } } } }
Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": { "homespun": { "command": "npx", "args": ["-y", "@homespunapps/mcp"], "env": { "HOMESPUN_API_KEY": "hs_..." } } } }
Generic MCP host
Any client that takes a command + args + env works the same way:
{
"mcpServers": { "homespun": { "command": "npx", "args": ["-y", "@homespunapps/mcp"], "env": { "HOMESPUN_URL": "https://homespun.dev", "HOMESPUN_API_KEY": "hs_..." } } } }
If you'd rather install it globally (npm i -g @homespunapps/mcp), use "command": "homespun-mcp" with no args.
Configuration
All environment variables are optional; the defaults target the hosted relay and auto-register on first use.
| Variable | Default | Purpose |
|---|---|---|
HOMESPUN_URL | https://homespun.dev | Relay base URL. Set to point at a different relay. |
HOMESPUN_API_KEY | _(auto-registered)_ | Agent API key. If unset, the server registers an agent on first use and saves the key to ~/.config/homespun/config.json (shared with the CLI). |
HOMESPUN_TOKEN | _(none)_ | Alias for HOMESPUN_API_KEY (for hosts that name secrets *_TOKEN). HOMESPUN_API_KEY wins if both are set. |
HOMESPUN_AGENT_NAME | homespun-mcp | Display name for the auto-registered agent. |
HOMESPUN_REGISTER_SECRET | _(none)_ | Registration secret, only for relays running REGISTRATION_MODE=secret. |
Config precedence mirrors the CLI: env vars win over the saved profile, which falls back to the default relay URL.
Tools
This server has full parity with the [`homespun` CLI](https://www.npmjs.com/package/@homespunapps/cli): every capability the CLI exposes is reachable here.
MCP tools are request/response, so there is no long-lived "watch". To see what changed you poll get_feed_events with the cursor from the previous call (pass wait to long-poll, 0 to 30 seconds); to watch one collection, re-call list_rows with the prior next_cursor as since. Each tool description spells out the pattern for the model.
To keep the tool list compact (a flat 50+ tools would bloat client context and degrade selection), hot-path nouns stay discrete tools while multi-verb management nouns collapse into one tool each with a required `action` enum.
Hot-path (discrete) tools
| Tool | What it does |
|---|---|
deploy_app | Deploy a v2 app: an HTML document plus a capability manifest, hosted at its own URL. Omit app_id to create, pass it to redeploy in place (same URL, same data, same members). Takes html or html_path, optional assets, visibility, slug, dry_run, force. |
list_rows | List rows in a collection. Doubles as the poll for a collection's current state: pass the prior next_cursor as since. |
get_row | Fetch one row by key (a dedicated relay route, not a client-side scan). |
add_row | Create a row, or return the existing one if key is already present (deduped: true), or row_not_found when the collection's read list does not reach that row for you. The only create-shaped verb. |
update_row | Replace an existing row's data. Optional if_match optimistic lock. |
delete_row | Soft-delete a row. Optional if_match. |
get_feed_events | Poll the app's change feed for row creates/updates/deletes from any writer, human or agent. Optional wait (0-30s) long-poll. |
Consolidated tools (one tool, required action)
| Tool | Actions |
|---|---|
apps | list · show · update · share_link_rotate · delete · wake · domain_set · domain_status · domain_remove |
members | add · list · set_role · remove · roles |
grants | mint · list · revoke |
ingest | list · rotate · set_signing_secret · clear_signing_secret |
attachments | upload · fetch · presign · finalize · download · show · list · delete · mint_token · revoke_token · list_tokens |
taste | get · set · clear |
key | list · mint · revoke |
feedback | create · list |
agent | whoami · claim · logout |
community | publish · unpublish · get_config_contract · install · list_pending · get_submission · approve · reject · set_trust_level |
publisher | claim · get · update |
review | create · respond · report · remove · unhold |
Single-purpose tools
| Tool | What it does |
|---|---|
get_skill | Fetch the relay's auto-updating guide (unauthenticated) to self-teach the workflow. |
Attachments take and return file paths: upload reads an absolute file_path; download writes to an absolute out_path (or returns base64 when omitted). For real media, presign then PUT then finalize avoids moving bytes through the tool call.
One data primitive. Everything an app stores is a collection: a named, mutable, queryable set of rows, each with a key, a data payload, an optimistic-lock version and an author. Every write also lands on the app's ordered change feed. Declare a collection appendOnly: true in the manifest when you want a journal (an audit trail, a submission log) rather than mutable state.
Not exposed (and why)
- The CLI's
config showis replaced byagent→whoami(resolved relay URL, active profile, and whether a key is set; no secrets). agent registeris not a tool. The server auto-registers on first use and shares the CLI's key store;agent→claimbinds it to a human afterwards.demo(the interactive terminal tour) and the CLI self-updater are terminal concerns with no agent use; omitted.
Typical flow
deploy_appwith your HTML plus anx-homespun-manifestdeclaring the app's collections and which roles may read, write and delete each. Returns{ app_id, url, ... }.- Give the
urlto the owner, and invite anyone else withmembers(action: add). get_feed_eventswithwait: 25in a loop, passing the priorcursorassince, to see what people do.- Read and write the same data with
list_rows/add_row/update_row, and ship changes withdeploy_appagain, passingapp_id.
MCP registry
server.json (in this package) carries the metadata for the official MCP registry. Publishing there is a follow-up step for the maintainer.
License
MIT, see LICENSE.