list_user_storiesLABSCO SUMMARY
The verbosity switch is the feature that makes bulk listing practical.
Taiga's API responses are wide, and a sprint's worth of user stories at full fidelity will eat a conversation. Asking for minimal on the listing call and standard only on the item you are about to update keeps that under control. Auto-authentication from environment variables removes the session bookkeeping for the common single-account case; the login and logout tools remain for juggling several.
What it is
A bridge between Taiga's project-management API and MCP. It covers the full Taiga object graph — projects, epics, user stories, tasks, issues and milestones — with create, read, update and delete on each, and exposes project data as taiga:// resources as well as tools. Every tool takes a verbosity parameter, so a listing call can return five core fields instead of the complete API response.
What you get
- Projects, epics and user stories created and listed against a Taiga instance —
create_project,create_epic,create_user_story,list_projects,list_user_stories - Response size controlled per call:
minimalreturns id, ref, subject, status and project;standardadds the version field needed for updates;fullreturns the complete API response - Project data readable as resources rather than tool calls, for example
taiga://projectsandtaiga://projects/123/epics - A session model for multi-account work: log in, check whether the session is still valid, and log out —
login,session_status,logout - Allowlist-based parameter validation, so unexpected fields never reach the Taiga API, and credentials that are kept out of logs, error messages and stack traces
Requirements
A Taiga account. Python 3.12 or higher and the uv package manager; uv pip install -e . from a clone, or the prebuilt image ghcr.io/tetra-2023/pytaiga-mcp:latest. TAIGA_API_URL points at your instance and defaults to http://localhost:9000. Setting TAIGA_USERNAME and TAIGA_PASSWORD makes the server authenticate itself at startup, after which tool calls can omit the session id entirely; without them you call the login tool and pass the session id explicitly. TAIGA_TRANSPORT chooses stdio or sse, matching the --sse flag. The published package is mcp-taiga-bridge 2.0.1. The README describes this repository as a community fork with its own CI and ongoing maintenance.
Setup effort
One command plus credentials — docker pull ghcr.io/tetra-2023/pytaiga-mcp:latest, then supply credentials
USE CASES
Standing up a new project's backlog
Create the project, add the epics, then create user stories underneath them in one pass instead of clicking through the web UI.
Reviewing a sprint without flooding the conversation
List the user stories at minimal verbosity to see refs and statuses, then pull the one story you need at standard verbosity for its version field.
Working across two Taiga accounts in one session
Log in to each explicitly, carry the session id on every call, and check session validity before a long batch rather than discovering the expiry mid-run.
8 tools
Listed in project docs. Your client may show a different list.
list_projectscreate_user_storylogincreate_projectsession_statuslogoutcreate_epicBEFORE YOU INSTALL
What to know first
Tools you get
8 tools named in the project's documentation.
Requires
- Docker (container image), or Python 3.12+ with uv (local clone)
- A Taiga instance and account: TAIGA_API_URL, TAIGA_USERNAME and TAIGA_PASSWORD
Where it runs
All 3 documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
Setup
git clone https://github.com/talhaorak/pytaiga-mcp.git
cd pytaiga-mcp
uv pip install -e .docker
docker pull ghcr.io/tetra-2023/pytaiga-mcp:latestMCP Clients
Claude Desktop, Cursor
{
"mcpServers": {
"taigaApi": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO_LOCAL_PY_TAIGA_MCP>",
"run",
"src/server.py"
],
"env": {
"TAIGA_TRANSPORT": "stdio",
"TAIGA_API_URL": "<Taiga API Url (ex: http://localhost:9000)",
"TAIGA_USERNAME": "<YOUR_TAIGA_USERNAME>",
"TAIGA_PASSWORD": "<YOUR_TAIGA_PASSWORD>"
}
}
}
}<YOUR_PATH_TO_LOCAL_PY_TAIGA_MCP> is the absolute path of your clone. Keep TAIGA_TRANSPORT as stdio for Claude Desktop and Cursor — sse is for running the server separately with --sse.
Any MCP client — Docker
{
"mcpServers": {
"taigaApi": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TAIGA_API_URL",
"-e",
"TAIGA_USERNAME",
"-e",
"TAIGA_PASSWORD",
"ghcr.io/tetra-2023/pytaiga-mcp:latest"
],
"env": {
"TAIGA_API_URL": "<YOUR_TAIGA_API_URL>",
"TAIGA_USERNAME": "<YOUR_TAIGA_USERNAME>",
"TAIGA_PASSWORD": "<YOUR_TAIGA_PASSWORD>"
}
}
}
}Put your Taiga instance's API address and your Taiga username and password in the env block. Each "-e" name passes that variable from the env block into the container; without the values the server starts with no Taiga address or login.