pytaiga-mcp

pytaiga-mcp

3.6

The Taiga MCP Bridge is an integration layer connecting the Taiga project management platform with the Model Context Protocol (MCP), enabling seamless interaction between AI tools and Taiga's resources.

The Taiga MCP Bridge is a robust integration tool that connects the Taiga project management platform with the Model Context Protocol (MCP). This bridge allows AI tools and workflows to interact seamlessly with Taiga's resources, enabling the creation and management of projects, epics, user stories, tasks, and issues. It also supports tracking sprints and milestones, assigning and updating work items, querying detailed information about project artifacts, and managing project members and permissions. By adhering to the MCP standard, the bridge ensures that AI systems maintain contextual awareness about project states and can perform complex project management tasks programmatically.

Features

  • {'name': 'Comprehensive Resource Support', 'description': 'Supports complete CRUD operations for Taiga resources including projects, epics, user stories, tasks, issues, and sprints.'}
  • {'name': 'Transport Modes', 'description': 'Supports stdio and SSE transport modes for flexible client-server communication.'}
  • {'name': 'Session-Based Authentication', 'description': 'Uses a session-based authentication model for secure interactions with the Taiga API.'}
  • {'name': 'Performance Optimizations', 'description': 'Implements connection pooling, rate limiting, retry mechanisms, and session cleanup for enhanced performance.'}
  • {'name': 'Error Handling', 'description': 'Provides standardized error responses for all API operations.'}

Usage with Different Platforms

stdio_mode


{
    "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

bash
# 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

authentication_flow

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
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
status = client.call_tool("session_status", {"session_id": session_id})

# Logout
client.call_tool("logout", {"session_id": session_id})

complete_project_creation_workflow

python
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})