# Trellis MCP
A powerful file-backed MCP (Model Context Protocol) server that implements hierarchical project management for software development teams. Organize your work with a clear structure: Projects → Epics → Features → Tasks.
## Why Trellis MCP?
Trellis MCP transforms project management by providing:
- **Structured Workflow**: Break down complex projects into manageable, hierarchical components
- **Developer-First**: Built for software teams with file-based storage that integrates seamlessly with your existing tools
- **AI-Native**: Designed specifically for AI coding assistants like Claude, enabling intelligent task management
- **Dependency Management**: Support for cross-system prerequisites with cycle detection and validation
- **Human-Readable**: All data stored as Markdown files with YAML front-matter - no proprietary formats
- **Flexible Architecture**: Support both hierarchical tasks (within project structure) and standalone tasks for urgent work
## Why not?
- Currently only suited to single-user projects. You probably can set the project root to a shared directory, but this is not tested.
- Not intended to replace full-fledged project management tools like Jira or Asana. Trellis MCP is focused on software development workflows and AI assistant integration.
## Features
- **Hierarchical project structure**: Projects → Epics → Features → Tasks
- **Cross-system task support**: Mix hierarchical and standalone tasks with prerequisites spanning both systems
- **File-backed storage**: Human-readable Markdown files with YAML front-matter
- **MCP server integration**: JSON-RPC API for programmatic access by AI assistants
- **Comprehensive validation**: Cycle detection, prerequisite validation, and type safety
- **Atomic operations**: Task claiming, completion, and status transitions with integrity guarantees
## Installation
### Claude Code Configuration
Add Trellis MCP to your Claude Code MCP configuration:
```bash
# Add to Claude Code
claude mcp add task-trellis \
-- uvx task-trellis-mcp serve
# Or specify a custom project root
claude mcp add task-trellis \
-- uvx task-trellis-mcp --project-root /path/to/project serve
```
Configuration in `~/.config/claude/mcp_servers.json`:
```json
{
"mcpServers": {
"task-trellis": {
"type": "stdio",
"command": "uvx",
"args": [
"task-trellis-mcp",
"serve"
]
}
}
}
```
### VS Code with Claude Extension
Add to your VS Code settings:
```json
{
"claude.mcpServers": {
"task-trellis": {
"command": "uvx",
"args": ["task-trellis-mcp", "serve"]
}
}
}
```
### Other MCP Clients
For other MCP-compatible tools, use the command:
```bash
uvx task-trellis-mcp serve
```
Or with HTTP transport:
```bash
uvx task-trellis-mcp serve --http localhost:8545
```
## Usage
### MCP Tool Integration
Trellis MCP provides a comprehensive set of tools for AI assistants to manage hierarchical project structures. Once configured with your MCP client, these tools enable intelligent project planning and task management.
#### Core MCP Tools
- **`createObject`** - Create projects, epics, features, or tasks with validation
- **`getObject`** - Retrieve detailed object information with automatic type detection
- **`updateObject`** - Modify object properties with atomic updates
- **`listBacklog`** - Query and filter tasks across the project hierarchy
- **`claimNextTask`** - Claim tasks using priority-based, scope-based, or direct task ID selection
- **`completeTask`** - Mark tasks complete with logging and file tracking
#### Creating Project Hierarchies
Start by creating a project and breaking it down into manageable components:
```javascript
// Create a new project
await mcp.call('createObject', {
kind: 'project',
title: 'E-commerce Platform Redesign',
priority: 'high',
projectRoot: '.',
description: 'Comprehensive redesign of the e-commerce platform...'
});
// Create an epic within the project
await mcp.call('createObject', {
kind: 'epic',
title: 'User Authentication System',
parent: 'P-ecommerce-platform-redesign',
priority: 'high',
projectRoot: '.'
});
// Create features within the epic
await mcp.call('createObject', {
kind: 'feature',
title: 'User Registration',
parent: 'E-user-authentication-system',
priority: 'high',
projectRoot: '.'
});
// Create implementable tasks
await mcp.call('createObject', {
kind: 'task',
title: 'Create user database model',
parent: 'F-user-registration',
priority: 'high',
projectRoot: '.',
prerequisites: ['T-setup-database-schema']
});
```
#### Task Management Workflow
Use the task management tools to claim, track, and complete work:
```javascript
// List available tasks
const backlog = await mcp.call('listBacklog', {
projectRoot: '.',
status: 'open',
priority: 'high',
sortByPriority: true
});
// Claim the next highest-priority task (any scope)
const claimedTask = await mcp.call('claimNextTask', {
projectRoot: '.',
worktree: 'feature/user-auth'
});
// Claim specific task by ID (direct claiming)
const specificTask = await mcp.call('claimNextTask', {
projectRoot: '.',
taskId: 'T-implement-user-auth',
worktree: 'feature/auth-implementation'
});
// Claim specific standalone task
const standaloneTask = await mcp.call('claimNextTask', {
projectRoot: '.',
taskId: 'task-security-audit',
worktree: 'hotfix/security'
});
// Claim task within specific project scope
const projectTask = await mcp.call('claimNextTask', {
projectRoot: '.',
scope: 'P-ecommerce-platform',
worktree: 'feature/ecommerce'
});
// Claim task within specific epic scope
const epicTask = await mcp.call('claimNextTask', {
projectRoot: '.',
scope: 'E-user-authentication',
worktree: 'feature/auth'
});
// Claim task within specific feature scope
const featureTask = await mcp.call('claimNextTask', {
projectRoot: '.',
scope: 'F-login-functionality',
worktree: 'feature/login'
});
// Update task progress
await mcp.call('updateObject', {
id: 'T-create-user-model',
projectRoot: '.',
yamlPatch: {
status: 'review'
}
});
// Complete the task with summary
await mcp.call('completeTask', {
projectRoot: '.',
taskId: 'T-create-user-model',
summary: 'Implemented user model with validation and security features',
filesChanged: ['src/models/User.js', 'tests/models/User.test.js']
});
```
#### Cross-System Prerequisites
Trellis supports complex dependency relationships across different parts of your project:
```javascript
// Create a standalone urgent task that depends on hierarchy tasks
await mcp.call('createObject', {
kind: 'task',
title: 'Security hotfix deployment',
projectRoot: '.',
priority: 'high',
prerequisites: ['T-auth-implementation', 'T-validation-update'],
// No parent - this is a standalone task
});
```
#### Querying and Filtering
Use flexible querying to understand project status:
```javascript
// Get all open tasks for a specific feature
const featureTasks = await mcp.call('listBacklog', {
projectRoot: '.',
scope: 'F-user-registration',
status: 'open'
});
// Get high-priority tasks across the entire project
const urgentTasks = await mcp.call('listBacklog', {
projectRoot: '.',
priority: 'high',
sortByPriority: true
});
// Get task details with prerequisites
const taskDetails = await mcp.call('getObject', {
id: 'T-create-user-model',
projectRoot: '.'
});
```
### Working with AI Assistants
When using Trellis MCP with AI coding assistants, you can request natural language operations that use these tools behind the scenes:
- "Create a new project for inventory management and break it down into epics"
- "Claim the next highest priority task and implement it"
- "Claim the specific task T-implement-user-auth and work on it"
- "Work on the security audit task directly"
- "Claim a task from the user authentication epic"
- "Show me all open tasks that are ready to work on"
- "Show me tasks in the frontend development epic"
- "Complete the current task and provide a summary of what was implemented"
- "Claim a task from the login feature specifically"
- "Continue work on task T-fix-validation-bug"
#### Natural Language Task Claiming
AI assistants can interpret various claiming strategies:
```javascript
// "Work on user authentication epic"
const authTask = await mcp.call('claimNextTask', {
projectRoot: './planning',
scope: 'E-user-authentication'
});
// "Focus on login functionality feature"
const loginTask = await mcp.call('claimNextTask', {
projectRoot: './planning',
scope: 'F-login-functionality'
});
// "Work on the specific user registration task"
const specificTask = await mcp.call('claimNextTask', {
projectRoot: './planning',
taskId: 'T-user-registration-form'
});
// "Continue the security audit task"
const auditTask = await mcp.call('claimNextTask', {
projectRoot: './planning',
taskId: 'task-security-audit'
});
// "Claim any task from the mobile app project"
const mobileTask = await mcp.call('claimNextTask', {
projectRoot: './planning',
scope: 'P-mobile-app-redesign'
});
```
### Sample Commands
For examples of how to create comprehensive AI assistant commands that leverage these MCP tools, see the [sample commands](docs/sample-commands/) directory. These examples show how to build complex workflows that combine multiple MCP tool calls for project planning and task implementation.
### Direct CLI Usage
You can also use Trellis MCP directly from the command line for manual operations:
### Using uv (Fast Python Package Manager)
```bash
# Install with uv
uv add task-trellis-mcp
# Or run directly without installation
uvx task-trellis-mcp serve
```
### Development Installation
For development or to install from source:
```bash
# Clone the repository
git clone https://github.com/langadventurellc/trellis-mcp.git
cd trellis-mcp
# Install development dependencies
uv sync
# Install in editable mode
uv pip install -e .
```
```bash
# Initialize a new project structure
task-trellis-mcp init
# Start the MCP server
task-trellis-mcp serve
```
## Requirements
- Python 3.12+
- Click >= 8.1
- FastMCP >= 0.7
## Developer Guidelines
#### Quality Gate
Run **all** checks before committing - any failure blocks the commit:
```bash
uv run poe quality # flake8, black, pyright
uv run pytest # unit tests
```
#### Code Style
- **Formatting**: `black` and `flake8` enforce code style automatically
- **Type Checking**: `pyright` ensures type safety with strict settings
- **Line Limits**: Functions ≤ 40 LOC, classes ≤ 200 LOC
- **Import Organization**: One logical concept per file
- **Modern Python**: Use built-in types (`list`, `dict`) over `typing` equivalents
- **Union Types**: Use `str | None` instead of `Optional[str]`
#### Architecture Principles
- **Single Responsibility**: Each module/class/function has one clear purpose
- **Minimal Coupling**: Components interact through clean interfaces
- **High Cohesion**: Related functionality grouped together
- **Dependency Injection**: Avoid tight coupling between components
- **No Circular Dependencies**: Maintain clear dependency flow
#### Security Requirements
- **Input Validation**: Validate ALL user inputs
- **Parameterized Queries**: Never concatenate user data into queries
- **Secure Defaults**: Fail closed, not open
- **Least Privilege**: Request minimum permissions needed
- **No Hardcoded Secrets**: Use environment variables and configuration
#### Testing Standards
- **Comprehensive Coverage**: Write tests alongside implementation
- **Test Pyramid**: Unit tests > integration tests > end-to-end tests
- **Fast Feedback**: Unit tests must run quickly (< 5 seconds total)
- **Clear Test Names**: Test names describe behavior being verified
- **Isolated Tests**: No dependencies between test cases
### Development Workflow
#### Setup
```bash
# Clone repository
git clone https://github.com/langadventurellc/trellis-mcp.git
cd trellis-mcp
# Install dependencies
uv sync
# Install pre-commit hooks
uv run pre-commit install
# Install in editable mode
uv pip install -e .
```
#### Daily Development
```bash
# Format code
uv run black src/
# Lint code
uv run flake8 src/
# Type check
uv run pyright src/
# Run unit tests
uv run pytest -q
# Run all quality checks
uv run poe quality
```
#### Common Commands
| Goal | Command |
| ----------------------- | ------------------------------------------------ |
| Install dependencies | `uv sync` |
| Start server (STDIO) | `uv run task-trellis-mcp serve` |
| Start server (HTTP) | `uv run task-trellis-mcp serve --http localhost:8000` |
| Initialize planning | `uv run task-trellis-mcp init` |
| All quality checks | `uv run poe quality` |
| Run formatter | `uv run black src/` |
| Run linter | `uv run flake8 src/` |
| Type check | `uv run pyright src/` |
| Run unit tests | `uv run pytest -q` |
### Task-Centric Development
This project uses its own task management system for development:
#### Working with Tasks
```bash
# Claim next available task
uv run task-trellis-mcp claim-task
# List available tasks
uv run task-trellis-mcp list tasks --status open
# Complete a task with summary
uv run task-trellis-mcp complete T-task-id \
--summary "Implemented feature with comprehensive tests" \
--files-changed src/module.py,tests/test_module.py
```
## License
MIT License - See LICENSE file for details.
Raw data
{
"_id": null,
"home_page": null,
"name": "task-trellis-mcp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "mcp, project-management, planning, tasks, development",
"author": "LangAdventure LLC",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/d2/4f/fa2b0d73c0935a94a005fa497735782c7725297a372f744bf8a5d8373655/task_trellis_mcp-2.0.3.tar.gz",
"platform": null,
"description": "# Trellis MCP\n\nA powerful file-backed MCP (Model Context Protocol) server that implements hierarchical project management for software development teams. Organize your work with a clear structure: Projects \u2192 Epics \u2192 Features \u2192 Tasks.\n\n## Why Trellis MCP?\n\nTrellis MCP transforms project management by providing:\n\n- **Structured Workflow**: Break down complex projects into manageable, hierarchical components\n- **Developer-First**: Built for software teams with file-based storage that integrates seamlessly with your existing tools\n- **AI-Native**: Designed specifically for AI coding assistants like Claude, enabling intelligent task management\n- **Dependency Management**: Support for cross-system prerequisites with cycle detection and validation\n- **Human-Readable**: All data stored as Markdown files with YAML front-matter - no proprietary formats\n- **Flexible Architecture**: Support both hierarchical tasks (within project structure) and standalone tasks for urgent work\n\n## Why not?\n\n- Currently only suited to single-user projects. You probably can set the project root to a shared directory, but this is not tested.\n- Not intended to replace full-fledged project management tools like Jira or Asana. Trellis MCP is focused on software development workflows and AI assistant integration.\n\n## Features\n\n- **Hierarchical project structure**: Projects \u2192 Epics \u2192 Features \u2192 Tasks\n- **Cross-system task support**: Mix hierarchical and standalone tasks with prerequisites spanning both systems\n- **File-backed storage**: Human-readable Markdown files with YAML front-matter\n- **MCP server integration**: JSON-RPC API for programmatic access by AI assistants\n- **Comprehensive validation**: Cycle detection, prerequisite validation, and type safety\n- **Atomic operations**: Task claiming, completion, and status transitions with integrity guarantees\n\n## Installation\n\n### Claude Code Configuration\n\nAdd Trellis MCP to your Claude Code MCP configuration:\n\n```bash\n# Add to Claude Code\nclaude mcp add task-trellis \\\n -- uvx task-trellis-mcp serve\n\n# Or specify a custom project root\nclaude mcp add task-trellis \\\n -- uvx task-trellis-mcp --project-root /path/to/project serve\n```\n\nConfiguration in `~/.config/claude/mcp_servers.json`:\n\n```json\n{\n \"mcpServers\": {\n \"task-trellis\": {\n \"type\": \"stdio\",\n \"command\": \"uvx\",\n \"args\": [\n \"task-trellis-mcp\",\n \"serve\"\n ]\n }\n }\n}\n```\n\n### VS Code with Claude Extension\n\nAdd to your VS Code settings:\n\n```json\n{\n \"claude.mcpServers\": {\n \"task-trellis\": {\n \"command\": \"uvx\",\n \"args\": [\"task-trellis-mcp\", \"serve\"]\n }\n }\n}\n```\n\n### Other MCP Clients\n\nFor other MCP-compatible tools, use the command:\n\n```bash\nuvx task-trellis-mcp serve\n```\n\nOr with HTTP transport:\n\n```bash\nuvx task-trellis-mcp serve --http localhost:8545\n```\n\n## Usage\n\n### MCP Tool Integration\n\nTrellis MCP provides a comprehensive set of tools for AI assistants to manage hierarchical project structures. Once configured with your MCP client, these tools enable intelligent project planning and task management.\n\n#### Core MCP Tools\n\n- **`createObject`** - Create projects, epics, features, or tasks with validation\n- **`getObject`** - Retrieve detailed object information with automatic type detection\n- **`updateObject`** - Modify object properties with atomic updates\n- **`listBacklog`** - Query and filter tasks across the project hierarchy\n- **`claimNextTask`** - Claim tasks using priority-based, scope-based, or direct task ID selection\n- **`completeTask`** - Mark tasks complete with logging and file tracking\n\n#### Creating Project Hierarchies\n\nStart by creating a project and breaking it down into manageable components:\n\n```javascript\n// Create a new project\nawait mcp.call('createObject', {\n kind: 'project',\n title: 'E-commerce Platform Redesign',\n priority: 'high',\n projectRoot: '.',\n description: 'Comprehensive redesign of the e-commerce platform...'\n});\n\n// Create an epic within the project\nawait mcp.call('createObject', {\n kind: 'epic',\n title: 'User Authentication System',\n parent: 'P-ecommerce-platform-redesign',\n priority: 'high',\n projectRoot: '.'\n});\n\n// Create features within the epic\nawait mcp.call('createObject', {\n kind: 'feature',\n title: 'User Registration',\n parent: 'E-user-authentication-system',\n priority: 'high',\n projectRoot: '.'\n});\n\n// Create implementable tasks\nawait mcp.call('createObject', {\n kind: 'task',\n title: 'Create user database model',\n parent: 'F-user-registration',\n priority: 'high',\n projectRoot: '.',\n prerequisites: ['T-setup-database-schema']\n});\n```\n\n#### Task Management Workflow\n\nUse the task management tools to claim, track, and complete work:\n\n```javascript\n// List available tasks\nconst backlog = await mcp.call('listBacklog', {\n projectRoot: '.',\n status: 'open',\n priority: 'high',\n sortByPriority: true\n});\n\n// Claim the next highest-priority task (any scope)\nconst claimedTask = await mcp.call('claimNextTask', {\n projectRoot: '.',\n worktree: 'feature/user-auth'\n});\n\n// Claim specific task by ID (direct claiming)\nconst specificTask = await mcp.call('claimNextTask', {\n projectRoot: '.',\n taskId: 'T-implement-user-auth',\n worktree: 'feature/auth-implementation'\n});\n\n// Claim specific standalone task\nconst standaloneTask = await mcp.call('claimNextTask', {\n projectRoot: '.',\n taskId: 'task-security-audit',\n worktree: 'hotfix/security'\n});\n\n// Claim task within specific project scope\nconst projectTask = await mcp.call('claimNextTask', {\n projectRoot: '.',\n scope: 'P-ecommerce-platform',\n worktree: 'feature/ecommerce'\n});\n\n// Claim task within specific epic scope\nconst epicTask = await mcp.call('claimNextTask', {\n projectRoot: '.',\n scope: 'E-user-authentication',\n worktree: 'feature/auth'\n});\n\n// Claim task within specific feature scope\nconst featureTask = await mcp.call('claimNextTask', {\n projectRoot: '.',\n scope: 'F-login-functionality',\n worktree: 'feature/login'\n});\n\n// Update task progress\nawait mcp.call('updateObject', {\n id: 'T-create-user-model',\n projectRoot: '.',\n yamlPatch: {\n status: 'review'\n }\n});\n\n// Complete the task with summary\nawait mcp.call('completeTask', {\n projectRoot: '.',\n taskId: 'T-create-user-model',\n summary: 'Implemented user model with validation and security features',\n filesChanged: ['src/models/User.js', 'tests/models/User.test.js']\n});\n```\n\n#### Cross-System Prerequisites\n\nTrellis supports complex dependency relationships across different parts of your project:\n\n```javascript\n// Create a standalone urgent task that depends on hierarchy tasks\nawait mcp.call('createObject', {\n kind: 'task',\n title: 'Security hotfix deployment',\n projectRoot: '.',\n priority: 'high',\n prerequisites: ['T-auth-implementation', 'T-validation-update'],\n // No parent - this is a standalone task\n});\n```\n\n#### Querying and Filtering\n\nUse flexible querying to understand project status:\n\n```javascript\n// Get all open tasks for a specific feature\nconst featureTasks = await mcp.call('listBacklog', {\n projectRoot: '.',\n scope: 'F-user-registration',\n status: 'open'\n});\n\n// Get high-priority tasks across the entire project\nconst urgentTasks = await mcp.call('listBacklog', {\n projectRoot: '.',\n priority: 'high',\n sortByPriority: true\n});\n\n// Get task details with prerequisites\nconst taskDetails = await mcp.call('getObject', {\n id: 'T-create-user-model',\n projectRoot: '.'\n});\n```\n\n### Working with AI Assistants\n\nWhen using Trellis MCP with AI coding assistants, you can request natural language operations that use these tools behind the scenes:\n\n- \"Create a new project for inventory management and break it down into epics\"\n- \"Claim the next highest priority task and implement it\"\n- \"Claim the specific task T-implement-user-auth and work on it\"\n- \"Work on the security audit task directly\"\n- \"Claim a task from the user authentication epic\"\n- \"Show me all open tasks that are ready to work on\"\n- \"Show me tasks in the frontend development epic\"\n- \"Complete the current task and provide a summary of what was implemented\"\n- \"Claim a task from the login feature specifically\"\n- \"Continue work on task T-fix-validation-bug\"\n\n#### Natural Language Task Claiming\n\nAI assistants can interpret various claiming strategies:\n\n```javascript\n// \"Work on user authentication epic\"\nconst authTask = await mcp.call('claimNextTask', {\n projectRoot: './planning',\n scope: 'E-user-authentication'\n});\n\n// \"Focus on login functionality feature\"\nconst loginTask = await mcp.call('claimNextTask', {\n projectRoot: './planning', \n scope: 'F-login-functionality'\n});\n\n// \"Work on the specific user registration task\"\nconst specificTask = await mcp.call('claimNextTask', {\n projectRoot: './planning',\n taskId: 'T-user-registration-form'\n});\n\n// \"Continue the security audit task\"\nconst auditTask = await mcp.call('claimNextTask', {\n projectRoot: './planning',\n taskId: 'task-security-audit'\n});\n\n// \"Claim any task from the mobile app project\"\nconst mobileTask = await mcp.call('claimNextTask', {\n projectRoot: './planning',\n scope: 'P-mobile-app-redesign'\n});\n```\n\n### Sample Commands\n\nFor examples of how to create comprehensive AI assistant commands that leverage these MCP tools, see the [sample commands](docs/sample-commands/) directory. These examples show how to build complex workflows that combine multiple MCP tool calls for project planning and task implementation.\n\n### Direct CLI Usage\n\nYou can also use Trellis MCP directly from the command line for manual operations:\n\n### Using uv (Fast Python Package Manager)\n\n```bash\n# Install with uv\nuv add task-trellis-mcp\n\n# Or run directly without installation\nuvx task-trellis-mcp serve\n```\n\n### Development Installation\n\nFor development or to install from source:\n\n```bash\n# Clone the repository\ngit clone https://github.com/langadventurellc/trellis-mcp.git\ncd trellis-mcp\n\n# Install development dependencies\nuv sync\n\n# Install in editable mode\nuv pip install -e .\n```\n\n```bash\n# Initialize a new project structure\ntask-trellis-mcp init\n\n# Start the MCP server\ntask-trellis-mcp serve\n```\n\n## Requirements\n\n- Python 3.12+\n- Click >= 8.1\n- FastMCP >= 0.7\n\n## Developer Guidelines\n\n#### Quality Gate\n\nRun **all** checks before committing - any failure blocks the commit:\n\n```bash\nuv run poe quality # flake8, black, pyright\nuv run pytest # unit tests\n```\n\n#### Code Style\n\n- **Formatting**: `black` and `flake8` enforce code style automatically\n- **Type Checking**: `pyright` ensures type safety with strict settings\n- **Line Limits**: Functions \u2264 40 LOC, classes \u2264 200 LOC\n- **Import Organization**: One logical concept per file\n- **Modern Python**: Use built-in types (`list`, `dict`) over `typing` equivalents\n- **Union Types**: Use `str | None` instead of `Optional[str]`\n\n#### Architecture Principles\n\n- **Single Responsibility**: Each module/class/function has one clear purpose\n- **Minimal Coupling**: Components interact through clean interfaces\n- **High Cohesion**: Related functionality grouped together\n- **Dependency Injection**: Avoid tight coupling between components\n- **No Circular Dependencies**: Maintain clear dependency flow\n\n#### Security Requirements\n\n- **Input Validation**: Validate ALL user inputs\n- **Parameterized Queries**: Never concatenate user data into queries\n- **Secure Defaults**: Fail closed, not open\n- **Least Privilege**: Request minimum permissions needed\n- **No Hardcoded Secrets**: Use environment variables and configuration\n\n#### Testing Standards\n\n- **Comprehensive Coverage**: Write tests alongside implementation\n- **Test Pyramid**: Unit tests > integration tests > end-to-end tests\n- **Fast Feedback**: Unit tests must run quickly (< 5 seconds total)\n- **Clear Test Names**: Test names describe behavior being verified\n- **Isolated Tests**: No dependencies between test cases\n\n### Development Workflow\n\n#### Setup\n\n```bash\n# Clone repository\ngit clone https://github.com/langadventurellc/trellis-mcp.git\ncd trellis-mcp\n\n# Install dependencies\nuv sync\n\n# Install pre-commit hooks\nuv run pre-commit install\n\n# Install in editable mode\nuv pip install -e .\n```\n\n#### Daily Development\n\n```bash\n# Format code\nuv run black src/\n\n# Lint code\nuv run flake8 src/\n\n# Type check\nuv run pyright src/\n\n# Run unit tests\nuv run pytest -q\n\n# Run all quality checks\nuv run poe quality\n```\n\n#### Common Commands\n\n| Goal | Command |\n| ----------------------- | ------------------------------------------------ |\n| Install dependencies | `uv sync` |\n| Start server (STDIO) | `uv run task-trellis-mcp serve` |\n| Start server (HTTP) | `uv run task-trellis-mcp serve --http localhost:8000` |\n| Initialize planning | `uv run task-trellis-mcp init` |\n| All quality checks | `uv run poe quality` |\n| Run formatter | `uv run black src/` |\n| Run linter | `uv run flake8 src/` |\n| Type check | `uv run pyright src/` |\n| Run unit tests | `uv run pytest -q` |\n\n### Task-Centric Development\n\nThis project uses its own task management system for development:\n\n#### Working with Tasks\n\n```bash\n# Claim next available task\nuv run task-trellis-mcp claim-task\n\n# List available tasks\nuv run task-trellis-mcp list tasks --status open\n\n# Complete a task with summary\nuv run task-trellis-mcp complete T-task-id \\\n --summary \"Implemented feature with comprehensive tests\" \\\n --files-changed src/module.py,tests/test_module.py\n```\n\n## License\n\nMIT License - See LICENSE file for details.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "File-backed MCP server for hierarchical project management (Projects \u2192 Epics \u2192 Features \u2192 Tasks)",
"version": "2.0.3",
"project_urls": {
"Homepage": "https://github.com/langadventurellc/trellis-mcp",
"Issues": "https://github.com/langadventurellc/trellis-mcp/issues",
"Repository": "https://github.com/langadventurellc/trellis-mcp"
},
"split_keywords": [
"mcp",
" project-management",
" planning",
" tasks",
" development"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "52d0c502fd7da1fa492435d19704607c55454ba019416c610dec7abd3ea95c05",
"md5": "9c8a68aa7f5615c7f08d34db1cd0d9b3",
"sha256": "e4c96667db9b3fce9ef6ce3d1a76308aba88dbd3690e19b14cda2df7ed90b801"
},
"downloads": -1,
"filename": "task_trellis_mcp-2.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9c8a68aa7f5615c7f08d34db1cd0d9b3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 181366,
"upload_time": "2025-07-21T14:30:49",
"upload_time_iso_8601": "2025-07-21T14:30:49.749754Z",
"url": "https://files.pythonhosted.org/packages/52/d0/c502fd7da1fa492435d19704607c55454ba019416c610dec7abd3ea95c05/task_trellis_mcp-2.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d24ffa2b0d73c0935a94a005fa497735782c7725297a372f744bf8a5d8373655",
"md5": "50b56e686f21c94ba6961b4028cc7054",
"sha256": "0f5ae0c4c420986d46224fe073f27fc850b7172d65e4c06a76944aaf8c7851a4"
},
"downloads": -1,
"filename": "task_trellis_mcp-2.0.3.tar.gz",
"has_sig": false,
"md5_digest": "50b56e686f21c94ba6961b4028cc7054",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 570280,
"upload_time": "2025-07-21T14:30:50",
"upload_time_iso_8601": "2025-07-21T14:30:50.990506Z",
"url": "https://files.pythonhosted.org/packages/d2/4f/fa2b0d73c0935a94a005fa497735782c7725297a372f744bf8a5d8373655/task_trellis_mcp-2.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-21 14:30:50",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "langadventurellc",
"github_project": "trellis-mcp",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "task-trellis-mcp"
}