Install and authenticate

There are two ways to run the MIOSA MCP server. Both hit the same MIOSA REST API. The only difference is whether the JSON-RPC bridge runs in MIOSA’s infrastructure (hosted) or on your machine (stdio).

No install. Point any MCP client at the public endpoint with your key as a Bearer token.

https://api.miosa.ai/api/v1/mcp
claude mcp add --transport http miosa 
  https://api.miosa.ai/api/v1/mcp 
  --header "Authorization: Bearer msk_u_your_key_here"

See the overview for the config file form for Claude Code, Codex, Cursor and Claude Desktop.

Local stdio

Use stdio when you need to wrap the MCP layer with custom local logic, or your client does not support remote MCP.

pip install miosa-mcp

Requires Python 3.10 or newer. Package version 0.4.3.

Add to ~/.claude/mcp.json:

{
  "mcpServers": {
    "miosa": {
      "command": "python",
      "args": ["-m", "miosa_mcp"],
      "env": {
        "MIOSA_API_KEY": "msk_u_your_key_here",
        "MIOSA_TENANT": "optional-organization-slug"
      }
    }
  }
}

Connect OSA

OSA is MIOSA’s open-source agent. It runs on your machine or on a MIOSA computer, and works with your Claude or ChatGPT subscription. It reads MCP servers from ~/.osa/mcp.json, so the hosted endpoint is a url plus an Authorization header there. The full setup, including the /mcp add command, is in the overview.

{
  "mcpServers": {
    "miosa": {
      "url": "https://api.miosa.ai/api/v1/mcp",
      "headers": { "Authorization": "Bearer msk_u_your_key_here" }
    }
  }
}

Connect Hermes

Hermes Agent reads mcp_servers from ~/.hermes/config.yaml and resolves ${MIOSA_API_KEY} from ~/.hermes/.env. See the overview for the block.

Install or serve from the CLI

The miosa CLI can configure or run the MCP server for you, so you do not have to edit a client config by hand.

miosa mcp install                                  # Claude Code, user scope
miosa mcp install --client cursor                  # Cursor
miosa mcp install --client gemini                  # Gemini CLI
miosa mcp install --client claude --scope project  # a shared .mcp.json
miosa mcp install --print                          # show the change, write nothing

miosa mcp install does not write OSA or Hermes config; use the two sections above for those. It writes the hosted endpoint and your API key into the client’s config file, keeping the other servers it already lists. It takes --client (claude, cursor, gemini or manual), --name (default miosa), --scope (user or project, for Claude), --url, --force and --print.

For clients that need a stdio server, run the bridge over standard input:

miosa mcp serve

miosa mcp serve reads newline-delimited JSON-RPC 2.0 messages, forwards each to MIOSA MCP, and writes one JSON line per response. Point a client at it with:

{
  "mcpServers": {
    "miosa": {"command": "miosa", "args": ["mcp", "serve"]}
  }
}

List the tools the server exposes:

miosa mcp tools

miosa mcp serve and miosa mcp tools both take --url (default: the API base URL plus /mcp). The Python package also exposes a miosa-mcp entry point for the same stdio role.

See Advanced MCP setup for the per-client configuration matrix, the environment variable reference (local server only), and troubleshooting.

Get a key

Create a user API key at miosa.ai/dashboard/api-keys. It looks like msk_u_<hex>. Treat it like a password.

From the CLI:

miosa api-key create mcp-key --preset agent
miosa api-key create mcp-key --preset agent --quiet-key   # print only the secret

Organization context

MIOSA_TENANT selects an initial organization for every MCP request. You can also change organization context during a session with the organization_switch tool. The backend verifies membership before MCP updates its active context.

organization_list()                       # organizations available to you
organization_current()                    # the organization in use
organization_switch(organization="acme")  # switch by UUID or slug

Verify

claude mcp list

You should see miosa with a connected status. If a call returns 401, the key is invalid, expired or revoked. A 429 means you hit the plan’s rate limit (same limit as the REST API; the window is per minute).

You can also list the catalogue over the wire:

curl -sS -X POST https://api.miosa.ai/api/v1/mcp 
  -H "Content-Type: application/json" 
  -H "Authorization: Bearer msk_u_your_key_here" 
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | jq .
Was this page helpful?