Productive.io MCP Server
An MCP (Model Context Protocol) server that enables Claude Desktop and other MCP-compatible clients to interact with the Productive.io API.
Features
- Companies & Projects: List companies and projects with status filtering
- Task Management: List, create, and get individual tasks with various filters
- Task Operations: Add comments to tasks and update task status via workflow statuses
- Board & Task List Management: Create and manage boards and task lists within projects
- People Management: List people in your organization with filtering options
- Workflow Management: List and work with workflow statuses for proper task status updates
- User Context: Supports "me" references when PRODUCTIVE_USER_ID is configured
- Activity Tracking: View activities and recent updates across your organization
Installation
- Clone this repository
- Install dependencies:
npm install - Build the project:
npm run build
Configuration
Copy
.env.exampleto.env:cp .env.example .envAdd your Productive.io credentials:
PRODUCTIVE_API_TOKEN=your_api_token_here PRODUCTIVE_ORG_ID=your_organization_id_here
To obtain these credentials:
- Log in to Productive.io
- Go to Settings → API integrations
- Generate a new token (choose read-only for safety)
- Copy the token and organization ID
To find your user ID:
- You can use the API to list people and find your ID
- Or check the URL when viewing your profile in Productive.io
Usage with Claude Desktop
Build the server:
npm run buildAdd the server to your Claude Desktop configuration file:
- On macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - On Windows:
%APPDATA%\Claude\claude_desktop_config.json
- On macOS:
Add the following configuration:
{ "mcpServers": { "productive": { "command": "node", "args": ["/path/to/productive-mcp/build/index.js"], "env": { "PRODUCTIVE_API_TOKEN": "your_api_token_here", "PRODUCTIVE_ORG_ID": "your_organization_id_here", "PRODUCTIVE_USER_ID": "your_user_id_here" } } } }Replace
/path/to/productive-mcpwith the actual absolute path to your project directory.Note:
PRODUCTIVE_USER_IDis optional but required for themy_taskstool to work.Restart Claude Desktop
Available Tools
User & Context Tools
whoami
Get the current user context and check which user ID is configured for "me" operations.
Company & Project Tools
list_companies
Get a list of companies/customers from Productive.io
Parameters:
status(optional): Filter by company status ('active' or 'archived')limit(optional): Number of companies to return (1-200, default: 30)
list_projects
Get a list of projects from Productive.io
Parameters:
status(optional): Filter by project status ('active' or 'archived')company_id(optional): Filter projects by company IDlimit(optional): Number of projects to return (1-200, default: 30)
Board & Task List Tools
list_boards
Get a list of boards from projects
Parameters:
project_id(optional): Filter boards by project IDlimit(optional): Number of boards to return (max 200, default: 30)
create_board
Create a new board in a Productive.io project
Parameters:
project_id(required): The ID of the project to create the board inname(required): Name of the boarddescription(optional): Description of the board
list_task_lists
Get a list of task lists from boards
Parameters:
board_id(optional): Filter task lists by board IDlimit(optional): Number of task lists to return (max 200, default: 30)
create_task_list
Create a new task list in a board
Parameters:
board_id(required): The ID of the board to create the task list inproject_id(required): The ID of the projectname(required): Name of the task listdescription(optional): Description of the task list
Task Management Tools
list_tasks
Get a list of tasks from Productive.io
Parameters:
project_id(optional): Filter tasks by project IDassignee_id(optional): Filter tasks by assignee IDstatus(optional): Filter by task status ('open' or 'closed')limit(optional): Number of tasks to return (1-200, default: 30)
get_project_tasks
Get all tasks for a specific project
Parameters:
project_id(required): The ID of the projectstatus(optional): Filter by task status ('open' or 'closed')
get_task
Get detailed information about a specific task
Parameters:
task_id(required): The ID of the task to retrieve
create_task
Create a new task in Productive.io
Parameters:
title(required): Task titledescription(optional): Task descriptionproject_id(optional): ID of the project to add the task toboard_id(optional): ID of the board to add the task totask_list_id(optional): ID of the task list to add the task toassignee_id(optional): ID of the person to assign (use "me" for configured user)due_date(optional): Due date in YYYY-MM-DD formatstatus(optional): Task status ('open' or 'closed', default: 'open')
update_task_assignment
Update the assignee of an existing task
Parameters:
task_id(required): ID of the task to updateassignee_id(required): ID of the person to assign (use "me" for configured user, "null" to unassign)
my_tasks
Get tasks assigned to you (requires PRODUCTIVE_USER_ID to be configured)
Parameters:
status(optional): Filter by task status ('open' or 'closed')limit(optional): Number of tasks to return (1-200, default: 30)
Task Operations Tools
add_task_comment
Add a comment to a task
Parameters:
task_id(required): ID of the task to add the comment tocomment(required): Text content of the comment
update_task_status
Update the status of a task using workflow status ID
Parameters:
task_id(required): ID of the task to updateworkflow_status_id(required): ID of the workflow status to set
list_workflow_statuses
List workflow statuses available in Productive.io (used for task status updates)
Parameters:
workflow_id(optional): Filter by workflow IDcategory_id(optional): Filter by category (1=Not Started, 2=Started, 3=Closed)limit(optional): Number of statuses to return (1-200, default: 50)
People Management Tools
list_people
List people in the organization with optional filters
Parameters:
company_id(optional): Filter people by company IDproject_id(optional): Filter people assigned to a specific projectis_active(optional): Filter by active statusemail(optional): Filter by email addresslimit(optional): Maximum number of people to return (default: 50, max: 100)page(optional): Page number for pagination (default: 1)
get_project_people
Get all people assigned to a specific project
Parameters:
project_id(required): The project ID to get people foris_active(optional): Filter by active status (default: true)limit(optional): Maximum number of people to return (default: 50, max: 100)page(optional): Page number for pagination (default: 1)
Activity & Updates Tools
list_activities
List activities and changes across your organization
Parameters:
task_id(optional): Filter activities by task IDproject_id(optional): Filter activities by project IDperson_id(optional): Filter activities by person IDitem_type(optional): Filter by item typeevent(optional): Filter by event typeafter(optional): Filter activities after this date (ISO 8601 format)before(optional): Filter activities before this date (ISO 8601 format)limit(optional): Number of activities to returnpage(optional): Page number for pagination
get_recent_updates
Get recent updates and activities in a summarized format
Parameters:
limit(optional): Number of recent updates to return (default: 20)hours(optional): Number of hours to look back (default: 24)
Common Workflows
Updating Task Status
To update a task's status, you need to use workflow status IDs rather than simple "open"/"closed" values:
First, list available workflow statuses:
list_workflow_statusesThis will show you all available statuses with their IDs and categories (Not Started=1, Started=2, Closed=3).
Then update the task status:
update_task_status { "task_id": "12399194", "workflow_status_id": "specific_status_id_from_step_1" }
Working with "me" Context
When PRODUCTIVE_USER_ID is configured, you can use "me" in several tools:
create_taskwith"assignee_id": "me"update_task_assignmentwith"assignee_id": "me"my_tasksto get your assigned taskswhoamito verify your configured user context
Creating Complete Task Workflows
- Create a board:
create_board - Create task lists:
create_task_list - Create tasks:
create_task - Add comments:
add_task_comment - Update status: Use
list_workflow_statusesthenupdate_task_status - Track progress: Use
list_activitiesorget_recent_updates
Development
- Run in development mode:
npm run dev - Build:
npm run build - Start built server:
npm start
License
ISC




