A MCP server for interacting with Taiga Project Manager
What is talhaorak pytaiga mcp
Taiga MCP Bridge
*
*
Overview
The Taiga MCP Bridge is a powerful integration layer that connects Taiga project management platform with the Model Context Protocol (MCP), enabling AI tools and workflows to interact seamlessly with Taiga's resources.
This bridge provides a comprehensive set of tools and resources for AI agents to:
- 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
By using the MCP standard, this bridge allows AI systems to maintain contextual awareness about project state and perform complex project management tasks programmatically.
Features
Comprehensive Resource Support
The bridge supports the following Taiga resources with complete CRUD operations:
- 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
This project uses uv for fast, reliable Python package management.
Prerequisites
- Python 3.10 or higher
- uv package manager
Basic Installation
# Clone the repository
git clone https://github.com/your-org/pyTaigaMCP.git
cd pyTaigaMCP
# Install dependencies
./install.sh
Development Installation
For development (includes testing and code quality tools):
./install.sh --dev
Manual Installation
If you prefer to install manually:
# Production dependencies only
uv pip install -e .
# With development dependencies
uv pip install -e ".[dev]"
Configuration
The bridge can be configured through environment variables or a .env
file:
Environment Variable | Description | Default |
---|---|---|
TAIGA_API_URL |
Base URL for the Taiga API | http://localhost:9000 |
SESSION_EXPIRY |
Session expiration time in seconds | 28800 (8 hours) |
TAIGA_TRANSPORT |
Transport mode (stdio or sse) | stdio |
REQUEST_TIMEOUT |
API request timeout in seconds | 30 |
MAX_CONNECTIONS |
Maximum number of HTTP connections | 10 |
MAX_KEEPALIVE_CONNECTIONS |
Max keepalive connections | 5 |
RATE_LIMIT_REQUESTS |
Max requests per minute | 100 |
LOG_LEVEL |
Logging level | INFO |
LOG_FILE |
Path to log file | taiga_mcp.log |
Create a .env
file in the project root to set these values:
TAIGA_API_URL=https://api.taiga.io/api/v1/
TAIGA_TRANSPORT=sse
LOG_LEVEL=DEBUG
Usage
With stdio mode
Paste the following json in your Claude App's or Cursor's mcp settings section:
{
"mcpServers": {
"taigaApi": {
"command": "uv",
"args": [
"--directory",
"<path to local pyTaigaMCP folder>",
"run",
"src/server.py"
],
"env": {
"TAIGA_TRANSPORT": "<stdio|sse>",
"TAIGA_API_URL": "<Taiga API Url (ex: http://localhost:9000)",
"TAIGA_USERNAME": "<taiga username>",
"TAIGA_PASSWORD": "<taiga password>"
}
}
}
Running the Bridge
Start the MCP server with:
# Default stdio transport
./run.sh
# For SSE transport
./run.sh --sse
Or manually:
# For stdio transport (default)
uv run python src/server.py
# For SSE transport
uv run python src/server.py --sse
Transport Modes
The server supports two transport modes:
- stdio (Standard Input/Output) - Default mode for terminal-based clients
- SSE (Server-Sent Events) - Web-based transport with server push capabilities
You can set the transport mode in several ways:
- 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
This MCP bridge uses a session-based authentication model:
-
Login: Clients must first authenticate using the
login
tool: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:# 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:
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:
client.call_tool("logout", {"session_id": session_id})
Example: Complete Project Creation Workflow
Here's a complete example of creating a project with epics and user stories:
from mcp.client import Client
# Initialize MCP client
client = Client()
# Authenticate and get session ID
auth_result = client.call_tool("login", {
"username": "admin",
"password": "password123",
"host": "https://taiga.mycompany.com"
})
session_id = auth_result["session_id"]
# Create a new project
project = client.call_tool("create_project", {
"session_id": session_id,
"name": "My New Project",
"description": "A test project created via MCP"
})
project_id = project["id"]
# Create an epic
epic = client.call_tool("create_epic", {
"session_id": session_id,
"project_id": project_id,
"subject": "User Authentication",
"description": "Implement user authentication features"
})
epic_id = epic["id"]
# Create a user story in the epic
story = client.call_tool("create_user_story", {
"session_id": session_id,
"project_id": project_id,
"subject": "User Login",
"description": "As a user, I want to log in with my credentials",
"epic_id": epic_id
})
# Logout when done
client.call_tool("logout", {"session_id": session_id})
Development
Project Structure
pyTaigaMCP/
โโโ src/
โ โโโ server.py # MCP server implementation with tools
โ โโโ taiga_client.py # Taiga API client with all CRUD operations
โ โโโ tools.py # MCP tools definitions
โ โโโ config.py # Configuration settings with Pydantic
โโโ tests/
โ โโโ conftest.py # Shared pytest fixtures
โ โโโ unit/ # Unit tests
โ โโโ integration/ # Integration tests
โโโ pyproject.toml # Project configuration and dependencies
โโโ install.sh # Installation script
โโโ run.sh # Server execution script
โโโ README.md # Project documentation
Testing
Run tests with pytest:
# Run all tests
pytest
# Run only unit tests
pytest tests/unit/
# Run only integration tests
pytest tests/integration/
# Run tests with specific markers
pytest -m "auth" # Authentication tests
pytest -m "core" # Core functionality tests
# Run tests with coverage reporting
pytest --cov=src
Debugging and Inspection
Use the included inspector tool for debugging:
# Default stdio transport
./inspect.sh
# For SSE transport
./inspect.sh --sse
# For development mode
./inspect.sh --dev
Error Handling
All API operations return standardized error responses in the following format:
{
"status": "error",
"error_type": "ExceptionClassName",
"message": "Detailed error message"
}
Performance Considerations
The bridge implements several performance optimizations:
- 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
Contributions are welcome! Please feel free to submit a Pull Request.
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Taiga for their excellent project management platform
- Model Context Protocol (MCP) for the standardized AI communication framework
- All contributors who have helped shape this project
Leave a Comment
Frequently Asked Questions
What is MCP?
MCP (Model Context Protocol) is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications, providing a standardized way to connect AI models to different data sources and tools.
What are MCP Servers?
MCP Servers are lightweight programs that expose specific capabilities through the standardized Model Context Protocol. They act as bridges between LLMs like Claude and various data sources or services, allowing secure access to files, databases, APIs, and other resources.
How do MCP Servers work?
MCP Servers follow a client-server architecture where a host application (like Claude Desktop) connects to multiple servers. Each server provides specific functionality through standardized endpoints and protocols, enabling Claude to access data and perform actions through the standardized protocol.
Are MCP Servers secure?
Yes, MCP Servers are designed with security in mind. They run locally with explicit configuration and permissions, require user approval for actions, and include built-in security features to prevent unauthorized access and ensure data privacy.
Related MCP Servers
chrisdoc hevy mcp
sylphlab pdf reader mcp
An MCP server built with Node.js/TypeScript that allows AI agents to securely read PDF files (local or URL) and extract text, metadata, or page counts. Uses pdf-parse.
aashari mcp server atlassian bitbucket
Node.js/TypeScript MCP server for Atlassian Bitbucket. Enables AI systems (LLMs) to interact with workspaces, repositories, and pull requests via tools (list, get, comment, search). Connects AI directly to version control workflows through the standard MCP interface.
aashari mcp server atlassian confluence
Node.js/TypeScript MCP server for Atlassian Confluence. Provides tools enabling AI systems (LLMs) to list/get spaces & pages (content formatted as Markdown) and search via CQL. Connects AI seamlessly to Confluence knowledge bases using the standard MCP interface.
prisma prisma
Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB and CockroachDB
Zzzccs123 mcp sentry
mcp sentry for typescript sdk
zhuzhoulin dify mcp server
zhongmingyuan mcp my mac
zhixiaoqiang desktop image manager mcp
MCP ๆๅกๅจ๏ผ็จไบ็ฎก็ๆก้ขๅพ็ใๆฅ็่ฏฆๆ ใๅ็ผฉใ็งปๅจ็ญ๏ผๅฎๅ จ่ฎฉTraeๅฎ็ฐ๏ผ
zhixiaoqiang antd components mcp
An MCP service for Ant Design components query | ไธไธชๅๅฐ Ant Design ็ปไปถไปฃ็ ็ๆๅนป่ง็ MCP ๆๅก๏ผๅ ๅซ็ณป็ปๆ็คบ่ฏใ็ปไปถๆๆกฃใAPI ๆๆกฃใไปฃ็ ็คบไพๅๆดๆฐๆฅๅฟๆฅ่ฏข
Submit Your MCP Server
Share your MCP server with the community
Submit Now