Nimbus Copiloto MCP Server
Click on "Install 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., "@Nimbus Copiloto MCP ServerWhat's the SLA status of ticket #1234?"
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.
Nimbus Copiloto — Helpdesk MCP Server
MCP server for Helpdesk Nimbus, the support ticketing platform of Nimbus S.A.S. It lets an AI assistant operate the helpdesk: search cases, view history, escalate, respond, and measure SLA compliance.
This is a learning environment. Nimbus S.A.S. is a fictional company. The repository exists to learn FastMCP by building a project with the shape and demands of a real one.
Quick start
# 1. Dependencias
uv sync
# 2. Sembrar la base de datos
uv run python -m backend.seed
# 3. Levantar el backend de la empresa (terminal aparte, déjalo corriendo)
uv run uvicorn backend.main:app --reload --port 8000
# 4. Correr las pruebas
uv run pytest -vWith the backend running: http://127.0.0.1:8000/docs
Related MCP server: tickiti-mcp
The MCP server
# Correrlo
uv run python -m nimbus_mcp.server
# Inspeccionarlo en el navegador
uv run fastmcp dev src/nimbus_mcp/server.pyIt is also available inside Claude Code thanks to .mcp.json. Check with /mcp.
Structure
mcp-test/
├── backend/ # API interna de Nimbus — NO SE TOCA
│ ├── main.py # FastAPI: tickets, clientes, agentes, KB, métricas
│ ├── db.py # Esquema SQLite
│ └── seed.py # Generador de datos de prueba
├── src/nimbus_mcp/ # El servidor MCP — aquí trabajas
│ └── server.py
├── tests/ # Pruebas
├── data/nimbus.db # Base sembrada (regenerable)
└── docs/ # Documentación del proyectoDocumentation
Document | What it's for |
Start here. What MCP is, how to get everything running, learning path | |
The long plan: 8 phases to AI Engineer | |
The company, the team, why the project exists | |
The domain: tickets, statuses, SLA, glossary | |
API contract consumed by the MCP | |
Phase 1 — the MCP tickets | |
Phase 2 — the copilot tickets | |
Where the last session left off |
The plan
This repository is Phase 1 of eight. The system grows in layers: MCP → copilot → evals → RAG → guardrails → observability → own models → production. The complete map is in docs/RUTA_AI_ENGINEER.md.
Versions
Python 3.13 · FastMCP 3.4.7 · FastAPI 0.141 · pytest 9.1
Available Tools
3 toolsconsultar_ticketA
Consulta los datos de un ticket específico. Toca la red para obtener los datos. Únicamente lee información de un ticket, no modifica nada.
Casos de uso:
El agente pregunta por un ticket con su código.
Formato de código: TCK-0000 - Pudiendo ser los 0000 cualquier número. El código no distingue entre mayúsculas y minúsculas.
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations were provided, so the description carries the full burden of disclosing behavior. It explains this is a read-only network operation, provides the exact code format, and notes case-insensitivity. It could be more explicit about what happens when a ticket is not found or network errors occur, but for a read-only lookup tool, this is quite thorough.
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 clear summary, context, and use cases. It avoids unnecessary fluff and uses whitespace effectively. Every section adds value, from the primary description to the code format details and case-insensitivity note.
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?
For a simple read-only query tool with one parameter, the description covers the essentials: what it does, how to invoke the parameter, and format validation rules. It's accessed via read-only operation, has no nested objects, and has an output schema. Could add network/rate-limit caveats, but those are typically beyond the scope of a tool description.
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?
With 0% schema coverage and a single L2 parameter 'codigo', the description does the heavy lifting by defining the format: 'TCK-0000' with the number portion being any number. While the description could add regex or validation rules, it provides the key semantic information: the acceptance criteria for the code format and that it's case-insensitive. However, it doesn't explicitly state what the tool is FOR (to fetch a ticket by its id), which is implied by the tool name 'consultar_ticket.'
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 uses a specific verb+resource combination ('Consulta los datos de un ticket específico') and clearly defines what it does. It distinguishes itself from siblings by focusing exclusively on single-ticket queries, while 'listar_estados_de_ticket' implies a different purpose. The code format and use cases further clarify the tool's intended purpose.
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 description explicitly states a primary use case ('El agente pregunta por un ticket con su código') and clarifies it's read-only ('Únicamente lee información de un ticket, no modifica nada'). It also explains that it hits the network ('Toca la red'), implying it may have performance implications. However, it doesn't explicitly mention when NOT to use it or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listar_estados_de_ticketA
Lista los estados posibles de un ticket y su explicación. No toca la red, es una tool únicamente informativa, no devuelve los datos de un ticket específico sino de la lista de estados posibles y válidos que trabajamos en Nimbus.
Casos de uso:
El agente pregunta por los estados que existen para un ticket.
El agente no entiende por qué el estado de un ticket y necesitamos aclararlo.
El agente pide explicación de por qué no puede tocar un ticket.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that the tool is purely informational ('No toca la red, es una tool únicamente informativa') and does not return specific ticket data. Since no annotations are provided, this disclosure is valuable because it explicitly tells the agent that this tool has no side effects and is safe to call. It also clarifies the scope of the return (list of valid states, not ticket-specific data), adding context beyond the schema.
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 concise, with two short paragraphs and a bulleted list of use cases. Every sentence adds value: the first clarifies the scope, the second lists use cases. However, the use cases could be seen as slightly repetitive (the second and third are similar), but overall it is efficient and well-structured.
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 is a simple zero-parameter informational tool, the description is complete. It explains what the tool returns, that it is non-network and informational, and provides usage examples. The output schema exists (context signal), so return value specifics are presumably covered there. The description provides sufficient context for an agent to invoke this tool appropriately, distinguishing it from the sibling tools.
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 tool has zero parameters, so the description's role is to explain the output, which it does (lists possible states and explanations). The schema has no properties, so there is no parameter information to add. With 0 parameters, baseline is 4, and the description adequately compensates by explaining what the tool returns and its informational nature.
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 what the tool does: it lists the possible ticket states and their explanations. It is distinguished from siblings by explicitly stating it is informational only and does not return data for a specific ticket, which contrasts with consultar_ticket. The verb 'Lista' specifies the action and resource (estados de ticket).
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 description provides explicit usage cases: when the agent asks about existing states, when the agent doesn't understand a ticket state, and when the agent needs an explanation of why it cannot touch a ticket. It also explicitly states when NOT to use it: it does not return data for a specific ticket. This clearly differentiates from consultar_ticket, which would be the alternative for specific ticket data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingA
Verifica que el servidor MCP de Nimbus esta vivo.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic function of checking server aliveness, without mentioning potential side effects, whether it's a read-only operation, response behavior, or error handling. For a simple health check, more detail (e.g., that it makes no changes, what it returns) would be expected.
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, clear sentence with no extraneous information. It is entirely front-loaded and efficient.
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 simplicity and the presence of an output schema, the description is largely complete for a health-check tool. However, it lacks optional details like common failure modes (server down, timeouts) or typical use cases beyond 'is it alive', which leaves some ambiguity for the agent about handling results. Still, for a basic ping, it is adequate.
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 tool has zero parameters, and the schema reflects this (100% coverage). The baseline for 0 parameters is 4, and there is no parameter information to elaborate on. The description correctly adds nothing about parameters, which is appropriate.
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 the tool's purpose: to verify the Nimbus MCP server is alive. It uses a specific verb ('Verifica') and resource ('servidor MCP de Nimbus'). This is distinct from sibling tools (list and consult tickets), which are about ticket operations.
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 description implies when to use the tool (as a health check for the server) but does not explicitly mention alternatives or scenarios where it should not be used. Given the sibling tools are unrelated, the context is clear, but there is no explicit guidance on usage.
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.
3 tool updates
v0.1.0- First observed
consultar_ticket - First observed
listar_estados_de_ticket - First observed
ping
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: ping checks server liveness, listar_estados_de_ticket provides reference information about ticket states, and consultar_ticket retrieves a specific ticket's data. There is no ambiguity or overlap between them.
Tool names follow a consistent verb_noun pattern (ping, listar_estados_de_ticket, consultar_ticket). Although 'ping' is a single verb, it is a standard convention and the other two follow the same style, ensuring predictability.
With 3 tools, the server is appropriately scoped for its narrow purpose of ticket status lookup and retrieval. Each tool is essential and there are no redundant or missing operations for the stated functionality.
The server covers the core read operations: checking health, listing possible ticket states, and fetching a specific ticket. A notable gap is the lack of a 'list_all_tickets' tool, but given the description, the server appears intentionally focused on individual ticket queries, so this is a minor omission rather than a critical failure.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- mttrlyOAuthcom.mttrly
AI-powered incident management and server monitoring via MCP.
MCP server for Support & Service Management
AI-native helpdesk hosted in Germany: tickets, replies, KPIs and knowledge base over MCP.
Remote MCP server for managing Muninx tickets, messages, ticket search, and support analytics.
Related MCP Servers
- AlicenseAqualityFmaintenanceAn MCP-compliant server that enables AI assistants like Claude Desktop to access and analyze Intercom support tickets with full conversation history.48Apache 2.0

tickiti-mcpofficial
AlicenseBqualityBmaintenanceAn MCP server that exposes the Tickiti helpdesk API to AI assistants, enabling ticket management and helpdesk operations via natural language.11MIT- FlicenseNot gradedqualityBmaintenanceMCP server for Nimbus Operations Copilot that enables AI agents to search help docs, customer data, invoices, and tickets, and propose refunds/tickets with human approval for writes.-
- FlicenseNot gradedqualityBmaintenanceMCP server that provides IT support tools to search known incidents, check ticket status, and create ticket drafts, enabling an AI assistant to help users with IT support queries.-