itsocialist/canny-mcp-server
If you are the rightful owner of canny-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Canny MCP Server is a Model Context Protocol server designed to integrate with Canny.io for efficient customer feedback management, adhering to CIQ's CODE2 principles.
Canny MCP Server
A Model Context Protocol (MCP) server that integrates with Canny.io for customer feedback management. Built following CIQ's CODE2 principles to deliver Customer-Centric, Optimistic, Dedicated, Efficient, and Excellent solutions.
Features
Customer-Centric
- Board Management: List and access all available Canny boards
- Post Retrieval: Get detailed post information with flexible filtering
- Search Capability: Find posts across boards using powerful search
- Content Management: Create and update posts seamlessly
Efficient & Excellent
- Rate Limiting: Built-in protection against API rate limits
- Error Handling: Robust error handling with detailed feedback
- Validation: Input validation using Zod schemas
- Type Safety: Full TypeScript implementation
Installation
Prerequisites
- Node.js 18 or higher
- Canny.io API key
Quick Start
-
Install dependencies:
npm install
-
Set up environment variables:
export CANNY_API_KEY="your_api_key_here" export CANNY_BASE_URL="https://canny.io/api/v1" # Optional
-
Build the server:
npm run build
-
Run in development mode:
npm run dev
Environment Variables
Required
CANNY_API_KEY
: Your Canny.io API key
Optional
CANNY_BASE_URL
: API base URL (default: https://canny.io/api/v1)CANNY_TIMEOUT
: Request timeout in ms (default: 30000)CANNY_MAX_RETRIES
: Max retry attempts (default: 3)CANNY_RATE_LIMIT_RPM
: Requests per minute limit (default: 60)CANNY_RATE_LIMIT_BURST
: Burst limit (default: 10)
Available Tools
Board Tools
get_boards
: List all accessible Canny boards
Post Tools
get_posts
: Get posts from a specific board with filtering optionsget_post
: Get detailed information about a specific postsearch_posts
: Search for posts across boardscreate_post
: Create a new post in a boardupdate_post
: Update an existing post
Usage Examples
Get All Boards
{
"name": "get_boards",
"arguments": {}
}
Get Posts from a Board
{
"name": "get_posts",
"arguments": {
"boardId": "board_123",
"limit": 10,
"status": "open",
"sort": "newest"
}
}
Search Posts
{
"name": "search_posts",
"arguments": {
"query": "feature request",
"limit": 20,
"status": "open"
}
}
Create a Post
{
"name": "create_post",
"arguments": {
"authorId": "user_123",
"boardId": "board_123",
"title": "New Feature Request",
"details": "Detailed description of the feature"
}
}
Development
Running Tests
npm test
Linting
npm run lint
npm run lint:fix
Building
npm run build
Configuration with Claude
Add to your Claude MCP configuration:
{
"mcpServers": {
"canny": {
"command": "node",
"args": ["/path/to/canny-mcp-server/dist/server.js"],
"env": {
"CANNY_API_KEY": "your_api_key_here"
}
}
}
}
Error Handling
The server implements comprehensive error handling:
- API rate limiting protection
- Input validation with detailed error messages
- Network error recovery with retries
- Graceful handling of API failures
Contributing
Following CIQ's CODE2 principles:
- Customer-Centric: Focus on user value in every contribution
- Optimistic: Approach challenges as opportunities
- Dedicated: Own your contributions fully
- Efficient: Leverage existing solutions and automate where possible
- Excellent: Maintain high standards and continuous improvement
License
MIT License