Taiga MCP Bridge
Overview
- Create and manage projects, epics, user stories, tasks, and issues in Taiga
- Track sprints and milestones
- Assign and update work items
- Query detailed information about project artifacts
- Manage project members and permissions
Features
Comprehensive Resource Support
- **Projects**: Create, update, and manage project settings and metadata
- **Epics**: Manage large features that span multiple sprints
- **User Stories**: Handle detailed requirements and acceptance criteria
- **Tasks**: Track smaller units of work within user stories
- **Issues**: Manage bugs, questions, and enhancement requests
- **Sprints (Milestones)**: Plan and track work in time-boxed intervals
Installation
Prerequisites
- Python 3.10 or higher
- uv package manager
Basic Installation
Development Installation
Manual Installation
Configuration
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
[object Object] | [object Object] | [object Object] |
Usage
With stdio mode
Running the Bridge
Transport Modes
- **stdio (Standard Input/Output)** - Default mode for terminal-based clients
- **SSE (Server-Sent Events)** - Web-based transport with server push capabilities
- Using the `--sse` flag with run.sh or server.py (default is stdio)
- Setting the `TAIGA_TRANSPORT` environment variable
- Adding `TAIGA_TRANSPORT=sse` to your `.env` file
Authentication Flow
- **Login**: Clients must first authenticate using the `login` tool: ```python session = client.call_tool("login", { "username": "your_taiga_username", "password": "your_taiga_password", "host": "https://api.taiga.io" # Optional }) # Save the session_id from the response session_id = session["session_id"] ```
- **Using Tools and Resources**: Include the `session_id` in every API call: ```python # For resources, include session_id in the URI projects = client.get_resource(f"taiga://projects?session_id={session_id}") # For project-specific resources epics = client.get_resource(f"taiga://projects/123/epics?session_id={session_id}") # For tools, include session_id as a parameter new_project = client.call_tool("create_project", { "session_id": session_id, "name": "New Project", "description": "Description" }) ```
- **Check Session Status**: You can check if your session is still valid: ```python status = client.call_tool("session_status", {"session_id": session_id}) # Returns information about session validity and remaining time ```
- **Logout**: When finished, you can logout to terminate the session: ```python client.call_tool("logout", {"session_id": session_id}) ```
Example: Complete Project Creation Workflow
Development
Project Structure
Testing
Debugging and Inspection
Error Handling
Performance Considerations
- **Connection Pooling**: Reuses HTTP connections for better performance
- **Rate Limiting**: Prevents overloading the Taiga API
- **Retry Mechanism**: Automatically retries failed requests with exponential backoff
- **Session Cleanup**: Regularly cleans up expired sessions to free resources
Contributing
- Fork the repository
- Create your feature branch (`git checkout -b feature/amazing-feature`)
- Install development dependencies (`./install.sh --dev`)
- Make your changes
- Run tests (`pytest`)
- Commit your changes (`git commit -m 'Add some amazing feature'`)
- Push to the branch (`git push origin feature/amazing-feature`)
- Open a Pull Request
License
Acknowledgments
- [Taiga](https://www.taiga.io/) for their excellent project management platform
- [Model Context Protocol (MCP)](https://github.com/mcp-foundation/specification) for the standardized AI communication framework
- All contributors who have helped shape this project