Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Read and update your craaft kanban boards: add and move cards, comment, and tick off checklists.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
ウェブ、デスクトップ、モバイルのClaudeで使えます:
https://ai.craaft.io/mcpターミナルでこれを実行します
claude mcp add --transport http craaft https://ai.craaft.io/mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"craaft": {
"url": "https://ai.craaft.io/mcp"
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"craaft": {
"type": "http",
"url": "https://ai.craaft.io/mcp"
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
ChatGPTがつなげるのは、インターネット上のサーバーだけです:
https://ai.craaft.io/mcpメニューの名前は、プランや時期によって少し違うことがあります。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのツール一覧はまだ読み取っていません。エンドポイントは順番にチェックしています。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名はドメイン craaft.io で確認済みです(レジストリがドメインの所有を確認しています)
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
GitHubリポジトリの最終更新は–、最新バージョン(1.0.2)がレジストリに届いたのは26 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, AvaHR
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況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.
Read hiring data and create inactive assessment and questionnaire drafts for human review.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Model Context Protocol server for Craaft - lets AI assistants read and write your Kanban boards.
Deployed as an HTTP service. Each request authenticates via the caller's Authorization: Bearer header - either a cra_* personal access token (same ones used by the Craaft REST API) or a cro_* OAuth access token minted by signing in through the connector flow below.
Two-factor sign-in on a craaft account doesn't affect either kind of token. Account security settings (password, two-factor, API keys) are browser-only on the platform, so no tool changes them.
cd mcp
gcloud run deploy craaft-mcp \ --source . \ --region us-central1 \ --allow-unauthenticated \ --set-env-vars CRAAFT_BASE_URL=https://craaft.io,MCP_PUBLIC_URL=https://ai.craaft.io/mcp
The PORT env var is set automatically by Cloud Run.
With MCP_PUBLIC_URL set, the server is an OAuth 2.1 protected resource: no token needs to be copied by hand.
craaft is in the Claude directory: connect it from there and skip to step 3. Or add it as a custom connector:
https://ai.craaft.io/mcp.With read-only access, tools that only read (list_projects, get_board, search_cards and the like) work, and every tool that changes something fails with this token is read-only; this request needs a token with read and write access. The same goes for a cra_ key created as read only.
You can also connect it to Chosen boards only. Tools then see just those boards: other boards are not found, and list_projects and search_cards leave them out. create_project, import_board, list_members, list_invitations and the other member tools fail with this token is limited to some boards; this request needs a token for all boards. To change an app's access or boards, connect it again and choose again.
To revoke access later, go to Craaft Settings > Connected apps.
cra_ token)~/.config/claude/claude_desktop_config.json:{
"mcpServers": { "craaft": { "url": "https://craaft-mcp-xxxxx.a.run.app/mcp", "headers": { "Authorization": "Bearer cra_your_token_here" } } } }
craaft is listed in the official MCP registry as io.craaft/mcp, described by server.json. craaft.io proves it owns the io.craaft namespace by serving a public key at https://craaft.io/.well-known/mcp-registry-auth (platform repo, internal/server/mcpregistry.go). The matching private key is not in this repo.
To publish a change, raise version in server.json (a published version can't be changed or republished), then:
PRIVATE_KEY="$(openssl pkey -in ~/.config/craaft/mcp-registry-key.pem -noout -text | grep -A3 'priv:' | tail -n +2 | tr -d ' :\n')"
mcp-publisher login http --domain craaft.io --private-key "$PRIVATE_KEY" mcp-publisher publish
Install mcp-publisher from the registry's releases.
| Tool | Description |
|---|---|
list_projects | List all accessible Kanban projects |
get_board | Get a board's brief, columns and cards (descriptions omitted) |
get_card | Get a single card by ID, including description |
get_card_detail | Card plus comments, events, checklist and attachments in one call |
get_card_prompt | Card as a Markdown brief for an AI tool, the same text as Copy as prompt |
search_cards | Cross-project card search (description is a ≤180-char snippet) |
create_card | Create a card at the bottom of a column, with optional metadata (assigned to you unless you name someone) |
update_card | Update a card's title, description, column, position, priority, assignee, tags, etc. |
move_card | Move a card to another column or board |
delete_card | Permanently delete a card |
add_comment | Add a comment to a card (supports @mentions) |
get_comments | List comments on a card |
get_focus | Get focus overview: due cards, attention cards, hygiene counters |
list_notifications | Your notification inbox, newest first, plus the unseen count. Pass kind: mention to list where you were mentioned, with project, card and comment ids |
mark_notifications_read | Mark notifications read by id, by card, or all of them |
get_me | Get the authenticated user's profile |
bulk_create_cards | Create up to 100 cards in one transaction |
bulk_update_cards | Apply up to 100 partial card updates in one transaction |
bulk_move_cards | Sweep up to 100 cards into a column, optionally on another board |
rebalance_cards | Reorder a whole column in one transaction (positions 1, 2, 3, ...) |
get_checklist | List a card's checklist items |
add_checklist_item | Append an item to a card's checklist |
update_checklist_item | Tick, untick or retitle a checklist item |
delete_checklist_item | Delete a checklist item |
get_card_activity | A card's activity log: column and board moves, priority and assignee changes |
get_board_activity | A board's activity feed, newest first: cards added, moved, archived, deleted, comments, column changes |
get_hygiene | The cards behind a get_focus hygiene counter (ghosts, stuck, mine_no_date) |
list_attachments | List the files attached to a card |
list_board_files | Search every file on a board's cards, with the card each is on |
download_attachment | Fetch an attachment's bytes (text inline, binary base64) |
upload_attachment | Attach a file to a card from inline content |
delete_attachment | Delete an attachment and its stored bytes |
get_project | One project with columns, counts, brief and your role |
create_project | Create a board, optionally from a template (starts with To Do / In Progress / Done otherwise) |
update_project | Rename, edit the brief, favourite, change visibility, colour scheme, background, text colour or top-bar buttons |
delete_project | Delete a board and everything in it |
export_project | Export a board as JSON or CSV |
preview_import | Dry run of an import: what board a Trello, Jira, Asana, CSV or craaft export would create |
import_board | Create a new board from a Trello, Jira, Asana, CSV or craaft export |
list_board_templates | The fixed catalogue of board templates (kanban, sprint, bug tracker, ...) |
add_column | Add a column to a board |
update_column | Rename, recolour, reorder, or set a WIP limit |
delete_column | Delete an empty column |
archive_column | Archive every card in a done column, returns the archived ids |
archive_card | Archive one card without deleting it |
restore_card | Restore an archived card to its original column and position |
list_archived_cards | A board's archived cards, newest first |
list_webhooks | A board's outbound webhook subscriptions plus the event catalogue |
create_webhook | Register an outbound webhook (craaft signed / Slack / Discord) |
update_webhook | Pause/resume a webhook, or change its URL, format or event filter |
delete_webhook | Delete a webhook subscription |
get_inbound_email | A board's email-to-card intake address, if configured, its allowed senders, senders turned away in the last 7 days and the month's AI card usage |
enable_inbound_email | Turn on email-to-card and mint the intake address |
update_inbound_email | Change active state, target column, AI settings and instructions, or rotate the token |
disable_inbound_email | Turn off email-to-card for a board |
add_inbound_sender | Let an address, or a whole @domain, email cards to a board |
remove_inbound_sender | Remove an allowed sender |
list_members | Workspace members, roles and board access |
update_member_role | Change a member's workspace role |
remove_member | Remove someone from the workspace |
The three bulk_* tools are all-or-nothing: one bad item rolls the whole batch back and the error names the offending index, so a failed call never leaves a partially applied board. They send no notification emails (activity events and realtime updates still fire), and each call spends one rate-limit token against a 60-burst budget - which is why they should be preferred over looping the single-card tools.
| Path | Purpose |
|---|---|
POST /mcp | MCP Streamable HTTP endpoint |
GET /health | Health check (returns {"status":"ok"}). /healthz answers the same locally, but Cloud Run keeps that path for itself |
GET /.well-known/oauth-protected-resource, GET /.well-known/oauth-protected-resource/mcp | RFC 9728 protected-resource metadata (only served when MCP_PUBLIC_URL is set) |
| Var | Default | Description |
|---|---|---|
PORT | 8080 | Listen port (Cloud Run sets this automatically) |
CRAAFT_BASE_URL | https://craaft.io | Upstream Craaft API URL |
MCP_PUBLIC_URL | unset (OAuth metadata off) | This server's own public /mcp URL, e.g. https://ai.craaft.io/mcp. When set, serves RFC 9728 protected-resource metadata and 401-challenges missing/invalid tokens to start the OAuth flow. Accepts both cra_ personal access tokens and cro_ OAuth access tokens either way. Must equal the platform's MCP_RESOURCE_URL (both sides lowercase the scheme and host and trim a trailing slash before comparing). |
This server runs remotely, so it cannot read the caller's filesystem: upload_attachment takes the contents inline (content_text for text, content_base64 for binary), not a path.
download_attachment returns text-ish content types as readable text and everything else base64-encoded. Attachments can be up to 25 MiB, which no conversation wants inline, so it refuses anything over max_bytes (default 256 KiB) and reports the real size instead. Text is truncated rather than refused, since truncated text is still readable; truncated base64 is not, so binary over the limit is skipped entirely.
Attachments are a paid feature. On a Free workspace the upload returns 402 and the error names the current plan. Check canUploadAttachments on the project first - it reflects the board's workspace plan, not the caller's.
preview_import and import_board take the same arguments: filename, the file inline (content_text or content_base64), and optionally source (trello, jira, asana, csv or craaft; detected when l
冒頭だけを表示しています。続きはリポジトリで読めます