使用说明
Canny MCP服务器
用于Canny反馈管理的模型上下文协议(MCP)服务器。将Canny连接到任何兼容MCP的AI客户端,以管理客户反馈,优先考虑功能,并通过自然语言简化产品开发。
特性
- 37工具 -Canny API全面覆盖:帖子、评论、投票、用户、类别、标签、变更日志、状态更改、想法、见解、组、机会和Jira集成
- 令牌优化 -响应比原始API小70-90%
- Jira集成 --链接帖子到Jira问题
- PM工作流程 --内置提示,用于每周分流、冲刺计划和执行报告
- 智能分页 --自动光标/跳过处理
- 批量操作 --批量状态更改
- 可配置工具集 --默认情况下为只读;有选择地启用写入工具
先决条件
- Node.js v20.9+、v22+或v24+(LTS版本)
- npm v9+
- MCP客户端 --Claude Code、Continue.dev或任何与MCP兼容的客户端
- Canny API密钥 --得到一个在 canny.io/admin/settings/api
Claude Code快速入门
最快的开始方式:跑步 npx 直接通过克劳德代码。没有克隆,就没有构建。
第一步:获取您的Canny证书
- API密钥 --参观 canny.io/admin/settings/api
- 子域 --您的Canny工作区URL:
https://<subdomain>.canny.io - 董事会ID (可选)--通过Canny管理员URL或运行
canny_list_boards安装后
步骤2:添加MCP服务器
claude mcp add --transport stdio canny \
--scope user \
--env CANNY_SUBDOMAIN=<COMPANY_SUBDOMAIN> \
--env CANNY_API_KEY=<CANNY_API_KEY> \
--env CANNY_DEFAULT_BOARD=<BOARD_ID> \
--env CANNY_TOOL_MODE=readonly \
-- npx -y @opensourceops/canny-mcp
替换 <COMPANY_SUBDOMAIN>, <CANNY_API_KEY>,以及 <BOARD_ID> 与你的价值观。
步骤3:重新启动Claude代码
退出并重新打开Claude Code以加载新服务器。
步骤4:验证
问克劳德:
List the available Canny tools.
您应该看到37个工具,包括 canny_list_posts, canny_get_post,以及 canny_list_ideas.
全局安装
要全局安装该软件包,请执行以下操作:
npm install -g @opensourceops/canny-mcp
然后配置MCP客户端以运行 canny-mcp-server 而不是 npx:
{
"mcpServers": {
"canny": {
"command": "canny-mcp-server",
"env": {
"CANNY_API_KEY": "your_api_key",
"CANNY_SUBDOMAIN": "your_subdomain",
"CANNY_DEFAULT_BOARD": "your_board_id",
"CANNY_TOOL_MODE": "readonly"
}
}
}
}
可用工具
发现(9个工具:8个只读,1个写)
canny_list_boards--列出所有板canny_list_tags--列表标签(可选按板)canny_create_tag--在电路板上创建新标签canny_list_categories--列出类别canny_list_posts--列出带有过滤器(状态、作者、公司、标签)的帖子canny_filter_posts--按类别、公司、细分市场、标签段和日期范围筛选canny_get_post--获取完整的帖子详细信息,包括评论和投票canny_list_status_changes--列出职位状态更改历史记录以供审核canny_create_category--创建董事会类别
帖子(6个书写工具)
canny_create_post--创建帖子(支持图片、ETA、所有者)canny_update_post--更新标题、描述、预计到达时间或图像canny_update_post_status--通过可选的选民通知更改状态canny_change_category--将帖子移动到其他类别canny_add_post_tag--在帖子中添加标签canny_remove_post_tag--从帖子中删除标签
参与(6个工具:2个只读,4个写)
canny_list_comments--列出评论(可按公司筛选)canny_list_votes--列表投票canny_create_comment--添加评论(支持图像、内部标志)canny_delete_comment--删除评论canny_add_vote--添加投票canny_remove_vote--删除投票
用户和公司(4个工具:2个只读,2个写)
canny_get_user_details--通过ID、电子邮件或自定义用户ID查找用户canny_list_companies--列出有MRR数据的公司canny_find_or_create_user--查找或创建具有公司关联的用户canny_link_company--将用户链接到公司
Jira(2个书写工具)
canny_link_jira_issue--将Jira问题链接到帖子canny_unlink_jira_issue--取消Jira问题的链接
变更日志(2个工具:1个只读,1个写)
canny_list_changelog_entries--列出更改日志条目canny_create_changelog_entry--创建更改日志条目以传达产品更新
创意生态系统(7个只读工具)
canny_list_groups--列表组(基于光标的分页)canny_get_group--按ID或URL名称获取组canny_list_ideas--通过过滤、搜索和排序列出想法canny_get_idea--通过ID或URL名称获取想法canny_list_insights--列出见解,可选择按想法过滤canny_get_insight--通过ID获得洞察力canny_list_opportunities--列出与Canny相关的Salesforce机会
批处理(1个写入工具)
canny_batch_update_status--一次更新多个帖子状态
配置
工具模式
服务器运行在 只读 默认模式(19个只读工具)。要启用写入操作,请设置 CANNY_TOOL_MODE:
| 模式 | 工具 | 描述 |
|---|---|---|
readonly |
19 | 只读工具(默认) |
all |
37 | 所有工具,包括写入 |
discovery,posts |
变化 | 特定工具集(逗号分隔) |
通过环境变量设置或 config/default.json:
{
"server": {
"toolMode": "all"
}
}
更改后重建 config/default.json:
npm run build
环境变量
Canny API(必需)
| 变量 | 默认值 | 描述 |
|---|---|---|
CANNY_API_KEY |
-- | 您的Canny API密钥(必需) |
CANNY_BASE_URL |
https://canny.io/api/v1 |
Canny API基础URL |
CANNY_SUBDOMAIN |
自动检测 | 您的Canny子域;自动检测自 CANNY_BASE_URL 如果 *.canny.io |
CANNY_CONFIG_PATH |
config/default.json |
JSON配置文件的路径 |
工作区
| 变量 | 默认值 | 描述 |
|---|---|---|
CANNY_DEFAULT_BOARD |
-- | 默认板ID |
CANNY_WORKSPACE_NAME |
Default |
工作区显示名称 |
CANNY_CUSTOM_STATUSES |
open,under review,planned,in progress,complete,closed |
以逗号分隔的有效状态列表 |
Jira集成
| 变量 | 默认值 | 描述 |
|---|---|---|
CANNY_JIRA_ENABLED |
false |
启用Jira集成(true/false) |
CANNY_JIRA_PROJECT_KEY |
-- | Jira项目密钥(例如。, PROJ) |
分页和显示
| 变量 | 默认值 | 描述 |
|---|---|---|
CANNY_PAGINATION_LIMIT |
10 |
每页结果 |
CANNY_PAGINATION_MAX |
50 |
最大总结果 |
CANNY_COMPACT_MODE |
true |
返回简洁的响应(true/false) |
缓存
| 变量 | 默认值 | 描述 |
|---|---|---|
CANNY_CACHE_ENABLED |
true |
启用响应缓存(true/false) |
CANNY_CACHE_MAX_SIZE |
100 |
最大缓存条目数 |
速率限制
| 变量 | 默认值 | 描述 |
|---|---|---|
CANNY_RATE_LIMIT_REQUESTS |
100 |
每个窗口的最大请求数 |
CANNY_RATE_LIMIT_WINDOW |
60000 |
速率限制窗口(毫秒) |
服务器
| 变量 | 默认值 | 描述 |
|---|---|---|
CANNY_TOOL_MODE |
readonly |
readonly, all,或逗号分隔的工具集 |
SERVER_TRANSPORT |
stdio |
运输方式: stdio, http,或 both |
SERVER_HTTP_PORT |
3000 |
HTTP服务器端口(当传输包括 http) |
SERVER_HTTP_HOST |
0.0.0.0 |
HTTP服务器绑定地址 |
日志记录
| 变量 | 默认值 | 描述 |
|---|---|---|
LOG_LEVEL |
info |
日志级别: debug, info, warn, error |
LOG_FORMAT |
json |
日志格式: json 或 pretty |
自定义提示
服务器附带5个内置提示(weekly_triage, sprint_planning, executive_summary, jira_sync_status, customer_impact).添加您自己的 config/default.json:
{
"prompts": [
{
"name": "my_workflow",
"description": "Custom triage workflow",
"template": "Analyze feedback and..."
}
]
}
当地发展环境
克隆存储库以修改服务器、运行测试或贡献。
步骤1:克隆和构建
git clone https://github.com/opensourceops/canny-mcp-server.git
cd canny-mcp-server
npm install
npm run build
步骤2:配置MCP客户端
选项A:克劳德代码(通过CLI)
claude mcp add --transport stdio canny \
--env CANNY_API_KEY=your_api_key \
--env CANNY_SUBDOMAIN=your_subdomain \
--env CANNY_DEFAULT_BOARD=your_board_id \
--env CANNY_CONFIG_PATH=$(pwd)/config/default.json \
-- $(which node) $(pwd)/dist/index.js
选项B:手动JSON配置
添加到MCP客户端的配置文件中:
{
"mcpServers": {
"canny": {
"command": "node",
"args": ["/absolute/path/to/canny-mcp-server/dist/index.js"],
"env": {
"CANNY_API_KEY": "your_api_key",
"CANNY_SUBDOMAIN": "your_subdomain",
"CANNY_DEFAULT_BOARD": "your_board_id",
"CANNY_CONFIG_PATH": "/absolute/path/to/canny-mcp-server/config/default.json"
}
}
}
}
步骤3:重新启动并验证
重新启动MCP客户端,然后询问:
Show me the latest feature requests from Canny.
文档
故障排除
API关键问题
直接测试您的密钥:
curl https://canny.io/api/v1/boards/list --data apiKey=YOUR_API_KEY
这应该会归还你的木板。
工具未出现
- 配置更改后重建:
npm run build - 重新启动MCP客户端(退出并重新打开)
- 检查
CANNY_TOOL_MODE—readonly不包括写入工具 - 在手动JSON配置中使用绝对路径
Node.js版本警告
使用Node.js LTS版本(20.9+、22+或24+)。奇数版本(23、25)是非LTS版本,不受支持。切换至 nvm use 20 或 nvm use 22.
弃用的包警告(ESLint、glob)仅影响devDependencies,不影响生产运行时。
安全
- 永不承诺
.env文件或API密钥 - 使用
readonly通用模式 - 仅在需要时启用写入工具
- 保持
CANNY_API_KEY秘密
项目结构
canny-mcp-server/
├── src/ # TypeScript source
│ ├── index.ts # Entry point
│ ├── server.ts # MCP server
│ ├── api/ # Canny API client
│ ├── tools/ # MCP tools
│ ├── prompts/ # Built-in prompts
│ └── types/ # Type definitions
├── config/
│ └── default.json # Server configuration
├── docs/ # Documentation
├── dist/ # Compiled output (generated)
├── package.json
└── tsconfig.json
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加测试
- 提交拉取请求
许可证
Apache 2.0——请参阅 许可证.
支持
- 问题 — GitHub 问题
- API 参考 — Canny API文件