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).
- 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 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
| 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 |
- Node.js 18+
- Movidesk API token (generated in the Movidesk admin panel: Settings → Workspace → API Token)
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) |
npx github:ferronicardoso/mcp-movideskclaude 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-movideskPowerShell:
claude mcp add movidesk --scope user `
--env MOVIDESK_TOKEN=your-token-here `
-- npx -y github:ferronicardoso/mcp-movideskBash (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.
%APPDATA%\\Claude\\claude_desktop_config.json:
{
"mcpServers": {
"movidesk": {
"command": "npx",
"args": ["github:ferronicardoso/mcp-movidesk"],
"env": {
"MOVIDESK_TOKEN": "your-token-here"
}
}
}
}.vscode/mcp.json:
{
"servers": {
"movidesk": {
"command": "npx",
"args": ["github:ferronicardoso/mcp-movidesk"],
"env": {
"MOVIDESK_TOKEN": "your-token-here"
}
}
}
}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.
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 startThis 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 dist- 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.
MIT © Raphael Augusto Ferroni Cardoso