A side-by-side look at the Agent Tasks and Pincushion Plugin MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Agent Tasks for coding agents work as a local process; choose Pincushion Plugin for coding agents as a local process. You can also run both side by side in one mcpServers block.
AGENT_TASKS_DB, AGENT_TASKS_PORT, AGENT_TASKS_HOST, AGENT_TASKS_INSTRUCTIONS, AGENT_COMM_URL, AGENT_KNOWLEDGE_URL.task_create, task_get, task_list.get_annotations, search_annotations, get_feedback_summary.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Coding Agents | Coding Agents |
| Quality signal | 64/100 · Good | 64/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | No auth required |
| Pricing | Not declared | Freemium |
| Required env vars | AGENT_TASKS_DBAGENT_TASKS_PORTAGENT_TASKS_HOSTAGENT_TASKS_INSTRUCTIONSAGENT_COMM_URLAGENT_KNOWLEDGE_URL | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 22 | 1 |
| Directory activity | 1 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 8 | 65 |
| Full listing | View Agent Tasks | View Pincushion Plugin |
task_createCreate a pipeline task. Tasks start in "backlog" and move through stages: backlog → spec → plan → implement → test → review → done. Use parent_id to create subtasks under an existing task.task_getGet a single task by ID. By default returns task with artifact count, comment count, dependencies, and collaborators. Use "include" to inline full subtasks, artifacts (filterable by stage), comments (with limit), or transitive_deps (full upstream + downstream closure of the dependency graph in one call — answers questions like "what depends on this task transitively?" and "what is its critical path depth?" without forcing the caller to BFS the graph).task_listList, search, or pick tasks. Without params: returns all tasks. With filters: narrow by status/stage/project/assignee. With "query": full-text search across titles and descriptions. With "next": true: returns the single highest-priority unassigned task with all dependencies met (uses affinity scoring when agent is provided).task_updateUpdate task metadata — title, description, priority, tags, project, assignment, or dependencies. Does not change stage or status (use task_stage for that).task_deleteDelete a task and all its artifacts, comments, and dependencies (cascading delete). Cannot be undone.task_stageMove a task through its lifecycle. Actions: "claim" → assign to you and advance from backlog to spec, "assign" → assign to you WITHOUT advancing the stage (use for custom pipelines where the first stage is itself a do-work stage), "advance" → next stage (or jump to a specific one), "regress" → earlier stage (requires reason), "complete" → marks done with result, "fail" → marks failed with error, "cancel" → cancels with reason.task_artifactAttach artifacts or comments to a task. Types: "general" → document (spec, test-results, review-notes), "decision" → structured decision record (chose/over/because), "learning" → insight that auto-propagates to parent and sibling tasks on completion, "comment" → discussion comment (supports threading via parent_comment_id, satisfies stage-gate require_comment checks).task_configConfiguration and admin. Actions: "session" → set agent identity (call this first), "pipeline" → get/set pipeline stages and gate config for a project, "cleanup" → purge old completed tasks, "rules" → generate IDE rule files (.mdc or CLAUDE.md).get_annotationsRetrieve annotation pins from the .feedback/ directory. Filter by page URL, LWC component name, or status. Use this to understand what feedback exists before making changes.search_annotationsFull-text search across all annotation comments, selectors, component names, and tags.get_feedback_summaryGet a high-level rollup of all open feedback: counts by status, page, and component. Use this to plan what to address first.get_component_feedbackGet all feedback pins targeting a specific LWC component, with a plain-language summary ready for implementation. Returns element selectors, comments, and thread history.resolve_annotationMark an annotation as resolved after addressing the feedback. Optionally add a resolution comment explaining what was changed.add_agent_replyAdd a reply to an annotation thread (e.g. to ask a clarifying question or note a finding).get_reply_candidatesUsed by /pincushion-replies. Returns pins where Pincushion AI should respond, with each candidate tagged by trigger reason. Two triggers: (a) "mention" — the latest thread message contains @pincushion AND was authored by a human; (b) "reply-on-bot-pin" — the pin was originally authored by Pincushion AI and the latest message is from a human. Skips resolved/archived pins and any pin where the latest message is already bot-authored (idempotency). Newest-first ordering so the slash command can pace replies.add_bot_replyPost a Pincushion AI reply to a pin's thread. Hardcodes author="Pincushion AI" and authorEmail="pincushion-bot@pincushion.io" so the Chrome extension applies bot styling. ONLY call from the /pincushion-replies flow — never as a generic reply. Refuses to post if the latest thread message is already bot-authored (defense-in-depth idempotency).get_pending_critiquesUsed by /critique-latest-deploy. Lists pending critique requests queued by the deploy-hook for the current license. Newer receipts also include a deployment event, prior page outcomes, project-page inventory, and latest per-device capture receipts for truthful local reconciliation before Crit runs. Newest-first. Free on all plans (the gating happened at enqueue time on the deploy-hook side: Pro/Team — including trial-Pro — always enqueue; free licenses enqueue while their monthly AI-action pool has headroom).get_pending_deployment_frame_refreshesLists production deployment frame-refresh work independently of the Critique queue. Use this even when autoCritique is false. The result is redacted: it contains no deployment URL/hash, browser state, storage path, or capture proof. Start a selected run before capturing.start_deployment_capture_runStarts one short-lived local frame-refresh run for an exact deployment and returns its opaque proof once. Keep the proof only in process and pass it to authenticated upload_page_snapshot/record_deployment_page_result/complete_deployment_capture_run calls; never put it in capture-snapshot, shell argv, a report, pin, status message, or file.complete_deployment_capture_runRequests server-side frame-refresh completion after all exact page/device receipts have been recorded. The server rejects missing, stale, replayed, cross-deployment, or expired capture-run evidence and never treats a queue state as a current frame.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"agent-tasks": {
"command": "npx",
"args": [
"agent-tasks"
],
"env": {
"AGENT_TASKS_DB": "YOUR_AGENT_TASKS_DB_HERE",
"AGENT_TASKS_PORT": "YOUR_AGENT_TASKS_PORT_HERE",
"AGENT_TASKS_HOST": "YOUR_AGENT_TASKS_HOST_HERE",
"AGENT_TASKS_INSTRUCTIONS": "YOUR_AGENT_TASKS_INSTRUCTIONS_HERE",
"AGENT_COMM_URL": "YOUR_AGENT_COMM_URL_HERE",
"AGENT_KNOWLEDGE_URL": "YOUR_AGENT_KNOWLEDGE_URL_HERE"
}
}
}
}
{
"mcpServers": {
"jcooley8-pincushion-plugin": {
"command": "npx",
"args": [
"-y",
"pincushion-mcp"
]
}
}
}