Productive Simple MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PRODUCTIVE_API_KEY | Yes | Your Productive API token | |
| PRODUCTIVE_TIMEOUT | No | Request timeout in seconds | 30 |
| PRODUCTIVE_BASE_URL | No | Base URL for Productive API | https://api.productive.io/api/v2 |
| PRODUCTIVE_ORGANIZATION | Yes | Your Productive organization ID |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| quick_search | Quick search across projects, tasks, pages, and actions. This tool provides fast, comprehensive search across all Productive content types including projects, tasks, pages, and actions. It's optimized for quick lookups and general search queries. Returns: Search results from Productive API including: - Matching projects, tasks, pages, and actions - Relevance scores and metadata - Full entity details for each match Examples: quick_search("red") # Search for "red" across all content types quick_search("project", search_types=["project"]) # Search only in projects quick_search("meeting", deep_search=False) # Quick search without deep scan |
| list_recent_activity | Get a summarized feed of recent activities and updates. Returns recent changes, task updates, comments, new documents and activities in chronological order. Examples: list_recent_activity() # Last 24 hours, all activity list_recent_activity(hours=168) # Last week list_recent_activity(hours=48, project_id=343136) # Last 2 days on specific project list_recent_activity(hours=24, user_id=12345) # What a specific user did today list_recent_activity(hours=24, activity_type=1) # Only comments from last day list_recent_activity(hours=168, item_type='Task') # Task activities from last week list_recent_activity(hours=168, event_type='edit') # Task edits from last week list_tasks(extra_filters={'filter[status][eq]': 2}, sort='-updated_at', page_size=10) # Recently closed tasks |
| list_projects | List all projects with basic information. Returns project data including:
|
| list_foldersA | List folders in a project. Productive exposes folders through the Returns folder data including:
|
| get_folder | Get folder details by folder ID. Productive exposes folders through the |
| list_workflow_statusesA | List workflow statuses from Productive. Useful for understanding valid task status values by workflow. |
| list_time_entriesA | List time entries with optional date and relationship filters. Returns logged work records and related references (person/service/task). |
| list_tasksA | List tasks with optional filtering and pagination. Supports filtering by project, assignee, status, and other criteria. All parameters are optional - omit to fetch all tasks. Example of extra_filters:
Returns: Dictionary of tasks matching the provided filters |
| get_taskA | Get detailed task information by its internal task ID (e.g., 14677418). Returns task details including:
|
| get_task_historyA | Get comprehensive history for a specific task. Returns aggregated task history including:
Examples: get_task_history(14677921) # Default 30-day history get_task_history(14677921, hours=168) # Last week only get_task_history(14677921, hours=24) # Last 24 hours |
| list_comments | List comments with optional filtering by project or task. Use this when: You need full comment metadata (text, author, timestamps, attachments, mentions) and want to filter by specific project, task, or discussion thread. Returns:
Use extra_filters with filter[discussion_id][eq] to target a specific thread. |
| list_todosA | List todo checklist items with optional filtering by task. Use this when: You need to browse or filter checklist items across tasks (e.g., find all open todos in a project, filter by assignee). Use get_todo when you need full details of a specific todo. Returns:
Filter by task_id to get all checklist items for a specific task. |
| get_todoA | Get a specific todo checklist item by ID. Use this when: You need full details of a specific todo (including project/client context, time estimates, related comments/attachments). Returns:
|
| list_pages | List pages/documents with optional filtering by project or creator. Use this when: You need to browse or search for pages by project, creator, or to retrieve page metadata/titles without full content. Pages in Productive are documents that can contain rich text content, attachments, and are organized within projects. Returns page titles, content, metadata, and project relationships. Examples: list_pages(project_id=1234) # All pages in a project list_pages(creator_id=567) # Pages created by a specific person |
| get_pageA | Get a specific page/document by ID, including full content body. Use this when: You need the full content body of a specific page (not just metadata or titles). |
| list_peopleA | List all team members with optional pagination. Returns:
|
| get_personA | Get detailed information about a specific team member by ID. Use this when: You need detailed information about a specific person (full name, email, role, title, activity timestamps, custom fields, avatar). Use list_people when you need to browse or search multiple people. Returns:
|
| list_attachmentsA | List attachment/file metadata with optional filtering. Use this when: You need to browse or search attachments (files associated with tasks, comments, expenses). Note: returns metadata only — actual file content is not included. Attachments are files (PDFs, images, documents) associated with tasks, comments, expenses, etc. Returns:
Note: returns metadata only — actual file content is not included. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/druellan/Productive-Simple-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server