@craftpipe/projectsync-mcp
v1.0.0
Published
<div align="center">
Maintainers
Readme
ProjectSync is a Model Context Protocol (MCP) server for project management. It integrates with Linear, Jira, GitHub Issues, and Asana through a unified provider interface. Connect it to any MCP-compatible AI client (Claude Desktop, Cursor, Continue) and manage issues, sprints, and workflows directly from your AI assistant.
graph LR
A["AI Agent"] -->|MCP| B["ProjectSync MCP"]
B --> C["Linear"]
B --> D["Jira"]
B --> E["GitHub Issues"]
B --> BA["Asana"]
B --> F["Mock / Demo"]
C --> G["Issues, Sprints, Labels"]
D --> G
E --> G
F --> G
style B fill:#0d1117,stroke:#a855f7,stroke-width:2px,color:#a855f7
style A fill:#1f2937,stroke:#a855f7,color:#f0f6fcQuick Start
npx projectsync-mcpClaude Desktop config
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or
%APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"projectsync": {
"command": "npx",
"args": ["projectsync-mcp"]
}
}
}Restart Claude Desktop -- all 13 tools (7 free + 6 pro) are now available.
Providers
ProjectSync supports four project management platforms plus a built-in mock provider for demos:
| Provider | Env Vars Required | Notes |
|:---------|:------------------|:------|
| Mock (default) | None | 25 issues, 3 projects, 2 sprints, 8 labels -- works out of the box |
| Linear | LINEAR_API_KEY | GraphQL API, cycles as sprints |
| Jira | JIRA_URL, JIRA_EMAIL, JIRA_TOKEN | REST API + Agile API, boards as sprints |
| GitHub Issues | GITHUB_TOKEN, GITHUB_OWNER, GITHUB_REPO | REST API, milestones as sprints |
| Asana | ASANA_ACCESS_TOKEN, ASANA_WORKSPACE_GID | REST API, sections as sprints |
Set PROJECTSYNC_PROVIDER to linear, jira, github, or asana to select a provider. When not set, the mock provider is used.
graph TD
A["PROJECTSYNC_PROVIDER"] --> B{Provider?}
B -->|linear| C["LinearProvider<br/>GraphQL API"]
B -->|jira| D["JiraProvider<br/>REST + Agile API"]
B -->|github| E["GitHubProvider<br/>REST API"]
B -->|asana| G["AsanaProvider<br/>REST API"]
B -->|not set| F["MockProvider<br/>Demo data"]
style A fill:#0d1117,stroke:#a855f7,color:#f0f6fc
style B fill:#1f2937,stroke:#a855f7,color:#f0f6fcTools
Free Tools (7)
| Tool | Description |
|:-----|:------------|
| list_issues | List issues with optional filters: project, status (open/closed/in_progress/backlog), assignee, label, limit |
| get_issue | Get a single issue by ID with comments, labels, and assignee details |
| create_issue | Create a new issue: title (required), description, project, labels, assignee, priority |
| update_issue | Update an existing issue by ID: status, title, description, assignee, labels, priority |
| search_issues | Full-text search across all issues with a query string |
| list_projects | List all projects/boards with issue counts |
| list_labels | List available labels/tags |
Pro Tools (6)
| Tool | Description |
|:-----|:------------|
| sprint_management | Manage sprints: list, create, update, assign issues to sprint |
| bulk_update | Update multiple issues at once with shared changes (status, assignee, labels, priority) |
| issue_analytics | Velocity, average cycle time, issues by status/priority, burndown data for a time period |
| cross_project_report | Aggregate stats across all projects: total issues, by status, by priority, overdue count |
| backlog_grooming | Analyze backlog health: stale issues, unassigned, missing labels, priority suggestions |
| workflow_automation | Define automation rules: when status/label changes, auto-assign, add label, set priority |
Architecture
graph TB
subgraph "MCP Server"
A["index.ts<br/>13 tools registered"]
B["provider-factory.ts"]
C["premium/gate.ts"]
end
subgraph "Adapters"
D["MockProvider"]
E["LinearProvider"]
F["JiraProvider"]
G["GitHubProvider"]
GA["AsanaProvider"]
end
subgraph "Shared"
H["types.ts"]
I["fetch-retry.ts"]
J["mock-data.ts"]
end
A --> B
A --> C
B --> D
B --> E
B --> F
B --> G
B --> GA
E --> I
F --> I
G --> I
D --> J
style A fill:#0d1117,stroke:#a855f7,stroke-width:2px,color:#a855f7
style B fill:#161b22,stroke:#a855f7,color:#c084fc
style C fill:#161b22,stroke:#a855f7,color:#c084fcFree vs Pro
| Feature | Free | Pro | |:--------|:----:|:---:| | List / get / create / update issues | Yes | Yes | | Full-text search | Yes | Yes | | List projects and labels | Yes | Yes | | Sprint management | -- | Yes | | Bulk update | -- | Yes | | Issue analytics & velocity | -- | Yes | | Cross-project reports | -- | Yes | | Backlog grooming & health score | -- | Yes | | Workflow automation rules | -- | Yes |
Pro license: set the PRO_LICENSE environment variable. Visit craftpipe.dev for pricing.
Environment Variables
| Variable | Description | Required |
|:---------|:------------|:---------|
| PROJECTSYNC_PROVIDER | Provider: linear, jira, github, asana (default: mock) | No |
| LINEAR_API_KEY | Linear API key | When provider=linear |
| JIRA_URL | Jira instance URL (e.g. https://company.atlassian.net) | When provider=jira |
| JIRA_EMAIL | Jira account email | When provider=jira |
| JIRA_TOKEN | Jira API token | When provider=jira |
| GITHUB_TOKEN | GitHub personal access token | When provider=github |
| GITHUB_OWNER | GitHub organization or username | When provider=github |
| GITHUB_REPO | GitHub repository name (single-repo mode) | Optional |
| ASANA_ACCESS_TOKEN | Asana personal access token | When provider=asana |
| ASANA_WORKSPACE_GID | Asana workspace GID | When provider=asana |
| PRO_LICENSE | Pro license key for premium tools | For pro tools |
License
MIT
Built by Craftpipe
