cfdude/productboard-mcp
If you are the rightful owner of productboard-mcp 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 Productboard MCP Server is a comprehensive Model Context Protocol server designed for seamless integration with the Productboard REST API, offering enterprise-grade tools for managing various Productboard entities.
Productboard MCP Server
A Model Context Protocol (MCP) server that provides comprehensive access to Productboard's REST API with intelligent dynamic tool loading, category-based filtering, and role-based profiles.
š Key Features
- Dynamic Tool Loading: 119+ API operations loaded on-demand to minimize memory usage
- Category-Based Organization: Tools organized into 15+ logical categories
- Condensed Data Views: Flexible detail levels (basic/standard/full) for optimized responses
- Role-Based Profiles: Pre-configured tool sets for different user types
- Auto-Generated Tools: Generate tool implementations directly from OpenAPI spec
- Multi-Workspace Support: Manage multiple Productboard instances seamlessly
- Full TypeScript Support: Type-safe implementation with comprehensive interfaces
- Backward Compatible: Falls back to static tools when needed
š¦ Installation
Option 1: Via Smithery (Recommended)
smithery install productboard
Then add to your Claude Desktop config:
{
"mcpServers": {
"productboard": {
"command": "node",
"args": ["${SMITHERY_PATH}/productboard/build/index.js"],
"env": {
"PRODUCTBOARD_API_TOKEN": "your-api-token"
}
}
}
}
Option 2: Docker
# Using Docker Compose (recommended)
git clone https://github.com/cfdude/productboard-mcp.git
cd productboard-mcp
# Create .env file
echo "PRODUCTBOARD_API_TOKEN=your-api-token" > .env
# Run the server
docker-compose up -d
# Or using Docker directly
docker run -d \
--name productboard-mcp \
-e PRODUCTBOARD_API_TOKEN="your-api-token" \
ghcr.io/cfdude/productboard-mcp:latest
Option 3: NPM Package
npm install @the_cfdude/productboard-mcp
Option 4: From Source
git clone https://github.com/cfdude/productboard-mcp.git
cd productboard-mcp
npm install
npm run build
Note: The generated/
directory is automatically created during the build process. The manifest and tool files are generated from the OpenAPI specification.
š§ Configuration
Basic Setup
Create a .productboard-config.json
file in your project root:
{
"instances": {
"default": {
"apiToken": "YOUR_API_TOKEN",
"baseUrl": "https://api.productboard.com",
"rateLimitPerMinute": 60
}
},
"defaultInstance": "default",
"toolCategories": {
"enabled": ["*"] // Enable all tools
}
}
Advanced Configuration
Role-Based Profiles
{
"toolCategories": {
"activeProfile": "product-manager" // or "customer-success", "developer"
}
}
Custom Tool Selection
{
"toolCategories": {
"enabled": ["notes", "features", "companies", "releases"],
"disabled": ["jiraintegrations", "pluginintegrations"]
}
}
Multi-Workspace Setup
{
"instances": {
"production": {
"apiToken": "PROD_TOKEN",
"baseUrl": "https://api.productboard.com"
},
"staging": {
"apiToken": "STAGING_TOKEN",
"baseUrl": "https://api-staging.productboard.com"
}
},
"workspaces": {
"main": {
"instance": "production",
"workspaceId": "main-workspace"
},
"test": {
"instance": "staging",
"workspaceId": "test-workspace"
}
}
}
š Tool Categories
Core Product Management
- features (22 tools): Feature management, roadmapping, and prioritization
- components (3 tools): Component hierarchy and organization
- products (3 tools): Product line management
- releases (5 tools): Release planning and tracking
- releaseGroups (4 tools): Multi-team release coordination
Customer Insights
- notes (15 tools): Customer feedback, insights, and research
- companies (5 tools): Company/account management
- users (2 tools): User profile and segmentation
- companies & users (18 tools): Combined customer data operations
Planning & Strategy
- objectives (11 tools): Strategic objectives and OKRs
- keyResults (5 tools): Measurable outcomes and KPIs
- initiatives (11 tools): High-level strategic initiatives
- statuses (1 tool): Feature status workflows
Customization
- custom fields (6 tools): Custom field definitions and values
- hierarchyEntitiesCustomFields (3 tools): Entity-specific custom fields
Integrations
- webhooks (4 tools): Event notifications and subscriptions
- pluginIntegrations (10 tools): Third-party integration management
- jiraIntegrations (4 tools): Jira-specific integrations
š Condensed Data Views
Many tools support flexible detail levels to optimize response size and performance:
Detail Levels
basic
- Minimal fields (id, name, and essential identifiers)standard
- Common fields for typical use cases (default)full
- All available fields including nested data
Supported Tools
Tools with condensed data support include:
get_features
/list_features
get_components
/list_components
get_products
/list_products
get_releases
/list_releases
get_notes
/list_notes
get_companies
/list_companies
get_users
/list_users
get_objectives
/list_objectives
get_initiatives
/list_initiatives
get_webhooks
/list_webhooks
Usage Examples
// Get basic feature information (minimal fields)
{
"tool": "get_features",
"arguments": {
"detail": "basic",
"limit": 100
}
}
// Get standard feature details (default)
{
"tool": "get_features",
"arguments": {
"detail": "standard"
}
}
// Get full feature data including all nested objects
{
"tool": "get_features",
"arguments": {
"detail": "full",
"includeSubData": true
}
}
Performance Tips
-
Use
basic
detail level for:- Large data sets
- Quick lookups by ID/name
- Initial exploration
-
Use
standard
detail level for:- Most common operations
- Balanced detail vs. performance
-
Use
full
detail level for:- Complete data exports
- Detailed analysis
- When all fields are needed
-
The
includeSubData
parameter:- When
true
: Returns all nested JSON data - When
false
: Filters based on detail level - Useful for controlling response size
- When
šÆ Usage Examples
With Claude Desktop
Option A: Using Claude Desktop Connectors (New!)
- Open Claude Desktop settings
- Navigate to "Connectors" section
- Click "Add Connector"
- Search for "Productboard MCP"
- Enter your API token and select your preferred tool profile
- Click "Connect"
Option B: Manual Configuration
Add to your Claude Desktop configuration:
{
"mcpServers": {
"productboard": {
"command": "node",
"args": ["/path/to/productboard-mcp/build/index.js"],
"env": {
"PRODUCTBOARD_API_TOKEN": "your-api-token"
}
}
}
}
Common Tool Examples
// Create a note from customer feedback
notes_create({
title: 'Feature request: Dark mode',
content: 'Customer wants dark mode support',
tags: ['ui', 'enhancement'],
user: { email: 'customer@example.com' },
});
// List features with filtering
features_list({
limit: 50,
status: 'in-progress',
includeRaw: false,
});
// Create a release
releases_create({
name: 'Q1 2025 Release',
description: 'Major feature updates',
startDate: '2025-01-01',
endDate: '2025-03-31',
});
š ļø Development
Generate Tools from OpenAPI
# 1. Generate tool manifest (required first)
npm run generate-manifest
# 2. Generate missing tool implementations
npm run generate-tools
# 3. Build the TypeScript project
npm run build
Testing
# Run the MCP inspector
npm run dev
# Test dynamic loading system
npx tsx scripts/test-dynamic-loading.ts
Project Structure
productboard-mcp/
āāā src/
ā āāā tools/
ā ā āāā registry.ts # Dynamic tool loading system
ā ā āāā index-dynamic.ts # Dynamic tool handler
ā ā āāā *.ts # Tool implementations
ā āāā utils/
ā ā āāā tool-wrapper.ts # API client wrapper
ā āāā productboard-server.ts # Main server class
āāā generated/
ā āāā manifest.json # Tool metadata
ā āāā tools/ # Auto-generated tools
āāā scripts/
ā āāā generate-manifest.ts # Manifest generator
ā āāā generate-tools.ts # Tool generator
āāā .productboard-config.json # Your configuration
š Dynamic Loading Architecture
The server uses a three-tier approach:
- Discovery: Tool manifest provides metadata without loading code
- Registration: Tools are registered with lazy loaders
- Execution: Implementation loaded only when tool is called
This enables:
- Fast startup times
- Minimal memory usage
- Dynamic tool filtering
- Runtime configuration updates
š Security
- API tokens should be stored in
.productboard-config.json
(gitignored) - Use environment variables for CI/CD:
PRODUCTBOARD_API_TOKEN
- The example config uses placeholder values
- Never commit real tokens to version control
š Performance
- Initial load: ~50ms (manifest only)
- First tool call: ~100ms (includes dynamic import)
- Subsequent calls: <10ms (cached handler)
- Memory usage: ~20MB base + 1-2MB per loaded category
š¤ Contributing
- Fork the repository
- Create a feature branch
- Run
npm run generate-manifest
after API changes - Submit a pull request
š License
MIT License - see LICENSE file for details
š Resources
š Future Improvements
Based on code review feedback, here are suggested improvements for future development:
Type Safety Enhancements
- Replace
any
types with proper TypeScript interfaces throughout the codebase - Create specific types for API responses instead of using generic types
- Add stricter type checking for tool arguments and return values
Error Handling Improvements
- Implement more granular error types for different API failure scenarios
- Add retry logic with exponential backoff for transient failures
- Improve error messages with actionable suggestions for users
Code Organization
- Consider splitting large tool files (features.ts, notes.ts) into smaller modules
- Extract common patterns into shared utilities
- Implement a proper dependency injection pattern for better testability
Testing Enhancements
- Add integration tests that mock the Productboard API
- Increase test coverage for edge cases and error scenarios
- Add performance benchmarks for dynamic tool loading
Documentation
- Add JSDoc comments for all public functions and interfaces
- Create detailed examples for complex tool usage patterns
- Document the tool generation process more thoroughly
Performance Optimizations
- Implement request batching for multiple API calls
- Add response caching with configurable TTL
- Optimize the manifest generation for faster startup
Security Enhancements
- Add input validation for all tool parameters
- Implement rate limiting at the MCP server level
- Add audit logging for sensitive operations
šļø Roadmap
- Add caching layer for frequently used tools
- Implement tool usage analytics
- Add GraphQL support
- Create tool composition workflows
- Add rate limit handling strategies
Built with ā¤ļø for the Productboard community