Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Canny in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
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.
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 + Microsoft Copilot
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 Microsoft Copilot
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.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
Cannytools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.
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
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?