vremly
OfficialVremly MCP server
Gives an AI assistant access to the Vremly API over the Model Context Protocol — so it can look up your shoots, customers, media and invoices, and change them if you let it.
Full documentation: docs.vremly.com/guides/mcp
Install
Create an API key in the Vremly app under Settings → API Keys, then add this to your MCP host's config:
{
"mcpServers": {
"vremly": {
"command": "npx",
"args": ["-y", "github:RelayDigital/vremly-mcp"],
"env": {
"VREMLY_API_KEY": "your-api-key"
}
}
}
}For Claude Code, that goes in .mcp.json in your project, or run:
claude mcp add vremly --env VREMLY_API_KEY=your-api-key \
-- npx -y github:RelayDigital/vremly-mcpThere is nothing to clone or build — npx fetches the repo and compiles it on
first run.
Configuration
Variable | Default | Purpose |
| (required) | Your organization API key. |
|
| API base URL. |
| unset |
|
|
| Per-request timeout. |
| bundled | Point at a different OpenAPI document. |
Tools
Three, not one per endpoint:
Tool | Purpose |
| Find endpoints by keyword. |
| Parameters, required body fields, responses. |
| Call it, and return the status and body. |
The API has over a thousand operations. A tool per operation would cost more context to enumerate than most tasks cost to perform, and many hosts cap the tool count outright. Search → describe → request reaches all of them at a fixed cost, and because search reads the OpenAPI document directly there is no generated tool list to fall out of date.
Describing before calling is not ceremony: the API validates with
whitelist: true, so a body field it does not recognise is silently
dropped rather than rejected. A request built from a guessed field name
returns 201 having ignored the field.
Permissions
What the assistant may do is decided by the key and enforced server-side on every request — not by this process.
Scope | Grants |
|
|
| Everything |
| Everything |
| The bulk import endpoints only |
| Managing webhook subscriptions |
A key belongs to one organization and the server derives the organization from it, so the assistant can never reach another organization's data.
Give it a
READkey unless it needs to write. That guarantee holds even if the assistant is prompt-injected by something it reads.VREMLY_MCP_READ_ONLY=1is a convenience, not a security boundary — anything able to set that variable could also unset it.
Requests are rate limited per key: 3/second, 20/10 seconds, 100/minute.
Development
npm install
npm run build
npm run typecheckprepare runs build, which is what lets npx install this straight from
GitHub — dist/ is deliberately not committed.
This repository is a published mirror. The source of truth is
apps/mcp-server in the Vremly monorepo, and openapi.json is generated from
the backend rather than written by hand. Send changes there; edits made
directly here will be overwritten by the next sync.