Configuration¶
Everything is optional over stdio. Environment variables use the prefix SNAIL_MCP_AFTEREFFECTS_, with __ between a section and a
field. The same keys go into a settings file, under a Snail section, which is read first, and the variables win over it setting by
setting. The chain is Snail.Sdk's, the same for every Snail server. A file named in SNAIL_MCP_AFTEREFFECTS_CONFIG (a leading ~/
expanded) is the only one read, and when it does not exist no file is. Without that variable only the first file that exists is read:
.s3l-mcp-aftereffects.json and s3l-mcp-aftereffects.json in the working directory, ~/.config/s3l-mcp-aftereffects/config.json,
~/.s3l-mcp-aftereffects.json. The names from before the rename are not read.
A token — HTTP__TOKEN, BRIDGE__TOKEN — belongs in ~/.config/s3l-mcp-aftereffects/config.json, readable by you alone
(chmod 600), never in a launchd job or a client's registration, which travel wherever they are copied:
{
"Snail": {
"Http": { "Token": "<a long random secret>" }
}
}
| Variable | Default | Meaning |
|---|---|---|
SNAIL_MCP_AFTEREFFECTS_DATA_DIRECTORY |
~/.s3l-mcp-aftereffects |
The server's own files: the bridge token, the announcements the bridge reads, captures and renders when there is no project, the farm's logs, the client keys |
SNAIL_MCP_AFTEREFFECTS_PROJECT_DIRECTORY |
the folder the client starts the server in | Where captures and renders land when nobody names a place, and the files area over HTTP. The home folder and the root count as no project; a server over HTTP ignores it |
SNAIL_MCP_AFTEREFFECTS_SCRIPTING |
Allow |
Off refuses ae_script and the script command inside run_tools and run_program |
SNAIL_MCP_AFTEREFFECTS_SKILL_IDLE_MINUTES |
0 |
Unload a skill unused for this many minutes; 0 keeps skills loaded, which suits clients that cache the tool list. The farm skill stays while a job of the client runs |
SNAIL_MCP_AFTEREFFECTS_IDLE_TIMEOUT_MINUTES |
0 |
Over stdio: exit after this long without a tool call; 0 disables it, since a client that ends closes the pipe and the server exits with it |
SNAIL_MCP_AFTEREFFECTS_FARM_PARALLEL |
1 |
How many aerender renders the farm runs at once, 1 to 16 |
SNAIL_MCP_AFTEREFFECTS_WORKERS__MAX |
2 |
Most After Effects workers the server keeps alive at once, 0 to 16; 0 switches launching off — Workers |
SNAIL_MCP_AFTEREFFECTS_WORKERS__MIN |
0 |
Workers kept running at all times; 0 launches them only when a client leases one |
SNAIL_MCP_AFTEREFFECTS_WORKERS__IDLE_MINUTES |
15 |
Minutes a worker may sit without a command before it quits on its own; 0 keeps workers alive |
SNAIL_MCP_AFTEREFFECTS_WORKERS__STARTUP_SECONDS |
120 |
How long a launched After Effects has to connect its bridge before it counts as failed |
SNAIL_MCP_AFTEREFFECTS_WORKERS__HEADLESS |
false |
Start workers without the interface; After Effects honours it on Windows only |
SNAIL_MCP_AFTEREFFECTS_WORKERS__EXECUTABLE |
the newest installed | The After Effects binary to launch, when it is not where the server looks |
SNAIL_MCP_AFTEREFFECTS_AGENT |
— | The name this server signs its commands with; over HTTP a client's key names it instead |
SNAIL_MCP_AFTEREFFECTS_BRIDGE__PORT |
0 |
The port the bridge dials; 0 takes a free one, which the announcement names |
SNAIL_MCP_AFTEREFFECTS_BRIDGE__HOST |
127.0.0.1 |
The address written into the announcement for the bridge to dial; the server's service name when After Effects runs in another container |
SNAIL_MCP_AFTEREFFECTS_BRIDGE__LISTEN |
— | The address the listener binds; empty binds the loopback for a loopback host and every interface otherwise |
SNAIL_MCP_AFTEREFFECTS_BRIDGE__REQUEST_TIMEOUT_SECONDS |
30 |
One reply; captures, renders, imports and scripts pass their own |
SNAIL_MCP_AFTEREFFECTS_BRIDGE__TOKEN |
— | The secret the bridge presents; empty reads the one the first server minted into <data>/state/token |
SNAIL_MCP_AFTEREFFECTS_BRIDGE__TOKEN_FILE |
<data>/state/token |
Where that token lives when it is kept elsewhere |
SNAIL_MCP_AFTEREFFECTS_TRANSPORT |
Stdio |
Http runs the server on its own beside After Effects — Over HTTP |
SNAIL_MCP_AFTEREFFECTS_HTTP__URL |
http://127.0.0.1:8080 |
Over HTTP: where to listen; a container listens on http://0.0.0.0:8080 |
SNAIL_MCP_AFTEREFFECTS_HTTP__TOKEN |
— | The operator's key, every scope; required over HTTP unless HTTP__TOKEN_FILE holds one |
SNAIL_MCP_AFTEREFFECTS_HTTP__TOKEN_FILE |
— | A file holding that key, the way a container receives a secret |
SNAIL_MCP_AFTEREFFECTS_HTTP__PUBLIC_URL |
HTTP__URL |
The address behind a reverse proxy, which signed links are built on; an https address marks the session cookie Secure |
SNAIL_MCP_AFTEREFFECTS_HTTP__LINK_MINUTES |
15 |
How long a signed link to a file works, 1 to 1440 |
SNAIL_MCP_AFTEREFFECTS_HTTP__UPLOAD_PART_MB |
16 |
Megabytes an upload sends in one request, which a reverse proxy must read within its own body timeout |