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 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.example
to.env
:cp .env.example .env
-
Add 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 build
-
Add 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-mcp
with the actual absolute path to your project directory.Note:
PRODUCTIVE_USER_ID
is optional but required for themy_tasks
tool 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_statuses
This 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_task
with"assignee_id": "me"
update_task_assignment
with"assignee_id": "me"
my_tasks
to get your assigned taskswhoami
to 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_statuses
thenupdate_task_status
- Track progress: Use
list_activities
orget_recent_updates
Development
- Run in development mode:
npm run dev
- Build:
npm run build
- Start built server:
npm start
License
ISC
Related Servers
WeRead
Access your WeChat Reading (微信读书) bookshelf, notes, highlights, and reviews.
Harvest MCP Server
Manage time tracking, projects, clients, and tasks using the Harvest API.
Xero
Interact with the Xero Accounting Software API.
Trello
Integrates with Trello to manage projects, boards, and cards, using Nango for authentication.
Microsoft 365
MCP server that connects to the whole Microsoft 365 suite (Microsoft Office, Outlook, Excel) using Graph API (including mail, files, calendar)
OneNote
Interact with Microsoft OneNote using AI language models like Claude and other LLMs.
TalkToAnki
Seamlessly integrate the Anki flashcard application with AI assistants. Requires Anki desktop with the AnkiConnect plugin.
Jotdown
An MCP server that enables LLMs to create or update Notion pages and generate Markdown Books (mdbooks).
Anytype MCP Server
Interact with the Anytype API using natural language.
Wiki.js
Integrates with Wiki.js, enabling AI to read and update documentation.