drop-core-mcp is the same server as the hosted endpoint, run locally over stdio. It ships prebuilt in the Starter (vendor/mcp.mjs launcher) and as the bin of the drop-core-generative package.
Configuration#
Everything comes from environment variables:
| Variable | Meaning |
|---|---|
DROP_STORE |
The store id the server starts scoped to (required). |
DROP_ENV |
demo (default) or prod — the initial environment. |
DROP_ACCESS_TOKEN |
The token for the initial environment. |
DROP_ACCESS_TOKEN_DEMO / DROP_ACCESS_TOKEN_PROD |
Per-environment tokens; an environment is switchable only when its token is present. |
DROP_ALLOW_PROD |
Must be 1 before useStore may switch to Production. |
DROP_STORES |
Comma-separated allowlist of store ids useStore may target. |
DROP_API_BASE / DROP_STORAGE_BASE |
Explicit hosts (an emulator) for the initial environment only. |
GEMINI_KEY |
Enables the generateImage tool. |
DROP_IMAGE_MODEL |
Optional image model override: gemini-3.1-flash-lite-image (Nanobanana Lite, the default) or gemini-3-pro-image (Nanobanana Pro); any other value runs the default. |
Store locales are not configured — they are read from the store document at runtime.
The Starter's launcher (vendor/mcp.mjs) also takes DROP_PAT — a personal access token instead of a store token: with no DROP_ACCESS_TOKEN_* set, it exchanges the PAT at start for your own store token of DROP_STORE (and of Production too when DROP_ALLOW_PROD is set) and pins DROP_STORES to that store. DROP_CONSOLE_BASE overrides the console host it exchanges against (default https://inmake.dev). The bare drop-core-mcp bin does not read DROP_PAT.
Claude Code#
DROP_ENV=demo DROP_STORE=my-store DROP_ACCESS_TOKEN=<token> \
claude mcp add drop-core -- node vendor/mcp.mjsOr in .mcp.json (the Starter ships one preconfigured):
{
"mcpServers": {
"drop-core": {
"command": "node",
"args": ["vendor/mcp.mjs"],
"env": { "DROP_ENV": "demo", "DROP_STORE": "my-store", "DROP_ACCESS_TOKEN": "<token>" }
}
}
}Retargeting#
Unlike the hosted endpoint, the stdio bin offers useStore (move the active store/env for everything after it) and accepts optional store / env arguments on every tool — one call can read from a Demo store and the next write to a Production one, fenced by DROP_STORES and DROP_ALLOW_PROD. Every result echoes the env, store and tokenScope it actually ran on; a master token is warned about on stderr.