一个用于Canny反馈管理的生产就绪型模型上下文协议(MCP)服务器。通过集成Canny与任何兼容MCP的AI客户端,可以使用自然语言来管理客户反馈、优先处理功能,并简化产品开发流程。
nvm usegit clone https://github.com/opensourceops/canny-mcp-server.git
cd canny-mcp-server
npm install
npm run build
https://ideas.harness.io/admin/board/feature-requestcanny_list_boards将服务器添加到您的MCP客户端配置中。具体方法取决于您的客户端:
claude mcp add --transport stdio canny \
--env CANNY_API_KEY=your_api_key_here \
--env CANNY_DEFAULT_BOARD=your_board_id_here \
--env CANNY_CONFIG_PATH=$(pwd)/config/default.json \
-- $(which node) $(pwd)/dist/index.js
添加到您的MCP客户端配置文件中:
{
"mcpServers": {
"canny": {
"command": "node",
"args": ["/绝对路径/canny-mcp-server/dist/index.js"],
"env": {
"CANNY_API_KEY": "your_api_key_here",
"CANNY_DEFAULT_BOARD": "your_board_id_here",
"CANNY_CONFIG_PATH": "/绝对路径/canny-mcp-server/config/default.json"
}
}
}
}
替换:
your_api_key_here 为您的Canny API密钥your_board_id_here 为您的板ID/绝对路径/canny-mcp-server 为实际路径完全退出并重新启动您的MCP客户端以使更改生效。
在您的MCP客户端中询问:
你能列出可用的Canny工具吗?
您应该看到包括canny_list_posts、canny_create_post、canny_update_post、canny_add_vote等在内的25个工具列表。
尝试在您的MCP客户端中运行这些命令:
显示来自Canny的最新功能请求
获取Canny帖子ID:<您的帖子ID> 的详情
canny_list_boards - 列出所有板canny_list_categories - 列出类别canny_list_tags - 列出可用标签canny_list_companies - 列出公司canny_list_posts - 列出带有过滤器的帖子canny_get_post - 获取详细的帖子信息canny_create_post - 创建带有图片、预计完成时间和负责人的新帖子canny_update_post - 更新帖子详情,标题、描述、预计完成时间、图片canny_update_post_status - 更改帖子状态并通知canny_change_category - 将帖子移动到不同类别canny_create_category - 创建新的板类别canny_list_comments - 列出带有公司过滤的帖子评论canny_create_comment - 添加带有图片支持的评论canny_delete_comment - 删除评论canny_list_votes - 列出投票canny_add_vote - 添加投票canny_remove_vote - 移除投票canny_find_or_create_user - 根据ID、电子邮件或userID获取或创建用户canny_get_user_details - 通过ID、电子邮件或userID获取用户信息canny_link_company - 将用户链接到公司并跟踪MRRcanny_link_jira_issue - 将Jira问题链接到帖子canny_unlink_jira_issue - 解除Jira问题链接canny_batch_update_status - 更新多个帖子的状态canny_batch_tag - 标记多个帖子canny_batch_merge - 合并重复的帖子默认情况下,服务器运行在只读模式。要启用写入操作:
编辑 config/default.json:
{
"server": {
"toolMode": "all" // 启用所有工具,包括写入操作
}
}
更改后重建:
npm run build
可用模式:
"readonly" - 仅读取操作(默认,安全)"all" - 所有工具,包括写入操作"posts,engagement" - 特定工具集(逗号分隔)通过编辑 config/default.json 添加自定义PM工作流:
{
"prompts": [
{
"name": "my_workflow",
"description": "我的自定义工作流",
"template": "分析反馈并..."
}
]
}
详见docs/PROMPT_CONFIGURATION.md。
测试您的API密钥:
curl https://canny.io/api/v1/boards/list --data apiKey=YOUR_API_KEY
应返回您的板列表。
配置更改后重建:
npm run build
完全重启您的MCP客户端(退出并重新打开)
检查 config/default.json 中的 toolMode
验证路径是否为绝对路径在您的MCP客户端配置中
症状:
npm warn EBADENGINE 不支持的引擎 {
package: 'expect@30.2.0',
required: { node: '^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0' }
}
解决方案:
nvm use 20 或 nvm use 22症状:
npm warn deprecated eslint@8.57.1: 此版本不再受支持
npm warn deprecated glob@7.2.3: Glob 版本低于 v9 不再受支持
影响:
如何处理:
.env 文件或API密钥到GitCANNY_API_KEY 保密canny-mcp/
├── src/ # TypeScript 源代码
│ ├── index.ts # 主入口点
│ ├── server.ts # MCP 服务器实现
│ ├── api/ # Canny API 客户端
│ ├── tools/ # MCP 工具
│ ├── prompts/ # 内置提示
│ └── types/ # TypeScript 定义
├── config/
│ └── default.json # 服务器配置
├── docs/ # 文档
├── dist/ # 编译的JavaScript(生成)
├── package.json
└── tsconfig.json
欢迎贡献!请:
Apache 2.0 许可证 - 详情见LICENSE文件
docs/文件夹中的详细指南由❤️为产品经理打造