Skip to content

drums-sdk 0.3.0

Latest

Choose a tag to compare

@sahiljagtap08 sahiljagtap08 released this 13 Nov 07:19
· 5 commits to main since this release

Install: pip install drums-sdk==0.3.0

The MCP server and the drums command. The hosted MCP endpoint on the gateway (<gateway URL>/mcp) is live already;
this release adds the local server and the client methods for the new gateway routes.

  • drums mcp (the same as python -m drums.mcp): a stdio MCP server with the 34 workspace and desktop tools of
    drums/mcp_tools.json, the list the gateway serves. --env <computer id> binds the desktop tools to one computer;
    --print-config claude|claude-local|cursor|codex prints the matching client snippet with a placeholder key.
    Destructive tools (destroy_computer, delete_snapshot, revoke_api_key) are refused unless the caller passes
    confirm: true in the tool arguments, before any request is sent; the MCP client, not Drums, owns the user's
    approval of such a call.
  • Token transport rule, in the Client and the CLI: a token is sent over https, or over plain http to loopback
    only (localhost, 127.0.0.0/8, ::1). Any other http:// URL (--url, DRUMS_URL) raises the new
    drums.InsecureTransport before any request (exit 2 with a one-line message from drums mcp); the message names
    the host and the opt-ins, never the token. Opt in with drums mcp --allow-insecure-http,
    DRUMS_ALLOW_INSECURE_HTTP=1, or connect(..., allow_insecure_http=True) / Client(..., allow_insecure_http=True).
    drums.check_transport(url, token, allow_insecure_http=None) is the check itself.
  • Redirect rule: the Client follows a redirect only to the same origin (scheme, host, port) as the request, at
    most drums.MAX_REDIRECTS (5) hops, and runs the transport check on every hop. A redirect to another origin
    (another host or port, https to http) or a sixth hop raises the new drums.RedirectRefused before it is
    followed, so the token is never re-sent elsewhere by way of a Location header (urllib's default follows and
    re-sends Authorization). The message names the target's scheme, host and port only. 308 is followed like
    307 on every supported Python.
  • drums console script (drums mcp, drums version); mcp_tools.json ships in the wheel.
  • Client.runs, create_run, run, api_keys, create_api_key, revoke_api_key, audit for the gateway's
    /v1/runs, /v1/api-keys and /v1/audit routes; call() takes extra headers.
  • The repository is a Claude Code plugin (.claude-plugin/plugin.json, .mcp.json, the drums-workflow skill).
  • drums.hybrid write_file sends chunks of 8000 base64 characters (the gateway caps a step argument at 8192);
    gui code is at most 16384 characters.