@paca-ai/paca-mcp
v0.4.2
Published
Paca MCP server - Complete API access for AI-powered project management
Downloads
1,178
Maintainers
Readme
Paca MCP Server
Model Context Protocol (MCP) server for Paca — an open-source, AI-native project management platform.
Connect your AI assistant (Claude, Cursor, VS Code Copilot, etc.) to your Paca workspace and manage projects, tasks, sprints, and documents using natural language.
Getting Started
Prerequisites
- Node.js 18+
- A running Paca instance (local or deployed)
- A Paca API key (generate one in your Paca user settings)
Setup
No installation or build step required. Configure your AI agent client to use the MCP server directly via npx.
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
| PACA_API_KEY | ✅ | — | API key for authentication (see below) |
| PACA_API_URL | ❌ | http://localhost:8080 | URL of your Paca API instance |
| PACA_AGENT_ID | ❌ | — | Agent UUID (required when using global agent API key) |
| PACA_PROJECT_ID | ❌* | — | Project UUID for single-project mode (required when PACA_AGENT_ID is set) |
Claude Desktop
Add the following to your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"paca": {
"command": "npx",
"args": ["-y", "@paca-ai/paca-mcp"],
"env": {
"PACA_API_KEY": "your-api-key-here",
"PACA_API_URL": "http://localhost:8080"
}
}
}
}Restart Claude Desktop after saving. Claude will automatically have access to all Paca tools.
VS Code (GitHub Copilot)
Add to your VS Code settings.json or .vscode/mcp.json:
{
"mcp": {
"servers": {
"paca": {
"command": "npx",
"args": ["-y", "@paca-ai/paca-mcp"],
"env": {
"PACA_API_KEY": "your-api-key-here",
"PACA_API_URL": "http://localhost:8080"
}
}
}
}
}Other MCP-Compatible Clients
Any MCP-compatible client can use the server with:
{
"name": "paca",
"command": "npx",
"args": ["-y", "@paca-ai/paca-mcp"],
"env": {
"PACA_API_KEY": "your-api-key-here",
"PACA_API_URL": "http://localhost:8080"
}
}For a full setup walkthrough, see the MCP Server Setup Guide.
Features
- API Key Authentication: Secure access using Paca API keys
- Agent-Specific Permissions: MCP tools are filtered based on agent's project permissions at startup
- Comprehensive Project Management: Full project lifecycle with member and role management
- Advanced Task Management: Tasks with types, statuses, custom fields, and attachments
- Sprint Management: Complete sprint lifecycle management
- Document Management: Documents with folder hierarchy, version history, and file support
- View Management: Multiple view types (sprint, backlog, timeline) with task positioning
- GitHub Integration: Repository linking, PR management, and branch creation
- Collaboration Tools: Comments and activities for team collaboration
- BlockNote Integration: Automatic conversion between BlockNote JSON and Markdown
- Plugin MCP Tools: Plugins can contribute additional MCP tools, loaded automatically at startup
Agent & User Permissions
The MCP server automatically filters available tools based on permissions, whether you're using it as an agent or as a regular user.
Agent Mode vs. User Mode
| Mode | Trigger | API Key Source | Permission Source | Scope |
|---|---|---|---|---|
| Agent Single-Project | PACA_AGENT_ID + PACA_PROJECT_ID | Global AGENT_API_KEY from server config | Agent's permissions in the specified project | Single project only |
| User Single-Project | PACA_PROJECT_ID only (no PACA_AGENT_ID) | User's personal API key | User's global + project permissions | Single project |
| User Global | No PACA_PROJECT_ID | User's personal API key | User's global permissions only | All projects (no project-scoped tools) |
Note: AI agents operate in single-project mode. The global AGENT_API_KEY is configured on the Paca server via the AGENT_API_KEY environment variable.
Agent Mode (Single-Project)
When both PACA_AGENT_ID and PACA_PROJECT_ID are set:
- Authentication: Uses the global
AGENT_API_KEYconfigured on the Paca server - Impersonation:
X-Agent-IDheader specifies which agent to act as - Permission Fetch: Only fetches permissions for the specified project
- Tool Filtering: Shows only tools the agent has permission to use in that project
- Project Validation: Enforces that all tool calls use the configured project ID
- Performance: Optimized for single-project operations (single API call)
How to Get the Agent API Key:
The AGENT_API_KEY is configured on the Paca server, not per-agent. Check your server's environment:
# On the Paca server
echo $AGENT_API_KEY # This is the global agent key to useConfiguration:
{
"mcpServers": {
"paca": {
"command": "npx",
"args": ["-y", "@paca-ai/paca-mcp"],
"env": {
"PACA_API_KEY": "server-agent-key-from-env",
"PACA_API_URL": "http://localhost:8080",
"PACA_AGENT_ID": "your-agent-uuid-here",
"PACA_PROJECT_ID": "your-project-uuid-here"
}
}
}
}User configuration (optional single-project mode):
{
"mcpServers": {
"paca": {
"command": "npx",
"args": ["-y", "@paca-ai/paca-mcp"],
"env": {
"PACA_API_KEY": "your-api-key-here",
"PACA_API_URL": "http://localhost:8080",
"PACA_PROJECT_ID": "your-project-uuid-here"
}
}
}
}User Mode (No Agent ID)
When PACA_AGENT_ID is not set:
- Authentication: Uses user's personal API key (from Settings → API Keys)
- No Impersonation: Acts as the authenticated user directly
- Global Permissions: Fetches global permissions via
GET /api/v1/users/me/global-permissions - Tool Filtering: Shows only globally permitted tools (no project-scoped tools)
- Best Practice: Set
PACA_PROJECT_IDto filter tools at the MCP level and reduce API errors
Configuration:
{
"mcpServers": {
"paca": {
"command": "npx",
"args": ["-y", "@paca-ai/paca-mcp"],
"env": {
"PACA_API_KEY": "your-personal-api-key-here",
"PACA_API_URL": "http://localhost:8080"
}
}
}
}To add project scope:
{
"mcpServers": {
"paca": {
"command": "npx",
"args": ["-y", "@paca-ai/paca-mcp"],
"env": {
"PACA_API_KEY": "your-personal-api-key-here",
"PACA_API_URL": "http://localhost:8080",
"PACA_PROJECT_ID": "your-project-uuid-here"
}
}
}
}Note: Without PACA_PROJECT_ID, project-scoped tools (like list_tasks, create_task) will not be available.
Supported Permissions
| Permission | Tools Requiring It |
|---|---|
| projects.read | list_projects, get_project |
| projects.write | update_project, delete_project |
| projects.create | create_project |
| tasks.read | list_tasks, get_task, get_task_by_number, list_task_types, list_task_statuses |
| tasks.write | create_task, update_task, delete_task, create_task_type, update_task_type, delete_task_type, set_default_task_type, create_task_status, update_task_status, delete_task_status, set_default_task_status |
| sprints.read | list_sprints, get_sprint |
| sprints.write | create_sprint, update_sprint, delete_sprint, complete_sprint |
| docs.read | list_documents, get_document, list_doc_folders, list_doc_snapshots, get_doc_snapshot |
| docs.write | create_document, update_document, delete_document, create_doc_folder, update_doc_folder, delete_doc_folder |
| project.members.read | list_project_members, get_my_project_permissions |
| project.members.write | add_project_member, update_project_member_role, remove_project_member |
| project.roles.read | list_project_roles |
| project.roles.write | create_project_role, update_project_role, delete_project_role |
Configuring Permissions
For Agents:
- Add Agent as Project Member: Add the agent to the desired projects with appropriate roles
- Configure Role Permissions: Ensure the assigned roles have the necessary permissions
- Restart MCP Server: Restart the MCP server to refresh the permission cache
Important: When using agent mode:
PACA_API_KEYmust be a user's API key (not the agent's API key)PACA_AGENT_IDis the agent to impersonate- The user who owns the API key must have permission to use/impersonate the agent
For Users:
- Assign Global Roles: Grant users global permissions through their global roles
- Add to Projects: Add users to projects with appropriate project roles
- Configure Project Roles: Ensure project roles have the necessary permissions
- Restart MCP Server: Restart the MCP server to refresh the permission cache
Example Configuration
{
"mcpServers": {
"paca": {
"command": "npx",
"args": ["-y", "@paca-ai/paca-mcp"],
"env": {
"PACA_API_KEY": "your-api-key-here",
"PACA_API_URL": "http://localhost:8080",
"PACA_AGENT_ID": "your-agent-uuid-here"
}
}
}
}Note: The MCP server automatically filters tools based on your permissions:
- With
PACA_AGENT_ID: Filters tools based on the agent's project permissions - Without
PACA_AGENT_ID: Filters tools based on your personal user permissions (including global permissions)
If permission fetching fails, all tools will be shown to maintain backward compatibility.
Available Tools
The MCP server provides 81 tools across 16 categories for comprehensive project management.
📁 Project Management (5 tools)
list_projects- List all accessible projectsget_project- Get details of a specific projectcreate_project- Create a new projectupdate_project- Update an existing projectdelete_project- Delete a project
✅ Task Management (6 tools)
list_tasks- List all tasks in a projectget_task- Get details of a specific taskget_task_by_number- Get a task by its numbercreate_task- Create a new taskupdate_task- Update an existing taskdelete_task- Delete a task
🏃 Sprint Management (6 tools)
list_sprints- List all sprints in a projectget_sprint- Get details of a specific sprintcreate_sprint- Create a new sprintupdate_sprint- Update an existing sprintdelete_sprint- Delete a sprintcomplete_sprint- Mark a sprint as completed
📄 Document Management (5 tools)
list_documents- List all documents in a projectget_document- Get details of a specific documentcreate_document- Create a new documentupdate_document- Update an existing documentdelete_document- Delete a document
👥 Project Members (5 tools)
list_project_members- List all members of a projectadd_project_member- Add a member to a projectget_my_project_permissions- Get the current user's permissionsupdate_project_member_role- Update a member's roleremove_project_member- Remove a member from a project
🎭 Project Roles (4 tools)
list_project_roles- List all roles in a projectcreate_project_role- Create a new project roleupdate_project_role- Update an existing project roledelete_project_role- Delete a project role
🏷️ Task Types (5 tools)
list_task_types- List all task types in a projectcreate_task_type- Create a new task typeupdate_task_type- Update an existing task typedelete_task_type- Delete a task typeset_default_task_type- Set a task type as default
📊 Task Statuses (4 tools)
list_task_statuses- List all task statuses in a projectcreate_task_status- Create a new task statusupdate_task_status- Update an existing task statusdelete_task_status- Delete a task status
🎯 Views (9 tools)
list_views- List all views in a projectcreate_view- Create a new view (sprint/backlog/timeline)reorder_views- Reorder views in a projectget_view- Get details of a specific viewupdate_view- Update an existing viewdelete_view- Delete a viewlist_task_positions- List task positions in a viewbulk_move_tasks- Bulk move tasks in a viewmove_task- Move a task within a view
🔧 Custom Fields (5 tools)
list_custom_fields- List all custom field definitionscreate_custom_field- Create a new custom field definitionget_custom_field- Get details of a custom fieldupdate_custom_field- Update a custom field definitiondelete_custom_field- Delete a custom field definition
📎 Attachments (3 tools)
list_task_attachments- List all attachments for a taskget_attachment_download_url- Get a download URL for an attachmentdelete_task_attachment- Delete an attachment
📁 Document Folders (4 tools)
list_doc_folders- List all folders in a projectcreate_doc_folder- Create a new document folderupdate_doc_folder- Update a document folderdelete_doc_folder- Delete a document folder
📸 Document Snapshots (2 tools)
list_doc_snapshots- List all snapshots of a documentget_doc_snapshot- Get a specific document snapshot
🔗 GitHub Integration (7 tools)
get_github_integration- Get GitHub integration statusset_github_token- Set GitHub token for a projectdelete_github_token- Delete GitHub tokenlist_github_repositories- List available GitHub repositorieslist_linked_github_repos- List linked repositorieslink_github_repository- Link a GitHub repositoryunlink_github_repository- Unlink a GitHub repository
💬 Task Activities (4 tools)
list_task_activities- List all activities for a taskadd_task_comment- Add a comment to a taskupdate_task_comment- Update a task commentdelete_task_comment- Delete a task comment
🔀 Task GitHub (5 tools)
list_task_prs- List pull requests linked to a tasklink_pr_to_task- Link a pull request to a taskunlink_pr_from_task- Unlink a pull requestcreate_branch_for_task- Create a branch for a tasklist_task_branches- List branches for a task
For a complete list of all tools with detailed descriptions, see ALL_TOOLS.md.
🔌 Plugin Tools
Installed Paca plugins can contribute additional MCP tools. When the server starts it fetches GET /api/v1/plugins, and for each enabled plugin that declares an mcp.remoteEntryUrl in its manifest, dynamically loads the plugin's tool module and merges its tools into the list above.
Plugin tools appear alongside core tools — there is no distinction from the AI client's perspective.
To add MCP tools to your own plugin, see the MCP Plugin System docs and the @paca-ai/plugin-sdk-mcp SDK.
Markdown/BlockNote Conversion
The MCP server automatically handles conversion between Markdown and BlockNote JSON format:
- Reading: Fetches content as BlockNote JSON and converts to Markdown for readability
- Writing: Accepts Markdown input and converts to BlockNote JSON for storage
This allows AI assistants to work with familiar Markdown format while the API stores content in BlockNote's rich text format.
API Key Authentication
All tools authenticate via the X-API-Key header. Generate an API key in your Paca user settings and set it as PACA_API_KEY in your MCP client configuration.
Examples
Create a Task with Markdown Description
Tool: create_task
Arguments:
- projectId: "project-uuid"
- title: "Implement user authentication"
- description: "# Implementation Plan\n\n## Steps\n1. Create auth service\n2. Add login endpoint\n3. Implement JWT tokens"
- statusId: "status-uuid"
- importance: 5
- tags: ["auth", "backend"]Update Document Content
Tool: update_document
Arguments:
- projectId: "project-uuid"
- docId: "doc-uuid"
- content: "# System Design\n\n## Architecture\nThis document describes the..."Notes
- The server requires a running Paca API instance
- API keys can be created through the Paca web interface under user settings
- All descriptions and document contents are automatically converted between Markdown and BlockNote format
- Date fields should be provided in ISO 8601 format (e.g.,
2024-01-01T00:00:00Z)
Contributing
Interested in contributing to the MCP server? Clone the repository and follow the steps below:
git clone https://github.com/paca-ai/paca.git
cd paca/apps/mcp
npm install
npm run buildFor development with auto-rebuild:
npm run watchTo test with the MCP Inspector:
npm run inspectorFor detailed information about the codebase structure, how to add new tools, and code style guidelines, see DEVELOPMENT.md.
License
Apache License 2.0
