--pack takes any pack name; --name overrides the server name, which defaults to the pack’s. Every flag is listed under python -m charter.mcp.
Schemas are sent on demand. MCP is the surface where that costs nothing: the server holds a ToolSession, tools/list reports what is currently loaded, and a load emits notifications/tools/list_changed so your client re-lists on its own. Gmail’s 23 tools arrive as a single ToolSearch whose description lists them by name; each one appears as it is used. Pass --no-progressive for a client that ignores the notification.
Add it to your client
The server speaks stdio, so a client runs it as a command rather than connecting to a URL. Put the credential in the environment, not in a config file you commit.Credentials
The entry point reads them from the environment — the same environment fallbacks every pack honours.
Shopify needs both variables, since the host is a property of the store.
A raw access token expires in about an hour. For a server that stays up, configure the pack with an OAuth client in your own process rather than using the environment entry point.
What the client sees
The tools a pack exports, with the schema the model is allowed to see — not the full API surface. A field markedMode("response_only") is absent from the tool definition the MCP client receives, because the LLM view is computed before anything is serialised. The boundary is the same one every other caller crosses.
Related
python -m charter.mcp— the flags, the client configuration, and using it as a function- Environment fallbacks — the variable each pack reads
Mode— what the client is not shown, and why