返回市场
敏锐-mcp-服务器

敏锐-mcp-服务器

作者:opensourceops4 星标更新:2025-11-11

项目介绍

MseeP.ai 安全评估徽章 在MseeP上验证

Canny MCP Server

一个用于Canny反馈管理的生产就绪型模型上下文协议(MCP)服务器。通过集成Canny与任何兼容MCP的AI客户端,可以使用自然语言来管理客户反馈、优先处理功能,并简化产品开发流程。

功能

  • 25个全面工具 - 完全覆盖Canny API,包括帖子、评论、投票、用户、类别以及Jira集成
  • 优化令牌 - 相比原始API,响应大小减少70-90%
  • Jira集成 - 平滑地将帖子链接到Jira问题
  • 面向产品经理的提示 - 内置工作流,如每周筛选、冲刺计划和执行报告
  • 智能分页 - 自动处理游标/跳过操作
  • 批量操作 - 高效批量更新状态和标签
  • 可配置 - 灵活选择工具集和自定义提示
  • 图片支持:在帖子和评论中添加图片
  • 预计完成时间管理:设置并更新具有公共/私有可见性的预计完成时间
  • 负责人分配:分配帖子负责人以确保责任
  • 公司跟踪:完全关联公司与每月经常性收入(MRR)/月度支出
  • 多查找:通过ID、电子邮件或自定义userID查找用户
  • 公司过滤:按公司过滤评论
  • 状态更改:需要更改ID以进行审计追踪

先决条件

  • Node.js v18.18+,v20.9+ 或 v22+(推荐长期支持版本)
    • ⚠️ 注意:避免使用Node v23(非长期支持,不受测试工具支持)
    • 使用nvm进行简单版本管理:nvm use
  • npm v9或更高版本(随Node.js提供)
  • MCP客户端 - 任何兼容模型上下文协议的客户端(例如,Claude Code,Continue.dev,或自定义实现)
  • Canny API密钥 - 在canny.io/admin/settings/api获取

安装

第一步:克隆仓库

git clone https://github.com/opensourceops/canny-mcp-server.git
cd canny-mcp-server

第二步:安装依赖

npm install

第三步:构建项目

npm run build

第四步:获取您的Canny凭证

  1. API密钥:访问canny.io/admin/settings/api
  2. 板ID:访问您的Canny板并从URL中复制ID
    • 示例:https://ideas.harness.io/admin/board/feature-request
    • 板ID位于URL路径中,或者在设置后使用canny_list_boards

第五步:配置您的MCP客户端

将服务器添加到您的MCP客户端配置中。具体方法取决于您的客户端:

选项A:Claude Code(通过CLI)

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

选项B:手动配置

添加到您的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客户端以使更改生效。

第七步:验证安装

在您的MCP客户端中询问:

你能列出可用的Canny工具吗?

您应该看到包括canny_list_postscanny_create_postcanny_update_postcanny_add_vote等在内的25个工具列表。

快速测试

尝试在您的MCP客户端中运行这些命令:

显示来自Canny的最新功能请求
获取Canny帖子ID:<您的帖子ID> 的详情

可用工具

发现(4个工具)

  • canny_list_boards - 列出所有板
  • canny_list_categories - 列出类别
  • canny_list_tags - 列出可用标签
  • canny_list_companies - 列出公司

帖子(7个工具)

  • canny_list_posts - 列出带有过滤器的帖子
  • canny_get_post - 获取详细的帖子信息
  • canny_create_post - 创建带有图片、预计完成时间和负责人的新帖子
  • canny_update_post - 更新帖子详情,标题、描述、预计完成时间、图片
  • canny_update_post_status - 更改帖子状态并通知
  • canny_change_category - 将帖子移动到不同类别
  • canny_create_category - 创建新的板类别

互动(6个工具)

  • canny_list_comments - 列出带有公司过滤的帖子评论
  • canny_create_comment - 添加带有图片支持的评论
  • canny_delete_comment - 删除评论
  • canny_list_votes - 列出投票
  • canny_add_vote - 添加投票
  • canny_remove_vote - 移除投票

用户(3个工具)

  • canny_find_or_create_user - 根据ID、电子邮件或userID获取或创建用户
  • canny_get_user_details - 通过ID、电子邮件或userID获取用户信息
  • canny_link_company - 将用户链接到公司并跟踪MRR

Jira(2个工具)

  • canny_link_jira_issue - 将Jira问题链接到帖子
  • canny_unlink_jira_issue - 解除Jira问题链接

批量操作(3个工具)

  • 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密钥问题

测试您的API密钥:

curl https://canny.io/api/v1/boards/list --data apiKey=YOUR_API_KEY

应返回您的板列表。

工具无法正常工作

  1. 配置更改后重建:

    npm run build
    
  2. 完全重启您的MCP客户端(退出并重新打开)

  3. 检查 config/default.json 中的 toolMode

  4. 验证路径是否为绝对路径在您的MCP客户端配置中

npm 安装警告

EBADENGINE 警告(Node v23)

症状:

npm warn EBADENGINE 不支持的引擎 {
  package: 'expect@30.2.0',
  required: { node: '^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0' }
}

解决方案:

  • 使用Node.js 长期支持版本(18.18+,20.9+,或22+)
  • Node v23是非长期支持且不受Jest支持
  • 切换版本:nvm use 20nvm use 22
  • 如果您使用的是v23,可以忽略这些警告(测试仍然通过)

过时的包警告

症状:

npm warn deprecated eslint@8.57.1: 此版本不再受支持
npm warn deprecated glob@7.2.3: Glob 版本低于 v9 不再受支持

影响:

  • 这些是开发依赖项(仅用于测试/检查)
  • 生产运行时不受影响
  • 将在未来的依赖项更新中解决

如何处理:

  • ✅ 当前可以忽略
  • ✅ 所有测试通过(104/104)
  • ✅ 构建成功
  • 📋 计划更新到ESLint v9和现代工具

安全

  • 永远不要提交 .env 文件或API密钥到Git
  • 使用只读模式进行常规使用
  • 只在必要时启用写入模式
  • 保持您的 CANNY_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

贡献

欢迎贡献!请:

  1. 分叉仓库
  2. 创建功能分支
  3. 进行更改
  4. 如适用,请添加测试
  5. 提交拉取请求

许可证

Apache 2.0 许可证 - 详情见LICENSE文件

支持

  • 问题:通过GitHub Issues报告错误和功能请求
  • 文档:查看docs/文件夹中的详细指南
  • API参考Canny API 文档

由❤️为产品经理打造