Skip to content
QuickMDSim

Authenticated MCP server

Run LAMMPS on QuickMDSim from Hermes, Claude, or Cursor. A personal access token is the whole auth story.

The MCP server speaks the same project → file → job → output loop as the app. It is authenticated. Unauthenticated calls get 401 and a WWW-Authenticate: Bearer header.

1. Create a token

  1. Open Account in the app.
  2. Under API tokens, name it (Hermes, Claude, laptop) and click Create token.
  3. Copy the qmd_… secret. It is shown once. Revoke it any time from the same page.

Email must be verified before jobs will run — same gate as the browser. Credits are the same pool.

2. Point the client at the server

Endpoint: https://quickmdsim-api.compoundhq.workers.dev/mcp
Header: Authorization: Bearer qmd_…

The app host also proxies the same handler at https://app.quickmdsim.com/api/mcp if a client prefers a first-party hostname.

Hermes

hermes mcp add quickmdsim --url https://quickmdsim-api.compoundhq.workers.dev/mcp

Then put the token in ~/.hermes/config.yaml:

mcp_servers:
  quickmdsim:
    url: https://quickmdsim-api.compoundhq.workers.dev/mcp
    headers:
      Authorization: "Bearer qmd_YOUR_TOKEN"
    timeout: 180

Restart Hermes (or /reload-mcp). Tools show up as mcp_quickmdsim_*. Smoke test: hermes mcp test quickmdsim.

Claude Desktop / Claude Code

In Claude Desktop settings → MCP, or in claude_desktop_config.json:

{
  "mcpServers": {
    "quickmdsim": {
      "url": "https://quickmdsim-api.compoundhq.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer qmd_YOUR_TOKEN"
      }
    }
  }
}

Claude Code: claude mcp add --transport http quickmdsim https://quickmdsim-api.compoundhq.workers.dev/mcp and add the same Authorization header in the generated config.

Cursor

In .cursor/mcp.json or Cursor Settings → MCP:

{
  "mcpServers": {
    "quickmdsim": {
      "url": "https://quickmdsim-api.compoundhq.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer qmd_YOUR_TOKEN"
      }
    }
  }
}

3. Usage loop

Ask the agent to do the work. A typical first job:

  1. whoami — confirm the account, credits, and that jobs can run
  2. create_project — name it
  3. write_file — put a real input.lammps (overwrite the stub). Add potential files the same way
  4. submit_job — optional vcpus of 1, 2, or 4 (Free is 1 only)
  5. get_job — poll until status_label is done or failed
  6. list_outputs then read_output for stdout.txt / the log

Binary outputs (movies, snapshots) stay in the app — MCP returns text logs and dump excerpts, not mp4/png bytes.

Tools

  • whoami — account, plan, credits, allowed cores
  • list_projects / create_project / get_project
  • list_files / read_file / write_file
  • list_jobs / submit_job / get_job
  • list_outputs / read_output

A token sees only that account. Revoking it takes effect on the next call. Treat qmd_… like a password — do not commit it.

If something fails

  • 401 — missing/revoked token, or the Bearer header did not arrive
  • Verify your email — same as the app; jobs stay blocked until the link is clicked
  • Insufficient credits — check whoami, then Account → Subscriptions
  • No LAMMPS input scriptdata.lammps is a topology file; write input.lammps that calls read_data
  • Upgrade to run on 2 or 4 cores — Free is 1 vCPU