Planned integration to sync issues and pull requests from GitHub repositories.
Syncs issues from Jira projects into a unified task database with support for filtering by status, priority, and tags, plus incremental sync via change detection.
Planned integration to sync issues from Linear workspaces.
Parses TODO.md and TO-DO.md files from specified paths to extract and aggregate tasks into the unified database.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Task Aggregatorlist my open tasks from Jira with high priority"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Task Aggregator
An MCP (Model Context Protocol) server that aggregates tasks from multiple sources into a unified SQLite database.
Features
Multi-source sync: Jira, GitHub (planned), Linear (planned), Markdown files, STM CLI
Unified database: SQLite with full-text search and tagging
MCP tools:
list_tasks,list_todos,sync_taskswith filtering and paginationIncremental sync: Change detection via hash comparison
Supported Sources
Source | Status | Description |
Jira | Ready | Sync issues from Jira projects |
Markdown | Ready | Parse TO-DO.md and TODO.md files |
STM | Ready | Sync from simple-task-master CLI |
GitHub | Planned | Sync issues and PRs |
Linear | Planned | Sync Linear issues |
Installation
From Source
# Clone the repository
git clone https://github.com/89jobrien/mcp-joecc.git
cd mcp-joecc
# Install with uv
uv sync
# Run the MCP server
uv run mcp-task-aggregatorDocker
# Build the image
docker build -t mcp-task-aggregator:latest .
# Run with docker-compose
cp example.env .env
# Edit .env with your credentials
docker compose up -d
# Or run directly
docker run -d \
--name mcp-task-aggregator \
-v mcp-data:/data \
-e DATABASE_PATH=/data/tasks.db \
mcp-task-aggregator:latestConfiguration
Configuration is done via environment variables. Copy example.env to .env and edit:
Variable | Default | Description |
|
| SQLite database path |
|
| Logging level |
| - | Jira instance URL |
| - | Jira account email |
| - | Jira API token |
|
| Default project key |
|
| Enable markdown sync |
|
| Paths to search for TODO files |
|
| Enable STM CLI sync |
|
| Paths to search for STM workspaces |
MCP Tools
list_tasks
List all tasks with optional filtering.
{
"source_system": "jira",
"status": "todo",
"priority": 3,
"tags": ["backend"],
"limit": 50,
"offset": 0
}list_todos
List only local tasks (shortcut for list_tasks with source_system="local").
sync_tasks
Sync tasks from external sources.
{
"source": "jira",
"full_refresh": false
}Development
# Install dev dependencies
uv sync --all-groups
# Run tests
uv run pytest
# Run linting
uvx ruff check .
uvx ruff format --check .
# Run type checking
uvx mypy src/ --strict --ignore-missing-importsProject Structure
src/mcp_task_aggregator/
├── adapters/ # Source adapters (Jira, Markdown, STM)
├── agents/ # Sync orchestration
├── models/ # Pydantic models
├── storage/ # SQLite database and repositories
├── tools/ # MCP tool implementations
├── config.py # Configuration management
└── logging.py # Structured logging setupLicense
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.