Productive.io
Interact with the Productive.io API for project management and productivity tasks.
Productive.io MCP Server
An MCP (Model Context Protocol) server that enables Claude Desktop, Claude Code, 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
Via npm (Recommended)
Install globally:
npm install -g productive-mcp
Or run directly with npx (no installation required):
npx productive-mcp
From Source
- Clone this repository
- Install dependencies:
npm install - Build the project:
npm run build
Configuration
Getting Your Credentials
To obtain your Productive.io credentials:
- Log in to Productive.io
- Go to Settings → API integrations
- Generate a new token (choose read-only for safety, or full access for task creation)
- 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
Environment Variables
The server requires the following environment variables:
| Variable | Required | Description |
|---|---|---|
PRODUCTIVE_API_TOKEN | Yes | Your Productive.io API token |
PRODUCTIVE_ORG_ID | Yes | Your organization ID |
PRODUCTIVE_USER_ID | No | Your user ID (required for my_tasks tool) |
Usage with Claude Desktop
Add the server to your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Using npx (Recommended)
{
"mcpServers": {
"productive": {
"command": "npx",
"args": ["-y", "productive-mcp"],
"env": {
"PRODUCTIVE_API_TOKEN": "your_api_token_here",
"PRODUCTIVE_ORG_ID": "your_organization_id_here",
"PRODUCTIVE_USER_ID": "your_user_id_here"
}
}
}
}
Using Global Installation
{
"mcpServers": {
"productive": {
"command": "productive-mcp",
"env": {
"PRODUCTIVE_API_TOKEN": "your_api_token_here",
"PRODUCTIVE_ORG_ID": "your_organization_id_here",
"PRODUCTIVE_USER_ID": "your_user_id_here"
}
}
}
}
Using Local Build
{
"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"
}
}
}
}
Note: PRODUCTIVE_USER_ID is optional but required for the my_tasks tool to work.
After adding the configuration, restart Claude Desktop.
Usage with Claude Code
Add the server to your Claude Code configuration using the CLI:
claude mcp add productive -- npx -y productive-mcp
Then set your environment variables. You can either:
Option 1: Add to your shell profile (~/.zshrc or ~/.bashrc):
export PRODUCTIVE_API_TOKEN="your_api_token_here"
export PRODUCTIVE_ORG_ID="your_organization_id_here"
export PRODUCTIVE_USER_ID="your_user_id_here"
Option 2: Create a wrapper script and add it as an MCP server:
-
Create a script file (e.g.,
~/scripts/productive-mcp.sh):#!/bin/bash export PRODUCTIVE_API_TOKEN="your_api_token_here" export PRODUCTIVE_ORG_ID="your_organization_id_here" export PRODUCTIVE_USER_ID="your_user_id_here" npx -y productive-mcp -
Make it executable:
chmod +x ~/scripts/productive-mcp.sh -
Add to Claude Code:
claude mcp add productive ~/scripts/productive-mcp.sh
Option 3: Edit the Claude Code settings file directly at ~/.claude/settings.json:
{
"mcpServers": {
"productive": {
"command": "npx",
"args": ["-y", "productive-mcp"],
"env": {
"PRODUCTIVE_API_TOKEN": "your_api_token_here",
"PRODUCTIVE_ORG_ID": "your_organization_id_here",
"PRODUCTIVE_USER_ID": "your_user_id_here"
}
}
}
}
Restart Claude Code after configuration.
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
Related Servers
Notion
Connects AI assistants to your Notion workspace, allowing you to search, create, and manage content using natural language.
Feishu/Lark OpenAPI
Connects AI agents to the Feishu/Lark platform for automating tasks like document processing, conversation management, and calendar scheduling.
Feishu MCP Server
Access and manage Feishu documents for AI coding tools, enabling structured content retrieval, editing, and search.
Backcast MCP Server
The Outcome Backcasting MCP is a strategic planning tool that helps you work backwards from a desired future outcome to identify the specific steps, resources, and dependencies needed to achieve your goals. Unlike traditional forward planning, backcasting starts with your end goal and creates a reverse roadmap to get there.
GoHighLevel
Integrate GoHighLevel with AI assistants like Claude and ChatGPT using a private API key.
Fathom Analytics
Access and analyze Fathom Analytics data and reports
What Time Is It Now
Provides the current time in Japan Standard Time (JST).
Joplin MCP Server
A server that enables access to Joplin notes and to-dos through the Model Context Protocol (MCP).
DateTime
Provides current date and time with configurable formats and timezones.
Umbraco MCP
Interact with the Umbraco CMS Management API for administrative tasks.