npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@iflow-mcp/opensourceops-canny-mcp-server

v1.1.0

Published

MCP server for Canny feedback management with Jira integration

Readme

MseeP.ai Security Assessment Badge Verified on MseeP

Canny MCP Server

A production-ready Model Context Protocol (MCP) server for Canny feedback management. Integrate Canny with any MCP-compatible AI client to manage customer feedback, prioritize features, and streamline your product development workflow using natural language.

Features

  • 25 Comprehensive Tools - Full Canny API coverage for posts, comments, votes, users, categories, and Jira integration
  • Token-Optimized - 70-90% reduction in response size vs raw API
  • Jira Integration - Link posts to Jira issues seamlessly
  • PM-Focused Prompts - Built-in workflows for weekly triage, sprint planning, and executive reporting
  • Smart Pagination - Automatic cursor/skip handling
  • Batch Operations - Efficient bulk updates for status changes and tagging
  • Configurable - Flexible toolset selection and custom prompts
  • Image Support: Add images to posts and comments
  • ETA Management: Set and update ETAs with public/private visibility
  • Owner Assignment: Assign post owners for accountability
  • Company Tracking: Full company association with MRR/monthly spend
  • Multi-Lookup: Find users by ID, email, or custom userID
  • Company Filtering: Filter comments by company
  • Status Changes: Required changerID for audit trails

Prerequisites

  • Node.js v18.18+, v20.9+, or v22+ (LTS versions recommended)
    • ⚠️ Note: Avoid Node v23 (non-LTS, unsupported by testing tools)
    • Use nvm for easy version management: nvm use
  • npm v9 or higher (comes with Node.js)
  • MCP Client - Any Model Context Protocol compatible client (e.g., Claude Code, Continue.dev, or custom implementations)
  • Canny API Key - Get yours at canny.io/admin/settings/api

Installation

Step 1: Clone the Repository

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

Step 2: Install Dependencies

npm install

Step 3: Build the Project

npm run build

Step 4: Get Your Canny Credentials

  1. API Key: Visit canny.io/admin/settings/api
  2. Board ID: Visit your Canny board and copy the ID from the URL
    • Example: https://ideas.harness.io/admin/board/feature-request
    • Board ID is in the URL path or use canny_list_boards after setup

Step 5: Configure Your MCP Client

Add the server to your MCP client's configuration. The exact method depends on your client:

Option A: Claude Code (via 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

Option B: Manual Configuration

Add to your MCP client's config file:

{
  "mcpServers": {
    "canny": {
      "command": "node",
      "args": ["/absolute/path/to/canny-mcp-server/dist/index.js"],
      "env": {
        "CANNY_API_KEY": "your_api_key_here",
        "CANNY_DEFAULT_BOARD": "your_board_id_here",
        "CANNY_CONFIG_PATH": "/absolute/path/to/canny-mcp-server/config/default.json"
      }
    }
  }
}

Replace:

  • your_api_key_here with your Canny API key
  • your_board_id_here with your board ID
  • /absolute/path/to/canny-mcp-server with the actual path

Step 6: Restart Your MCP Client

Completely quit and restart your MCP client for changes to take effect.

Step 7: Verify Installation

In your MCP client, ask:

Can you list the available Canny tools?

You should see a list of 25 tools including canny_list_posts, canny_create_post, canny_update_post, canny_add_vote, etc.

Quick Test

Try these commands in your MCP client:

Show me the latest feature requests from Canny
Get details for Canny post ID: <your-post-id>

Available Tools

Discovery (4 tools)

  • canny_list_boards - List all boards
  • canny_list_categories - List categories
  • canny_list_tags - List available tags
  • canny_list_companies - List companies

Posts (7 tools)

  • canny_list_posts - List posts with filters
  • canny_get_post - Get detailed post info
  • canny_create_post - Create new post with images, ETA, owner
  • canny_update_post - Update post details, title, description, ETA, images
  • canny_update_post_status - Change post status with notifications
  • canny_change_category - Move post to different category
  • canny_create_category - Create new board category

Engagement (6 tools)

  • canny_list_comments - List post comments with company filtering
  • canny_create_comment - Add comment with image support
  • canny_delete_comment - Remove comment
  • canny_list_votes - List votes
  • canny_add_vote - Add vote
  • canny_remove_vote - Remove vote

Users (3 tools)

  • canny_find_or_create_user - Get or create user with company associations
  • canny_get_user_details - Get user info by ID, email, or userID
  • canny_link_company - Link user to company with MRR tracking

Jira (2 tools)

  • canny_link_jira_issue - Link Jira issue to post
  • canny_unlink_jira_issue - Unlink Jira issue

Batch Operations (3 tools)

  • canny_batch_update_status - Update multiple post statuses
  • canny_batch_tag - Tag multiple posts
  • canny_batch_merge - Merge duplicate posts

Configuration

Tool Modes

By default, the server runs in readonly mode. To enable write operations:

Edit config/default.json:

{
  "server": {
    "toolMode": "all"  // Enable all tools including write operations
  }
}

Rebuild after changes:

npm run build

Available modes:

  • "readonly" - Only read operations (default, safe)
  • "all" - All tools including write operations
  • "posts,engagement" - Specific toolsets (comma-separated)

Custom Prompts

Add custom PM workflows by editing config/default.json:

{
  "prompts": [
    {
      "name": "my_workflow",
      "description": "My custom workflow",
      "template": "Analyze feedback and..."
    }
  ]
}

See docs/PROMPT_CONFIGURATION.md for details.

Documentation

Troubleshooting

API Key Issues

Test your API key:

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

Should return your boards list.

Tools Not Working

  1. Rebuild after config changes:

    npm run build
  2. Restart your MCP client completely (quit and reopen)

  3. Check toolMode in config/default.json

  4. Verify paths are absolute in your MCP client configuration

npm Install Warnings

EBADENGINE Warnings (Node v23)

Symptoms:

npm warn EBADENGINE Unsupported engine {
  package: '[email protected]',
  required: { node: '^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0' }
}

Solution:

  • Use Node.js LTS versions (18.18+, 20.9+, or 22+)
  • Node v23 is non-LTS and unsupported by Jest
  • Switch versions: nvm use 20 or nvm use 22
  • Warnings are safe to ignore if you're on v23 (tests still pass)

Deprecated Package Warnings

Symptoms:

npm warn deprecated [email protected]: This version is no longer supported
npm warn deprecated [email protected]: Glob versions prior to v9 are no longer supported

Impact:

  • These are devDependencies (testing/linting only)
  • Production runtime unaffected
  • Will be resolved in upcoming dependency updates

What to do:

  • ✅ Safe to ignore for now
  • ✅ All tests pass (104/104)
  • ✅ Build succeeds
  • 📋 Planned update to ESLint v9 and modern tooling

Security

  • Never commit .env files or API keys to Git
  • Use readonly mode for general use
  • Enable write mode only when needed
  • Keep your CANNY_API_KEY secret

Project Structure

canny-mcp/
├── src/                 # TypeScript source code
│   ├── index.ts        # Main entry point
│   ├── server.ts       # MCP server implementation
│   ├── api/            # Canny API client
│   ├── tools/          # MCP tools
│   ├── prompts/        # Built-in prompts
│   └── types/          # TypeScript definitions
├── config/
│   └── default.json    # Server configuration
├── docs/               # Documentation
├── dist/               # Compiled JavaScript (generated)
├── package.json
└── tsconfig.json

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

Apache 2.0 License - See LICENSE file for details

Support

  • Issues: Report bugs and feature requests via GitHub Issues
  • Documentation: See docs/ folder for detailed guides
  • API Reference: Canny API Documentation

Built with ❤️ for Product Managers