Summary
Canny customer feedback: read boards, posts and feature requests with votes and comments, users and companies with MRR, categories, tags and the status history, capture new posts, votes and comments, triage with status changes, tags and owners, and write, schedule and publish changelog entries.
Guided setup
Connect Canny to Claude in 2 minutes
Start a free trial on AnythingMCP Cloud, connect Canny in the guided setup, then add your MCP URL to Claude. No code and no server to run.
No credit card · 7-day trial · Self-host alternative available
AnythingMCP is listed in Claude's connector directory: add it to Claude in one click (opens in a new tab), then sign in and choose which MCP servers Claude may use.
Try asking
Example prompts for Canny
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Canny, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Canny + Claude
Canny customer feedback: read boards, posts and feature requests with votes and comments, users and companies with MRR, categories, tags and the status history, capture new posts, votes and comments, triage with status changes, tags and owners, and write, schedule and publish changelog entries.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
CANNY_API_KEY
Step 1 — Get credentials
Setting up takes about 1 minute. You need a Canny workspace and access to its company settings.
- In Canny open Settings > API & Webhooks (the company settings) and copy the secret API key into
CANNY_API_KEY. - Install the connector and run
canny_list_boards: it lists your feedback boards and confirms the key.
How the key travels: every Canny call is a POST with a JSON body, the reads included. Canny expects the key as the apiKey field of that body, and the connector adds it to every request for you. It is the secret key of your whole Canny company, so keep it to trusted workspaces.
What it reads:
- Boards with post count, private flag and admin URL; the categories (and subcategories) and tags of each board.
- Posts (ideas and feature requests) with
canny_list_posts, filtered by board, author, company, tags, status or a search text and sorted by newest, oldest, score, trending, statusChanged or relevance.sort: scoreortrendingshows what is wanted most.canny_get_postadds custom fields, ETA, linked Jira or Linear issues and the merge history. - Comments (team-only internal notes included) and votes with voter, priority and time, filtered by post, board, author or user, or company.
- The history of status changes with old and new status, the changer and the attached comment.
- Users with email, the user id from your app, companies and admin flag; companies (customer accounts) with domain, monthly spend (MRR), member count and custom fields, searchable by name or segment.
- Changelog entries, drafts and scheduled ones included, with markdown details, types, labels and linked posts.
What it writes:
- Capturing feedback:
canny_create_or_update_usercreates the person (or updates the matching one) and returns the Canny id needed as author or voter; withcompaniesit also links and creates companies. Thencanny_create_postfor a new idea, orcanny_create_voteon an existing post when someone asks for something that is already there, optionally with a priority.canny_create_commentadds a comment or a reply (parent_id), withinternal: truefor a note only the team sees. - Triage:
canny_change_post_statussets open, under review, planned, in progress, complete, closed or a custom status. It needs an admin's Canny id aschanger_id, andshould_notify_votersemails every voter.canny_update_postchanges title, details, ETA, images, owner or custom fields;canny_change_post_category,canny_add_post_tagandcanny_remove_post_tagsort posts;canny_create_categoryandcanny_create_tagextend a board. - Companies:
canny_update_companychanges name, domain, monthly spend or custom fields. A synced CRM may overwrite these values. - Changelog:
canny_create_changelog_entrywrites a draft by default;published: trueorscheduled_forreleases it, andpost_idslinks the posts it ships.canny_update_changelog_entrychanges title, details, types, labels and linked posts (lists given replace the old ones), andcanny_change_changelog_entry_statuspublishes, schedules or sets an entry back to draft. Withnotifyon, publishing emails your users.
Nothing is switched off at install: Canny has no delete tools in this connector. Keep in mind that a status change with should_notify_voters and a changelog entry published with notify send emails.
Ids: all ids are 24-character hex strings. company_id filters take the company identifier as returned by canny_list_companies (the id from your app when companies are synced). An admin's Canny id for changer_id, by_id or owner_id comes from canny_list_users (entries with isAdmin: true) or from canny_get_user with the admin's email. canny_get_user finds a user by exactly one of Canny id, email or the user id in your app.
Data formats: posts carry score (the vote count), commentCount, status, eta and url (the admin link). Times are ISO 8601 UTC. Changelog details are markdown.
Paging: two styles. canny_list_posts, canny_list_categories, canny_list_tags and canny_list_changelog_entries take limit and skip and answer hasMore. canny_list_comments, canny_list_votes, canny_list_users, canny_list_companies and canny_list_status_changes take limit (up to 100) and cursor: the AI passes the returned cursor while hasNextPage is true. A company search is not paged with a cursor.
Limits: per key 5 requests per second and 1,000 per hour on the Free plan, 10 and 5,000 on paid plans, 20 and 15,000 on Business. 429 comes with Retry-After.
Common errors: Canny reports errors as {"error": "..."}. A message about the API key comes back as 401: copy the secret key again from Settings > API & Webhooks. A rate message comes back as 429, anything else as 400, for example invalid post id.
The connector does not delete or merge posts, does not delete comments, votes, users or changelog entries, and does not create boards or manage webhooks.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Claude
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Recommended path: works on claude.ai web without editing any config file.
- In Claude, open Customize → Connectors.
- Click +, then Add custom connector.
- Enter a name, e.g.
Canny, and the remote MCP server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID, then click Add. - Click Connect and sign in to AnythingMCP (OAuth) to allow access.
All tools below appear in your chat: start typing prompts.
Available tools
| Tool | What it does |
|---|---|
canny_list_boards | All feedback boards of the Canny company with id, name, postCount, isPrivate and url |
canny_get_board | One feedback board by id: name, postCount, isPrivate, created date and admin url |
canny_list_posts | List feedback posts (ideas and feature requests) with title, details, status, score (votes), commentCount, author, board, category, tags… |
canny_get_post | One post with its details, status, score, author, owner, category, tags, custom fields, eta, linked Jira or Linear issues, merge history… |
canny_create_post | Create a post (idea or feature request) on a board for a user |
canny_update_post | Update a post's title, details, ETA, images, custom fields or owner |
canny_change_post_status | Change a post's status (open, under review, planned, in progress, complete, closed or a custom status), recorded under an admin, optionally… |
canny_change_post_category | Move a post to another category of its board, or remove its category with the text null |
canny_add_post_tag | Add a tag to a post |
canny_remove_post_tag | Remove a tag from a post |
canny_list_comments | List portal comments, newest first, with value, author, post, parent, internal flag and likes |
canny_get_comment | One portal comment by id with its value, author, post, images and internal flag |
canny_create_comment | Add a comment to a post, as a reply when parent_id is set. internal comments are visible to the team only |
canny_list_votes | List votes, newest first, with the voter, post, priority and time |
canny_create_vote | Record a vote by a user on a post, optionally with a priority, for example when a customer asks for a feature in a call or ticket |
canny_list_users | List the end users of the workspace with id, name, email, userID (the id in your app), companies and admin flag |
canny_get_user | Find one user by exactly one of: Canny id, email, or the user id in your application |
canny_create_or_update_user | Create a user, or update the one matching email, user_id or id, and return its Canny id for use as author or voter |
canny_list_companies | List companies (customer accounts) with id, name, domain, monthlySpend, memberCount and custom fields, ordered by creation |
canny_update_company | Update a company's name, domain, monthly spend (MRR in dollars), creation date or custom fields |
canny_list_categories | List post categories (and subcategories with parentID), newest first, with name, postCount and board |
canny_create_category | Create a category, or a subcategory with parent_id, on a board |
canny_list_tags | List tags, newest first, with id, name, postCount and board |
canny_create_tag | Create a tag on a board, or return the existing tag with that name |
canny_list_status_changes | History of post status changes, newest first: post, old and new status, changer and the attached comment |
canny_list_changelog_entries | List changelog entries, drafts and scheduled ones included, with title, markdown details, status, types, labels, linked posts, publishedAt… |
canny_create_changelog_entry | Write a changelog entry as a draft (default), publish it now or schedule it, and link the posts it ships. notify emails users once it is… |
canny_update_changelog_entry | Change the title, details, types, labels, linked posts or notify flag of a changelog entry |
canny_change_changelog_entry_status | Publish a changelog entry now, schedule it for a future time, or set it back to draft (unpublish or unschedule) |
Example prompts
- "What are the ten most voted open feature requests on our Feature Requests board?"
- "Which posts moved to planned or in progress in the last month, and who changed them?"
- "Which companies with the highest MRR voted for the dark mode request?"
- "[email protected] asked for a CSV export on a call today. Add her vote to the existing post, or create the post if there is none."
- "Write a draft changelog entry for the new bulk edit feature and link the posts it ships."
FAQ
Does it work with Claude Code as well as Claude Desktop? Yes, point both at https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID.
Next steps
- Connector landing page
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
- Connect to Microsoft Copilot
Was this guide helpful?