Integrate the Productboard API into agentic workflows via MCP
get_companies
get_company_detail
get_components
get_component_detail
get_features
get_feature_detail
get_feature_statuses
get_notes
get_products
get_product_detail
Setup
Access Token
Obtain your access token referring to this guidance
Usage with Claude Desktop
To use this with Claude Desktop, add the following to your claude_desktop_config.json
:
NPX
{
"mcpServers": {
"productboard": {
"command": "npx",
"args": [
"-y",
"productboard-mcp"
],
"env": {
"PRODUCTBOARD_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
[
{
"description": "Returns detail of all products. This API is paginated and the page limit is always 100",
"inputSchema": {
"properties": {
"page": {
"default": 1,
"type": "number"
}
},
"type": "object"
},
"name": "get_products"
},
{
"description": "Returns detailed information about a specific product",
"inputSchema": {
"properties": {
"productId": {
"description": "ID of the product to retrieve",
"type": "string"
}
},
"required": [
"productId"
],
"type": "object"
},
"name": "get_product_detail"
},
{
"description": "Returns a list of all features. This API is paginated and the page limit is always 100",
"inputSchema": {
"properties": {
"page": {
"default": 1,
"type": "number"
}
},
"type": "object"
},
"name": "get_features"
},
{
"description": "Returns detailed information about a specific feature",
"inputSchema": {
"properties": {
"featureId": {
"description": "ID of the feature to retrieve",
"type": "string"
}
},
"required": [
"featureId"
],
"type": "object"
},
"name": "get_feature_detail"
},
{
"description": "Returns a list of all components. This API is paginated and the page limit is always 100",
"inputSchema": {
"properties": {
"page": {
"default": 1,
"type": "number"
}
},
"type": "object"
},
"name": "get_components"
},
{
"description": "Returns detailed information about a specific component",
"inputSchema": {
"properties": {
"componentId": {
"description": "ID of the component to retrieve",
"type": "string"
}
},
"required": [
"componentId"
],
"type": "object"
},
"name": "get_component_detail"
},
{
"description": "Returns a list of all feature statuses. This API is paginated and the page limit is always 100",
"inputSchema": {
"properties": {
"page": {
"default": 1,
"type": "number"
}
},
"type": "object"
},
"name": "get_feature_statuses"
},
{
"description": "Returns a list of all notes",
"inputSchema": {
"properties": {
"allTags": {
"description": "Return only notes that have been assigned all of the tags in the array. Cannot be combined with anyTag",
"type": "string"
},
"anyTag": {
"description": "Return only notes that have been assigned any of the tags in the array. Cannot be combined with allTags",
"type": "string"
},
"companyId": {
"description": "Return only notes for specific company ID",
"type": "string"
},
"createdFrom": {
"description": "Return only notes created since given date. Cannot be combined with last",
"format": "date",
"type": "string"
},
"createdTo": {
"description": "Return only notes created before or equal to the given date. Cannot be combined with last",
"format": "date",
"type": "string"
},
"featureId": {
"description": "Return only notes for specific feature ID or its descendants",
"type": "string"
},
"last": {
"description": "Return only notes created since given span of months (m), days (s), or hours (h). E.g. 6m | 10d | 24h | 1h. Cannot be combined with createdFrom, createdTo, dateFrom, or dateTo",
"type": "string"
},
"ownerEmail": {
"description": "Return only notes owned by a specific owner email",
"type": "string"
},
"pageCursor": {
"description": "Page cursor to get next page of results",
"type": "string"
},
"pageLimit": {
"description": "Page limit",
"type": "number"
},
"source": {
"description": "Return only notes from a specific source origin. This is the unique string identifying the external system from which the data came",
"type": "string"
},
"term": {
"description": "Return only notes by fulltext search",
"type": "string"
},
"updatedFrom": {
"description": "Return only notes updated since given date",
"format": "date",
"type": "string"
},
"updatedTo": {
"description": "Return only notes updated before or equal to the given date",
"format": "date",
"type": "string"
}
},
"type": "object"
},
"name": "get_notes"
},
{
"description": "Returns detailed information about a specific note",
"inputSchema": {
"properties": {
"noteId": {
"description": "ID of the note to retrieve",
"type": "string"
}
},
"required": [
"noteId"
],
"type": "object"
},
"name": "get_note_detail"
},
{
"description": "Returns a list of all companies. This API is paginated and the page limit is always 100",
"inputSchema": {
"properties": {
"page": {
"default": 1,
"type": "number"
}
},
"type": "object"
},
"name": "get_companies"
},
{
"description": "Returns detailed information about a specific company",
"inputSchema": {
"properties": {
"companyId": {
"description": "ID of the company to retrieve",
"type": "string"
}
},
"required": [
"companyId"
],
"type": "object"
},
"name": "get_company_detail"
}
]