Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Read and update your craaft kanban boards: add and move cards, comment, and tick off checklists.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Funciona en Claude para web, escritorio y móvil:
https://ai.craaft.io/mcpEjecuta esto en tu terminal
claude mcp add --transport http craaft https://ai.craaft.io/mcpPégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"craaft": {
"url": "https://ai.craaft.io/mcp"
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"craaft": {
"type": "http",
"url": "https://ai.craaft.io/mcp"
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
ChatGPT solo se conecta a servidores en internet:
https://ai.craaft.io/mcpLos nombres de los menús pueden variar un poco según el plan y con el tiempo.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Todavía no hemos leído la lista de herramientas de este servidor; revisamos los endpoints por turnos.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con el dominio craaft.io (el registro comprueba quién es dueño del dominio)
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Aún sin revisar; revisamos los endpoints por turnos
Aún sin revisar; revisamos los endpoints por turnos
Aún sin revisar; leemos la lista de herramientas cuando revisamos el endpoint
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en la nube del creador. Te conectas por internet sin instalar nada, pero lo que envías pasa por los servidores del creador.
El repo de GitHub cambió por última vez –, y la última versión (1.0.2) llegó al registro hace 26 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, sync. labs
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
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.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
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
Solo se muestra el principio; lee el resto en el repo