Pincushion for VS Code.
Visual feedback that lands in your editor. Stakeholders drop pins on your live app; the pin arrives in VS Code as an agent-ready work packet via MCP — selector, DOM snippet, screenshot, viewport, thread, and project context — instead of a screenshot in Slack.
The flow
- Stakeholder drops a pin on any element of your live app via the Chrome extension or the one-line script-tag widget
- You open VS Code; the Pincushion MCP server exposes the open pins to whatever agent you use — Copilot agent mode, Continue, or the
@pincushionchat participant from our extension - The agent receives each pin's full work packet — no copy-pasting screenshots, no translating feedback into prompts
- It finds the source code, makes the change, calls
fix_and_resolvewith branch + PR URL - Deploy hook auto-resolves the pin on production. Stakeholder sees "Resolved in PR #142, deployed at 3:24pm"
Install (60 seconds)
Add Pincushion to .vscode/mcp.json in your project:
{
"servers": {
"pincushion": {
"command": "npx",
"args": ["pincushion-mcp", "--project-dir", "${workspaceFolder}", "--cloud-sync"]
}
}
}
Or skip the local process and use the hosted endpoint:
{
"servers": {
"pincushion": {
"type": "http",
"url": "https://pincushion.io/api/mcp",
"headers": { "x-license-key": "YOUR_LICENSE_KEY" }
}
}
}
The local server is repo-aware — it can grep your source by selector and suggest branch names — while the hosted endpoint covers cloud-side tools with zero setup. Run npx pincushion-mcp login once to link your license key. There's also a marketplace VSIX that registers the server and adds @pincushion to Copilot Chat, if you'd rather not touch JSON at all.
MCP tools your agent gets
get_actionable_pins— every pin waiting for developer attention, categorizedimplement_approved_pins— approved pins grouped into per-page implementation packets with a suggested branch nameclaim_pin/fix_and_resolve— the claim → fix → resolve loop, with commit SHA, branch, and PR URL recorded on the pinget_feedback_summary— counts by status, page, and componentsearch_annotations— full-text search across comments and selectors
The pin is the spec. Your agent doesn't need a ticket, a screenshot, or a meeting — it needs a selector, the DOM, and the thread. That's what it gets.
One server, whatever agent you run in VS Code
VS Code is the editor most likely to have several agents in it at once — Copilot agent mode today, Continue tomorrow, something new next quarter. Because Pincushion is a standard MCP server, the feedback layer doesn't care which one you use: any MCP-capable agent in the editor sees the same tools and the same pins. Switch agents and your review workflow comes along unchanged. The pins live in .feedback/ in your project (synced to the cloud), so they're versionable, greppable, and not locked inside anyone's chat history.
The loop also closes without leaving the editor. When your agent resolves a pin, the commit SHA, branch, and PR URL are recorded on the pin; the deploy hook links the production URL when the fix ships; and stakeholders watching the pin see the whole trail — no status meeting, no "did that ever get fixed?" Slack thread.
What's in the work packet
- CSS selector — the agent greps the repo with it and lands on the right component
- DOM snippet — disambiguates repeated components and reveals page state
- Screenshot + viewport — what the reviewer saw, at the size they saw it
- Thread + acceptance criteria — what "done" means, in the stakeholder's words
- Project context + likely files — so the first file opened is usually the right one
Pricing
Reviewers and stakeholders are always free — unlimited, no accounts to buy. The developer free tier includes one project, unlimited manual pins, and 25 AI actions a month, and every signup starts a 14-day Pro trial. Pro is $19/mo: unlimited automation, realtime push to your editor, unlimited projects, and access controls.
Using a fork or a different agent? See Copilot agent mode, Cursor, Claude Code, Windsurf, and Antigravity. New to the idea? Read what a visual feedback MCP server actually does.