mcp-movidesk
This MCP server exposes Movidesk's public API for natural-language ticket and person/organization operations.
List and search current tickets (updated in last 90 days) and past tickets, with OData pagination/filtering/sorting/expansion.
Fetch a ticket by id or protocol, optionally including deleted related items.
Create and update tickets, including internal notes or public replies through actions.
Upload local file attachments to ticket actions.
List, fetch, create, and update persons/organizations, with OData filters on listing; update warnings about overwriting emails/contacts.
Run over stdio for desktop/CLI MCP clients or HTTP for Docker/remote clients, authenticating with a Movidesk API token.
Forward Movidesk API error bodies. README also claims attachment download by hash, but that tool is not in the provided schema.
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., "@mcp-movidesk list my open tickets from the last week"
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.
MCP Server for Movidesk
MCP server for interacting with the Movidesk public API via natural language, exposing ticket and person/organization operations to MCP hosts (Claude Desktop, VS Code, Cursor, and compatible clients).
Features
List, search, create, and update tickets (
/ticketsand/tickets/past)Upload attachments to ticket actions (
/ticketFileUpload)Download ticket attachments by hash (
/storage/download), inline or saved to diskList, search, create, and update persons/organizations (
/persons)OData filter support (
$filter,$select,$expand,$orderby,$top,$skip) on listing toolsError handling that forwards the error body returned by the Movidesk API
Related MCP server: Freshdesk MCP Server
Available Tools
Tool | Description |
| Lists tickets updated in the last 90 days, with optional OData filters |
| Lists tickets last updated more than 90 days ago ( |
| Fetches a ticket by |
| Creates a new ticket |
| Updates an existing ticket, including notes/replies via |
| Uploads a local file as an attachment to a ticket action |
| Downloads an attachment by its hash ( |
| Lists persons/organizations, with optional OData filters |
| Fetches a person/organization by |
| Creates a new person/organization |
| Updates an existing person/organization |
Requirements
Node.js 18+
Movidesk API token (generated in the Movidesk admin panel: Settings → Workspace → API Token)
Configuration
The authentication token can be provided via environment variable or command-line argument. When both are provided, the argument takes precedence.
Variable / Argument | Required | Description |
| Yes* | Movidesk API token |
| Yes* | Alternative to |
* One of the two is required.
The API base URL (https://api.movidesk.com/public/v1) is fixed and not configurable.
Security: prefer MOVIDESK_TOKEN via env for continuous use. --token is visible in process listings (ps, task manager) and is recommended only for one-off manual testing.
Variable | Required | Default | Description |
| No |
| Transport mode: |
| No |
| Port for the HTTP server (only used when |
| No |
| Bind address for the HTTP server (only used when |
Usage
Run directly from GitHub
npx github:ferronicardoso/mcp-movideskClaude Code (CLI)
claude mcp add movidesk --scope user -- npx -y github:ferronicardoso/mcp-movidesk--scope controls where the server registration is stored:
Scope | Stored in | Visible to |
| project-local, untracked | only you, only in this project |
|
| anyone who clones the repo (commit it to share) |
| your global Claude Code config | you, across every project |
Environment variables can be passed with repeated --env KEY=VALUE flags before the --, e.g.:
Bash (Linux/macOS/WSL):
claude mcp add movidesk --scope user \
--env MOVIDESK_TOKEN=your-token-here \
-- npx -y github:ferronicardoso/mcp-movideskPowerShell:
claude mcp add movidesk --scope user `
--env MOVIDESK_TOKEN=your-token-here `
-- npx -y github:ferronicardoso/mcp-movideskCodex CLI
Bash (Linux/macOS/WSL):
codex mcp add movidesk \
--env MOVIDESK_TOKEN=your-token-here \
npx -- -y github:ferronicardoso/mcp-movideskPowerShell:
codex mcp add movidesk `
--env MOVIDESK_TOKEN=your-token-here `
npx -- -y github:ferronicardoso/mcp-movideskThis registers the server in ~/.codex/config.toml. To remove it, run codex mcp remove movidesk.
Claude Desktop configuration
%APPDATA%\\Claude\\claude_desktop_config.json:
{
"mcpServers": {
"movidesk": {
"command": "npx",
"args": ["github:ferronicardoso/mcp-movidesk"],
"env": {
"MOVIDESK_TOKEN": "your-token-here"
}
}
}
}VS Code MCP configuration
.vscode/mcp.json:
{
"servers": {
"movidesk": {
"command": "npx",
"args": ["github:ferronicardoso/mcp-movidesk"],
"env": {
"MOVIDESK_TOKEN": "your-token-here"
}
}
}
}Run with Docker (HTTP transport)
The published image runs in Streamable HTTP mode by default, for use as a remote MCP endpoint (e.g. from n8n's MCP Client Tool node or any Streamable HTTP-compatible client):
Bash (Linux/macOS/WSL):
docker run -d --name mcp-movidesk \
-p 3003:3003 \
-e MOVIDESK_TOKEN=your-token-here \
ghcr.io/ferronicardoso/mcp-movidesk:latestPowerShell:
docker run -d --name mcp-movidesk `
-p 3003:3003 `
-e MOVIDESK_TOKEN=your-token-here `
ghcr.io/ferronicardoso/mcp-movidesk:latestThe MCP endpoint is then available at http://localhost:3003/mcp.
Local Development
git clone https://github.com/ferronicardoso/mcp-movidesk
cd mcp-movidesk
npm install
npm run buildStart the compiled server:
MOVIDESK_TOKEN=your-token-here npm startBuild and Commit Workflow
This repository intentionally tracks dist/ to support npx github:user/repo usage.
The project uses a Husky pre-commit hook to:
build TypeScript (
npm run build)stage generated artifacts (
git add dist)
Manual fallback:
npm run build
git add distSecurity Notes
Never commit the real token or
.envfiles.Use
MOVIDESK_TOKENvia environment for continuous use; avoid--tokenoutside of one-off testing.The API's 10 requests/minute limit applies from 7:01 AM to 6:59 PM; outside that window access is unrestricted.
License
MIT © Raphael Augusto Ferroni Cardoso
Available Tools
10 toolscreate_personA
Cria uma nova pessoa/organização (POST /persons). Contatos são informados nos arrays emails[] ({emailType, email, isDefault}) e contacts[] ({contactType, contact, isDefault}). Documento (CPF ou CNPJ) vai no campo cpfCnpj. Agentes (profileType=1) exigem accessProfile e teams.
Inputs: isActive (required), personType (required), profileType (required), businessName (required).
create_ticketB
Cria um novo ticket no Movidesk (POST /tickets). Aceita os campos do ticket conforme o layout da API (type, subject, category, urgency, status, clients, actions, etc.). O campo actions permite registrar a descrição inicial (type=1 nota interna, type=2 resposta pública).
Inputs: type (required), subject (required).
get_personB
Busca uma pessoa/organização específica por id (GET /persons).
Inputs: id (required).
get_ticketA
Busca um único ticket por id ou por protocolo. Ao menos um dos dois é obrigatório.
Inputs: id, protocol, includeDeletedItems.
list_personsA
Lista pessoas/organizações do Movidesk (GET /persons), com suporte a filtros OData.
Inputs: top, skip, filter, select, +1 more.
list_ticketsA
Lista tickets atualizados nos últimos 90 dias (rota /tickets). Para tickets mais antigos, use list_tickets_past.
Inputs: top, skip, expand, filter, +2 more.
list_tickets_pastB
Lista tickets com última atualização (lastupdate) anterior a 90 dias (rota /tickets/past).
Inputs: top, skip, expand, filter, +2 more.
update_personA
Atualiza uma pessoa/organização existente (PATCH /persons?id=). Envie somente os campos a alterar. ATENÇÃO: enviar os arrays emails ou contacts sobrescreve a lista inteira anterior — inclua todos os itens desejados, não apenas o novo.
Inputs: id (required).
update_ticketA
Atualiza um ticket existente (PATCH /tickets?id=). Envie somente os campos a alterar. O campo actions permite adicionar notas internas (type=1) ou respostas públicas (type=2) ao ticket.
Inputs: id (required).
upload_ticket_attachmentA
Envia um arquivo local como anexo de uma ação de ticket (POST /ticketFileUpload). Requer um caminho de arquivo existente no filesystem local.
Inputs: id (required), actionId (required), filePath (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a distinct resource (person vs ticket) and action (create, get, list, update, upload). The split between list_tickets and list_tickets_past clearly differentiates recent and historical data. No overlap or ambiguity.
All tools follow a consistent verb_noun pattern in snake_case: create_person, get_person, list_persons, update_person, create_ticket, etc. Even upload_ticket_attachment adheres to verb_noun_noun. No mixing of styles.
10 tools is well-scoped for a CRM/helpdesk server. It covers CRUD for persons and tickets plus file upload, without unnecessary complexity. Each tool serves a clear purpose.
The tool surface covers create, read, update, and list for both persons and tickets, but lacks delete operations. This is a notable gap that may require workarounds like status changes. Additionally, no search or advanced filtering beyond OData parameters is provided.
Maintenance
Related MCP Connectors
Manage tickets, run agents and workflows, query tables, and search workspace knowledge.
Search tickets, read conversations and people; create and update tickets and people in Octadesk.
Read tickets, contacts, companies, agents and groups; create, update and reply to tickets.
Helpdesk tickets from your AI: find, reply, take, hold, complete — within your own role. OAuth.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceExposes the complete Zoho Desk API with over 700 endpoints across 130 categories using a context-efficient search-then-call pattern. It enables users to manage tickets, contacts, agents, and support operations through natural language interactions.3-
- AlicenseAqualityDmaintenanceEnables fetching and searching Freshdesk tickets, including details like conversations, attachments, and custom fields, via natural language queries.3242 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Autotask REST API for ticket management and querying through natural language.MIT
- AlicenseAqualityDmaintenanceEnables AI agents to create, query, search, and manage Movidesk tickets directly via natural language.818 npm1MIT