task-trellis-mcp


Nametask-trellis-mcp JSON
Version 2.0.3 PyPI version JSON
download
home_pageNone
SummaryFile-backed MCP server for hierarchical project management (Projects → Epics → Features → Tasks)
upload_time2025-07-21 14:30:50
maintainerNone
docs_urlNone
authorLangAdventure LLC
requires_python>=3.12
licenseMIT
keywords mcp project-management planning tasks development
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.42740s