Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Author and validate Calaf workspace seeds against the app's real importer. No account needed.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
https://calaf.ai/api/mcp在终端中运行这条命令
claude mcp add --transport http seeds https://calaf.ai/api/mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"seeds": {
"url": "https://calaf.ai/api/mcp"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"seeds": {
"type": "http",
"url": "https://calaf.ai/api/mcp"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
https://calaf.ai/api/mcp菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
我们还没有读取这个服务器的工具列表;我们会轮流检查各个端点。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过域名 calaf.ai 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
尚未检查;我们会轮流检查各个端点
尚未检查;我们会轮流检查各个端点
尚未检查;我们会在检查端点时读取工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在作者的云端运行。通过互联网连接,无需安装,但你发送的内容会经过作者的服务器。
GitHub 仓库最后更新于–,最新版本(1.0.1)于3个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:Spec Driven Development, Remote Desktop Commander, sync. labs
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
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.
Lipsync videos, dub them into other languages, make talking videos and open sync. Studio.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Connect Claude, ChatGPT, or any MCP-capable assistant to Calaf — the MBA recruiting manager. Your assistant researches target firms at whatever depth you ask, writes and validates structured "seeds," and files them into your recruiting book. People it proposes always arrive staged for your review — nothing enters your network behind your back.
Two servers, one product.
ai.calaf/calafconnects to your account (OAuth).ai.calaf/seedsis the no-auth authoring loop — the format and the validator, usable by anyone, no Calaf account required.
| Server | Endpoint | Transport | Auth |
|---|---|---|---|
| Calaf | https://calaf.ai/api/mcp-account | Streamable HTTP | OAuth 2.1 (dynamic client registration) |
| Calaf Seed Tools | https://calaf.ai/api/mcp | Streamable HTTP | None |
Calaf, URL https://calaf.ai/api/mcp-account, leave Client ID/Secret empty*Requires a paid claude.ai plan (custom connectors are Pro and above).*
claude mcp add --transport http calaf https://calaf.ai/api/mcp-account
Add a remote (Streamable HTTP) server at https://calaf.ai/api/mcp-account. The OAuth flow is standard: dynamic client registration + PKCE; your client discovers the authorization server via RFC 9728 protected-resource metadata.
The copy-paste loop works with every assistant: Calaf's Guide and Settings carry a one-paste prompt that teaches any AI the seed format; the assistant can self-check via the open validator API (below) and you import the file at Settings → Workspace → Seeds.
ai.calaf/calaf (account server)get_seed_format · read-onlyReturns the complete calaf_seed: 1 specification (markdown) — sections, ceilings, parser behavior, and the rules an assistant should follow when authoring a seed. Read it before authoring; then check drafts with validate_seed.
*No parameters.*
validate_seed · read-onlyRuns a draft seed document through the exact parser the Calaf app imports with and returns the verdict: per-section counts plus the precise issue list. Issue severity error means nothing would import; dropped means that row or field is discarded and the rest lands. Fix and re-validate until clean before delivering the file.
| Parameter | Type | Required | Description | |
|---|---|---|---|---|
seed | string \ | object | yes | The complete seed JSON document — as text, or as the JSON object itself |
Returns (structured): valid, per-section counts (orgs, contacts, templates, prep, keyDates, orgKinds, ladderRungs), hasVocab, hasPlanner, and issues[] with path (e.g. orgs[3].name), message, severity.
list_workspaces · read-onlyLists the caller's Calaf workspaces — key, display name, position. Use the key as the workspace argument to import_seed.
*No parameters.* Returns: workspaces[] with key, name, emoji.
import_seed · write (non-destructive, idempotent)Imports a valid seed into one of the caller's workspaces — the same landing the app's import performs:
Re-importing the same file lands nothing twice; nothing is ever deleted or overwritten.
| Parameter | Type | Required | Description | |
|---|---|---|---|---|
workspace | string | yes | Workspace key, from list_workspaces | |
seed | string \ | object | yes | The complete seed JSON document |
parts | string[] | no | Which parts to process: orgs, templates, prep, contacts (= stage people). Defaults to everything the file carries |
Returns (structured): ok, landed (counts per part), failed[], and staged — people, orgs, buildId, skippedWithoutOrg, skippedInvalid.
export_seed · read-onlySerializes a workspace back into a calaf_seed document — the reverse loop: read the book, improve it, re-import (dedupe means a round trip never doubles anything). Privacy defaults: people, the user's personal notes, and content that arrived from other seeds stay out unless explicitly requested (include_people, include_notes, include_seeded); withheld and ceiling-truncated counts are always reported. No plan gate — data portability never sits behind a paywall.
get_profile_schema / get_firm_profile / submit_firm_profileFirm research at house depth. get_profile_schema returns the module shapes (overview, hq, leadership, comp, process, culture/recruiting notes) and the sourcing epistemics a submission must meet (MBA-grade comp sources, null beats a guess, verify leadership at the source). get_firm_profile reads current state with per-field provenance so chat edits merge against reality. submit_firm_profile writes sourced modules into the user's own overlay — rendered on their firm page badged as assistant research — under the merge contract: empty fields fill, fields the assistant wrote refresh, fields the user typed are never overwritten (reported as conflicts), and clear removes only assistant-owned fields. Sources are required; claims without them drop wholesale.
log_touchpoint · writeRecords an interaction (coffee chat, email, event, reply…) with the app's own automations: contact status ladder (never downward), optional follow-up scheduling (which lands on the user's calendar), optional next-day thank-you task, and waking a Researching firm to Networking on real activity.
update_contact · writeCompletes a person already in the book. Identity fields (email/phone/LinkedIn/school/title/group) fill only where empty — user values win, differences reported. Relationship facets (warmth 1–5, stage, next follow-up, connection type) set explicitly, because "mark Jane dormant" is the ask itself. A firm link fills only when the person has none. append_note adds a dated, attributed note under — never over — the user's own. Creating people stays behind import_seed's staged review.
add_task · writeA due-dated task, optionally tied to a contact or firm. Tasks, follow-ups, and deadlines are what the user's calendar renders — this is the assistant's path onto it.
get_contacts / get_firms · read-onlyPaged summaries (contacts include which detail fields are still empty — worth researching) so the assistant navigates the real book, not its memory of it.
log_firm_work / get_firm_work / remove_firm_work · work logThe deals and work items coffee-chat talking points are made of. log_firm_work adds one to a firm's work log with sourcing facets (where it came from, how solid it is: Confirmed / Reported / Rumored); get_firm_work reads the log back, marking which rows are assistant-logged. remove_firm_work deletes only items the assistant itself wrote — entries the user logged by hand are refused, the same class of guarantee as the staged-people rule.
get_applications · read-onlyThe recruiting pipeline: each application's firm, program, status, deadline, and next interview date.
schedule_interview · writePuts an interview round on an application's timeline — and so on the user's calendar. Works forward (scheduled) or backward (completed: true with an outcome). Every save also runs the app's own sync: the application's next-interview date recomputes and its status advances along the workspace's real stage ladder (never downgrading, never reopening a closed outcome).
add_application / update_application · pipelineadd_application opens a pipeline row (firm + program; defaults to Watching; duplicates refused). update_application moves it the way the app's board does — status changes append to the stage history and backfill the applied date — and records outcomes (offer_accepted / offer_declined / rejected / withdrawn). Offered comp figures fill only where the user hasn't entered their own; differences are reported, never applied.
get_tasks / complete_task / snooze_task · the to-do loopList tasks by scope (open / overdue / today / this week / done), mark one done (never delete), or push a due date out. With add_task, the calendar's whole to-do loop runs from chat.
add_firm / update_firm / add_office · the bookadd_firm performs the app's two-layer write — global firm + workspace membership — with import's dedupe posture: an existing firm is joined, never doubled, and assistant-added firms are provenance-marked. update_firm sets the facets you name (status, target, priority) and fills prose only where empty (why/intel notes, tier, location — the user's words always win, differences reported). add_office is additive with duplicate-label refusal.
add_note / get_notes / update_note · the notebookThe assistant's scratchpad in the user's notebook: create notes (optionally linked to a firm or person), list with ownership marks, and edit only notes the assistant itself wrote — the user's notes are refused, same guarantee as everywhere else.
create_workspace / rename_workspace / archive_workspace · containersCreate a new workspace through the app's own path (plan slot caps apply), rename it, or archive/restore it. Archive is reversible by design — nothing here deletes anything.
add_template / get_templates / update_template · outreach templatesReusable email templates per workspace. Assistant templates are marked and editable; the user's own templates and seeded starters refuse edits.
add_prep_question / get_prep / draft_prep_answer · interview prepAdd questions to the prep bank (deduped, optionally firm-tied), list what's unanswered, and draft answers into empty slots only, marked Draft for the user to rework. A question the user already answered is refused outright — their interview voice is theirs.
ai.calaf/seeds (public server)get_seed_format and validate_seed, exactly as above — no account, no auth. The format is also served as an MCP resource (`https://
只显示了开头部分;其余内容请在仓库中阅读