Skip to main content
Glama
mcp-movidesk

mcp-movidesk

MCP Server for Movidesk

Docker Publish GHCR Node.js

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 (/tickets and /tickets/past)

  • Upload attachments to ticket actions (/ticketFileUpload)

  • Download ticket attachments by hash (/storage/download), inline or saved to disk

  • List, search, create, and update persons/organizations (/persons)

  • OData filter support ($filter, $select, $expand, $orderby, $top, $skip) on listing tools

  • Error handling that forwards the error body returned by the Movidesk API

Related MCP server: Freshdesk MCP Server

Available Tools

Tool

Description

list_tickets

Lists tickets updated in the last 90 days, with optional OData filters

list_tickets_past

Lists tickets last updated more than 90 days ago (/tickets/past)

get_ticket

Fetches a ticket by id or protocol

create_ticket

Creates a new ticket

update_ticket

Updates an existing ticket, including notes/replies via actions

upload_ticket_attachment

Uploads a local file as an attachment to a ticket action

download_ticket_attachment

Downloads an attachment by its hash (path in actions[].attachments[]); returns it inline (up to 5 MB) or saves it to destinationPath

list_persons

Lists persons/organizations, with optional OData filters

get_person

Fetches a person/organization by id

create_person

Creates a new person/organization

update_person

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

MOVIDESK_TOKEN

Yes*

Movidesk API token

--token

Yes*

Alternative to MOVIDESK_TOKEN, via command-line argument

* 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

MCP_TRANSPORT

No

stdio

Transport mode: stdio (default, for npx/Claude Desktop/VS Code) or http (Streamable HTTP, for Docker/remote clients such as n8n)

MCP_HTTP_PORT

No

3003

Port for the HTTP server (only used when MCP_TRANSPORT=http)

MCP_HTTP_HOST

No

0.0.0.0

Bind address for the HTTP server (only used when MCP_TRANSPORT=http)

Usage

Run directly from GitHub

npx github:ferronicardoso/mcp-movidesk

Claude 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

local (default)

project-local, untracked

only you, only in this project

project

.mcp.json at the project root

anyone who clones the repo (commit it to share)

user

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-movidesk

PowerShell:

claude mcp add movidesk --scope user `
  --env MOVIDESK_TOKEN=your-token-here `
  -- npx -y github:ferronicardoso/mcp-movidesk

Codex CLI

Bash (Linux/macOS/WSL):

codex mcp add movidesk \
  --env MOVIDESK_TOKEN=your-token-here \
  npx -- -y github:ferronicardoso/mcp-movidesk

PowerShell:

codex mcp add movidesk `
  --env MOVIDESK_TOKEN=your-token-here `
  npx -- -y github:ferronicardoso/mcp-movidesk

This 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:latest

PowerShell:

docker run -d --name mcp-movidesk `
  -p 3003:3003 `
  -e MOVIDESK_TOKEN=your-token-here `
  ghcr.io/ferronicardoso/mcp-movidesk:latest

The 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 build

Start the compiled server:

MOVIDESK_TOKEN=your-token-here npm start

Build and Commit Workflow

This repository intentionally tracks dist/ to support npx github:user/repo usage.

The project uses a Husky pre-commit hook to:

  1. build TypeScript (npm run build)

  2. stage generated artifacts (git add dist)

Manual fallback:

npm run build
git add dist

Security Notes

  • Never commit the real token or .env files.

  • Use MOVIDESK_TOKEN via environment for continuous use; avoid --token outside 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 tools
create_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

    A3.9/5.0

    Scored across 10 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness3/5

    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

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Exposes 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
      -
    • A
      license
      A
      quality
      D
      maintenance
      Enables fetching and searching Freshdesk tickets, including details like conversations, attachments, and custom fields, via natural language queries.
      3
      242 npm
      1
      MIT