Taiga MCP Server
This server gives LLM clients six tools to manage Taiga projects, work items, sprints, comments, attachments, and wiki pages.
projects: list projects, get project details by ID/slug, and verify credentials with whoami.
work: list, get, create, update, link, unlink, and delete issues, user stories, tasks, and epics; supports batch creation of up to 20 items.
sprints: list, get, create, and fetch stats for sprints/milestones.
comments: list, add, edit, and delete comments on work items and wiki pages.
attachments: list, upload, download, and delete attachments on work items and wiki pages.
wiki: list, get, create, update, delete, and watch wiki pages.
Runs over stdio or streamable HTTP, with Docker support and environment-based Taiga authentication.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Taiga MCP ServerList the open user stories in the Acme Web project."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Taiga MCP server
A TypeScript MCP server for Taiga. It gives LLM clients six tools for projects, work items, sprints, comments, attachments, and wiki pages.
The server uses MCP revision 2026-07-28, native fetch, and either stdio or streamable HTTP.
Requirements
Node.js 24 or newer.
A Taiga account on taiga.io or a self-hosted instance.
TAIGA_USERNAMEandTAIGA_PASSWORD.
Set TAIGA_API_URL for a self-hosted instance. Include /api/v1 in the URL.
Variable | Purpose | Default |
| Taiga REST API base URL |
|
| Taiga username or email | Required |
| Taiga password | Required |
| Serve streamable HTTP when set | stdio |
| HTTP bind address |
|
Related MCP server: @illodev/taiga-mcp
Install
Published package
Use the published package from an MCP client that accepts a stdio command:
{
"mcpServers": {
"taiga": {
"command": "npx",
"args": ["-y", "mcp-taiga"],
"env": {
"TAIGA_USERNAME": "your_username",
"TAIGA_PASSWORD": "your_password"
}
}
}
}Pass credentials through the client environment. An npx install does not load a repository .env file.
Local checkout
git clone https://github.com/negoro26/mcp-taiga.git
cd mcp-taiga
npm ci
npm run build
cp .env.example .envFill in .env, then configure the client to run:
{
"mcpServers": {
"taiga": {
"command": "node",
"args": ["/absolute/path/to/mcp-taiga/dist/src/index.js"],
"cwd": "/absolute/path/to/mcp-taiga"
}
}
}A local checkout loads .env with Node's built-in environment loader. Do not commit .env.
Oh My Pi
Start OMP in the checkout and run:
/mcp addChoose a local stdio server, then use:
command: node
args: /absolute/path/to/mcp-taiga/dist/src/index.js
cwd: /absolute/path/to/mcp-taigaRun /mcp test taiga or /mcp list to verify the server. OMP configuration lives in ~/.omp/agent/mcp.json.
HTTP transport
Set TAIGA_HTTP_PORT to serve the same tools over streamable HTTP:
TAIGA_HTTP_PORT=3000 npx -y mcp-taigaThe endpoint is:
http://127.0.0.1:3000/mcpConfigure URL-based clients with:
{
"mcpServers": {
"taiga": {
"type": "http",
"url": "http://127.0.0.1:3000/mcp"
}
}
}The HTTP server is stateless, validates the Host and Origin headers, and defaults to loopback. A routable bind address prints a warning because the connection is not encrypted.
Tools
The server exposes six tools and 28 operation pairs.
Tool | Operations | Key arguments |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Input conventions
Projects accept a numeric ID or slug.
Work items accept a numeric ID or a
#reference. A reference also needsproject.Members accept an ID, username, full name, or
me.Statuses, priorities, severities, issue types, and sprint names resolve to Taiga IDs.
Batch work-item creation accepts at most 20 items.
attachments.downloadreturns metadata by default. SetincludeContent: trueto return bytes, or setsavePathto write them locally.Listings return dense plain text. Empty lists are successful results.
Safety and reliability
401 responses trigger one token refresh and retry.
429 responses retry at most twice and honor
Retry-After. Waits longer than five seconds fail with a retry message.5xx responses are not retried because a write may already have succeeded.
Project, user, and taxonomy metadata is cached for 60 seconds.
Requests time out after 30 seconds.
Attachment downloads reject redirects, cap reads at 10 MB, require the Taiga hostname, and do not send the bearer token to media hosts.
File downloads refuse to overwrite an existing file.
Deletes accept one target at a time. Batch creation does not imply batch deletion.
Docker
docker build -t mcp-taiga .
docker run --rm -i --env-file .env mcp-taigaFor HTTP mode:
docker run --rm -p 127.0.0.1:3000:3000 \
-e TAIGA_HTTP_PORT=3000 \
--env-file .env \
mcp-taigaThe container uses Node.js 24 Alpine and runs as the non-root node user.
Development
npm ci
npm run check
npm run lint
npm testCommand | Purpose |
| Compile |
| Type-check without output |
| Run the TypeScript anti-slop checks with oxlint |
| Run unit, protocol, contract, and HTTP tests |
| Run the live Taiga smoke test when credentials exist |
The test suite covers pure helpers, the MCP stdio handshake, all tool operations against a mock Taiga server, streamable HTTP, and live Taiga reads.
Project layout
src/index.ts server entrypoint and transport selection
src/http.ts streamable HTTP transport
src/api.ts authenticated fetch transport and cache
src/taiga.ts Taiga domain resolution and patching
src/tools/*.ts six tool implementations
test/apiContractTest.ts mock Taiga contract tests
test/protocolTest.ts stdio MCP tests
test/httpTest.ts HTTP MCP tests
test/integration.ts live Taiga smoke testContributing
Pull requests target dev. See CONTRIBUTING.md for the branch model and commit rules.
License
Available Tools
6 toolsattachmentsAttachmentsADestructive
List, upload, download, or delete attachments across work items and wiki pages.
op | required args | optional args | notes |
list | type, item | project | List attachments on a work item or wiki page |
upload | type, item, filePath OR fileContent | project, fileName, mimeType, description | Upload file to Taiga host from local path (harness resolves local:// URIs) or base64 |
download | type, attachmentId | savePath | Fetch metadata and bytes; writes to savePath when given |
delete | type, attachmentId | Delete attachment by ID |
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Operation to perform: list, upload, download, delete | |
| item | No | Item numeric ID, #ref, or wiki slug | |
| type | No | Target item type (issue, story, task, epic, wiki) | |
| project | No | Project ID or slug (required for #ref or wiki slug) | |
| fileName | No | File name including extension | |
| filePath | No | Local file path on the machine running this server to upload to the Taiga host (the omp harness resolves local:// URIs to filesystem paths before invoking this tool) | |
| mimeType | No | MIME type of uploaded file | |
| savePath | No | Local filesystem path to save downloaded file | |
| description | No | Attachment description text | |
| fileContent | No | Base64-encoded file content to upload | |
| attachmentId | No | Attachment ID for download or delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds helpful behavioral details beyond the annotations: download writes files to savePath when provided, and upload resolves local:// URIs through the harness. The destructiveHint annotation is consistent with the delete operation, and no annotation contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, well organized, and front-loads the core purpose in one clause. The table conveys a large amount of operation-parameter information without unnecessary prose, and every line adds utility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has many parameters and a multi-operation structure, but the operation table plus schema descriptions cover the calling requirements well. It could offer more on return shapes, permissions, or side effects, though it remains sufficient for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage of 100 percent means baseline is 3, but the description still adds meaningful value through a required/optional argument matrix per operation. It clarifies the relationship between operation and parameter choice, especially the 'filePath OR fileContent' upload requirement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb set — 'List, upload, download, or delete attachments' — and scopes it to 'work items and wiki pages.' The operation table further disambiguates each action, and the tool name plus resource clearly separates it from sibling tools like comments and wiki.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The table gives clear operational context by mapping each op to required and optional arguments. It implicitly tells the agent when to use an operation but does not explicitly discuss exclusions or mention specific sibling alternatives for choosing between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commentsCommentsADestructive
List, add, edit, or delete comments on issues, user stories, tasks, epics, and wiki pages. Note: Taiga soft-deletes comments on delete.
| op | required args | optional args | | list | type, item | project, includeDeleted | | add | type, item, text | project | | edit | type, item, commentId, text | project | | delete | type, item, commentId | project |
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Operation to perform | |
| item | No | Item ID, #reference, or wiki slug | |
| text | No | Comment markdown text (add, edit) | |
| type | No | Item type | |
| project | No | Project ID or slug (required for #ref or wiki slug) | |
| commentId | No | Comment UUID (edit, delete) | |
| includeDeleted | No | Include soft-deleted comments (list) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description reveals a key behavioral nuance: 'Taiga soft-deletes comments on delete'. This explains how deletes behave and makes the includeDeleted parameter meaningful. It also implies deletion might be reversible, which adds context not available from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single introductory sentence followed by a compact, readable table. Every piece of content in the table contributes to understanding operation-specific argument requirements, with no fluff or repetition of schema details. The purpose is front-loaded in the first clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 params, no output schema, 4 operations), the description provides a complete operation-by-operation breakdown of required and optional arguments. The soft-delete note and the includeDeleted parameter are explained in a way that leaves nothing ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers all parameter descriptions (100% coverage), so the baseline is 3. The description's operation matrix adds value by showing which parameters are conditionally required for each 'op' (e.g., commentId only for edit/delete, text only for add/edit), which the schema does not convey. This extra relational information raises the score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb phrase ('List, add, edit, or delete') and names the exact resource types (issues, user stories, tasks, epics, wiki pages). It unambiguously identifies this tool as the comment-handling tool, separating it from siblings like 'attachments' and 'wiki'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The operation table gives explicit guidance on which arguments are required for each operation (list vs. add vs. edit vs. delete), helping an agent assemble calls correctly. It lacks an explicit statement of when not to use this tool, but the operations are self-explanatory and no true alternative exists among the listed siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projectsProjectsARead-onlyIdempotent
List or inspect Taiga projects and verify credentials.
Credentials come from TAIGA_USERNAME and TAIGA_PASSWORD in the environment; the server authenticates on first use. Use whoami to verify them.
op | required args | optional args | notes |
list | List projects where authenticated user is member | ||
get | project | Inspect project metadata, owner, member count, active modules | |
whoami | Verify credentials and show current user info |
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Operation to perform: list, get, or whoami | |
| project | No | Project ID or slug (required for get) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld hints. The description adds behavioral context: credentials are sourced from environment variables and authentication occurs on first use. This explains the tool's interaction with external state without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, using a table to organize the three operations. No redundant sentences; all content is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description briefly indicates return types (e.g., 'list projects', 'inspect metadata, owner, member count', 'show current user info'), which is sufficient for a read-only tool. It covers credential handling and operation-specific arguments effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes op and project (100% coverage). The description goes further by mapping each operation to its required/optional arguments, clarifying that get needs project while list and whoami don't, which is not evident from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'List or inspect Taiga projects and verify credentials' and then enumerates three operations (list, get, whoami) in a structured table, making the tool's purpose unmistakable and distinct from siblings like sprints or work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to use the whoami operation for credential verification, and the table indicates when each op applies (e.g., get for inspecting a specific project's metadata). While it doesn't name sibling alternatives, the resource-specific scope makes the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprintsSprintsA
Manage Taiga sprints (milestones): list, inspect, create, or fetch statistics.
Operations:
list: List sprints in a project. Requires project.
get: Get sprint details and assigned stories. Requires sprint (ID or name); project required if sprint is a name.
stats: Get sprint progress statistics and metrics. Requires sprint; project required if sprint is a name.
Sprint deletion is intentionally not exposed: removing a milestone detaches every story and task on it, so it is a board-wide edit that belongs in the Taiga UI. Delete individual work items with the work tool instead.
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Operation to perform | |
| name | No | Sprint name (for create) | |
| start | No | Start date YYYY-MM-DD (for create) | |
| finish | No | Finish date YYYY-MM-DD (for create) | |
| sprint | No | Sprint ID or name (for get, stats) | |
| project | No | Project ID or slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only, non-destructive, open-world. The description adds valuable context that sprint deletion is intentionally not exposed because it detaches all stories/tasks, a board-wide edit better done in the UI. This goes beyond annotations by explaining the design rationale, though it does not detail auth or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a brief overview and bullet-pointed operations. Every line provides necessary information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description covers all operations, required parameters, exclusions (deletion), and points to the correct sibling tool for related actions. It is sufficiently complete for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The description adds operational context (e.g., which parameters are required for which op, project needed when sprint is a name) beyond the schema, improving the agent's ability to invoke the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages Taiga sprints with specific operations (list, get, create, stats). It distinguishes from siblings by explicitly mentioning the work tool for deletion and implying project tool for project-level tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit operation-specific prerequisites (e.g., 'Requires project' for list, 'project required if sprint is a name' for get/stats). Also gives an alternative: 'Delete individual work items with the work tool instead' when discussing deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikiWikiADestructive
Create, inspect, update, delete, or watch wiki pages in a project.
op | required args | optional args | notes |
list | project | List all wiki pages in project | |
get | page | project | Inspect wiki page metadata and content; project needed if page is slug |
create | project, page | content | Create wiki page; page is the slug |
update | page, content | project | Update wiki page content (OCC versioned); project needed if page is slug |
delete | page | project | Delete wiki page permanently; project needed if page is slug |
watch | page | project, watch | Watch (default) or unwatch wiki page; project needed if page is slug |
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Operation to perform: list, get, create, update, delete, watch | |
| page | No | Wiki page ID or slug | |
| watch | No | True to watch, false to unwatch (default true) | |
| content | No | Wiki page content in Markdown | |
| project | No | Project ID or slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description exposes meaningful behavior beyond the annotations: delete is described as permanent, update is described as OCC versioned, watch defaults to true, and list/get inspect metadata and content. This goes well beyond the bare readOnlyHint=false and destructiveHint=true annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operation table is a compact and scannable way to present six different modes in one tool. It is mainly efficient, although the repeated 'project needed if page is slug' note could be consolidated; still, the structure gives high clarity without unnecessary prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is highly complete for selecting and invoking each operation because it maps required args, slugs, content format, watch default, and destructive flag. With no output schema, a little more detail about the actual returned data shape would round it out, but the agent can safely and correctly call the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The table adds per-operation required/optional semantics beyond the raw schema, clarifies page as ID/slug, and explains when project is needed. It also documents content as Markdown and watch default behavior, so an agent can invoke each operation correctly without guessing parameter combinations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a clear action list—'Create, inspect, update, delete, or watch wiki pages'—and then concretely defines each operation against the wiki page resource. This makes the tool's scope unambiguous and keeps the list/get/create/update/delete/watch overloaded operation distinct from sibling resource tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The operation table gives explicit routing for each op and states which arguments are required versus optional, including the important condition that project is needed when page is a slug. It does not explicitly contrast the tool with sibling tools, but the table provides sufficient when-to-use guidance for each operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workWork itemsADestructive
Manage Taiga work items (issues, user stories, tasks, epics).
Operations:
list: List items with optional filters (project required).
get: Get details for a single item (item required).
create: Create one item or batch items (project and subject/items required).
update: Modify fields on an item (item required).
link: Link a user story to an epic (type: story, item: story, parent: epic required).
unlink: Remove a user story from an epic (type: story, item: story, parent: epic required).
delete: Permanently delete ONE item (item required). Taiga has no trash for work items, so this cannot be undone. Batch is deliberately create-only: up to 20 items can be created in a call, exactly one can be deleted, so a mistaken call cannot clear a board.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Full-text search query | |
| op | Yes | Operation to perform | |
| item | No | Item numeric ID or #ref | |
| tags | No | Tags array | |
| type | Yes | Work item type | |
| items | No | Batch create items array (max 20) | |
| limit | No | Maximum number of items to return | |
| closed | No | Filter by closed state | |
| parent | No | Parent story (tasks) or epic (link/unlink) | |
| points | No | Points value matching project point deck (e.g. 1, 3, 5, or "?" for unestimated; stories only) | |
| sprint | No | Sprint ID or name ("none" to clear) | |
| status | No | Status name | |
| orderBy | No | Order by field, prefix "-" for desc | |
| project | No | Project ID or slug | |
| subject | No | Item subject or title | |
| watcher | No | Filter by watcher username, email, or "me" | |
| assignee | No | Assignee username, email, full name, ID, or "me" | |
| priority | No | Priority name (issues only) | |
| severity | No | Severity name (issues only) | |
| issueType | No | Issue type name (issues only) | |
| description | No | Item description markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly warns that delete is permanent and that Taiga has no trash, and explains the batch create-only safeguard prevents accidental board clearing. This adds substantial safety context beyond the destructiveHint annotation, and there is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, starting with a one-line summary followed by a bulleted list of operations. Every sentence provides operational guidance, with no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All seven operations have their required parameters stated, the delete behavior carries a detailed permanence warning with rationale, and the batch limit is explicitly noted. Without an output schema, this description sufficiently covers invocation semantics for a complex 21-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 21 parameters already have descriptions. The tool description only reiterates which parameters are required for specific operations (e.g., project required) without adding new semantic meaning. The schema carries the parameter documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Manage Taiga work items (issues, user stories, tasks, epics)' and enumerates seven distinct operations with specific verbs (list, get, create, update, link, unlink, delete). This makes the tool's purpose unambiguous and clearly distinguishes it from sibling tools like projects, sprints, and wiki.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The operation list provides clear context with required parameters for each operation (e.g., 'project required', 'item required') and includes a safety warning about delete being permanent. However, it does not explicitly state when to use this tool over alternatives, though the separation from siblings is implicit in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
attachments - First observed
comments - First observed
projects - First observed
sprints - First observed
wiki - First observed
work
TDQS
Scored across 6 tools
Each tool maps to a distinct Taiga resource: projects, work items, sprints, comments, attachments, and wiki. Shared type/item parameters are used for child resources, but the tool purposes do not overlap.
Top-level tool names are simple lowercase resource nouns and are internally consistent. The pattern is slightly mixed because some names are plural resources while work and wiki are singular, and the internal op verbs vary between add/create and edit/update.
Six resource-scoped tools is a well-balanced surface for a project-management server. Each tool represents a meaningful functional area without making the tool list overwhelming.
The server covers most core workflows: project inspection, work-item CRUD, sprints, comments, attachments, and wiki with lifecycle operations. Deliberate gaps such as project creation/deletion and sprint update/delete prevent it from being fully complete.
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
An MCP server that provides access to Testiny projects, test cases and test runs
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables LLMs to manage Taiga projects, sprints, user stories, tasks, issues, epics, and wiki pages via natural language.3120 npmMIT
- AlicenseBqualityDmaintenanceFull-featured MCP server for Taiga project management, enabling AI agents to manage projects, epics, user stories, tasks, issues, sprints, wiki pages, memberships, and roles via Taiga API v1.10043 npm3MIT
- AlicenseAqualityBmaintenanceMCP server for the Taiga project management API. Enables AI assistants to manage projects, issues, user stories, tasks, epics, sprints, and wiki pages via natural language commands.557 npmISC
- FlicenseCqualityDmaintenanceMCP server for the Zube.io project management API, exposing boards, cards, epics, tickets, sprints, and workspaces as tools for AI assistants.42-