Canny反馈管理MCP服务器

一个用于Canny反馈管理的模型上下文协议(MCP)服务器,通过自然语言管理客户反馈、优先处理功能并简化产品开发流程。

  • by opensourceops
  • TypeScript
  • 本地部署
  • 11 星标
  • 更新于
在 GitHub 查看 opensourceops/canny-mcp-server

使用说明

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证书

  1. API密钥 --参观 canny.io/admin/settings/api
  2. 子域 --您的Canny工作区URL: https://<subdomain>.canny.io
  3. 董事会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

这应该会归还你的木板。

工具未出现

  1. 配置更改后重建: npm run build
  2. 重新启动MCP客户端(退出并重新打开)
  3. 检查 CANNY_TOOL_MODE — readonly 不包括写入工具
  4. 在手动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

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 添加测试
  5. 提交拉取请求

许可证

Apache 2.0——请参阅 许可证.

支持