使用说明
annot-mcp
An MCP (Model Context Protocol) server for Annot — receive website feedback and apply changes directly from your IDE.
What it does
Annot lets stakeholders leave visual feedback on live websites. This MCP server connects your AI coding assistant (Cursor, Windsurf, Claude Desktop, etc.) to Annot so you can:
- List pending changes — see all feedback ready to be applied
- Get change details — retrieve the full generated prompt with context (element selectors, styles, screenshots)
- Track progress — mark changes as processing, applied, or failed
Setup
1. Get an API key
Generate an API key from your Annot account settings page.
2. Configure your MCP client
Add the following to your MCP client configuration.
Cursor (.cursor/mcp.json):
{
"mcpServers": {
"annot": {
"command": "npx",
"args": ["-y", "annot-mcp"],
"env": {
"ANNOT_API_KEY": "ak_your_api_key_here"
}
}
}
}
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"annot": {
"command": "npx",
"args": ["-y", "annot-mcp"],
"env": {
"ANNOT_API_KEY": "ak_your_api_key_here"
}
}
}
}
3. Start using it
Ask your AI assistant to check for pending changes:
"Check Annot for any pending feedback changes"
Available tools
| Tool | Description |
|---|---|
list_pending_changes |
List all pending feedback changes ready to be applied |
get_change_details |
Get the full generated prompt and metadata for a specific change |
start_change |
Mark a change as "processing" to prevent duplicate execution |
complete_change |
Mark a change as successfully applied |
fail_change |
Mark a change as failed with an error message |
list_projects |
List all projects accessible to your API key |
claim_changes |
Atomically claim a batch of ready changes (already marked processing) |
complete_changes |
Report applied/failed outcomes for a batch of claimed changes |
Batch workflow
For multiple changes on one project, prefer the batch tools over the single-item flow:
flowchart LR
claim["claim_changes"] --> work["Apply changes in IDE"]
work --> complete["complete_changes"]
claim_changes(project_id)— atomically claim up to 20 ready briefs. Returns eachbrief_idwith its fullgenerated_prompt. Claimed briefs are alreadyprocessing; do not callstart_changeon them.- Apply the changes in your IDE.
complete_changes(results)— report each brief asappliedorfailed, with optional notes or error messages.
Do not mix paths on the same brief: if you claimed it in a batch, finish it with complete_changes (or the single-item tools), not start_change.
For one-off changes, use the single-item flow: list_pending_changes → get_change_details → start_change → complete_change / fail_change.
Automation
Projects can be configured with automation modes that affect how briefs flow through the MCP server:
- Auto-stage — when enabled, new feedback briefs appear in
list_pending_changesautomatically, with no manual staging step. - Auto-resolve — when enabled, completing a change with
complete_changemay resolve the underlying Annot comment automatically. The tool response includes "Comment resolved automatically." when this happens.
Use list_projects to see each project's auto_stage and auto_resolve settings. In list_pending_changes, briefs include a Source field (auto or manual) when available so you can tell how they were created.
Environment variables
| Variable | Required | Description |
|---|---|---|
ANNOT_API_KEY |
Yes | Your Annot API key (starts with ak_) |
ANNOT_API_URL |
No | Override the API endpoint (defaults to Annot production) |
Publishing
This package is published manually to npm. From a clean checkout:
npm version patch(orminor/majoras appropriate)npm publish --access public— runsprepublishOnly(npm run buildthenscripts/check-endpoint.mjs, which fails the publish ifdist/api.jsdoes not point at the production Supabase project)git push --follow-tags
License
MIT