hubris-mcp
# Hubris MCP
[](https://smithery.ai/servers/hubris/hubris-mcp) [](https://www.npmjs.com/package/hubris-mcp) [](https://mcprush.com/to/hubris-mcp?ref=badge)
[Model Context Protocol](https://modelcontextprotocol.io) server for [Hubris](https://hubris.pw) — an OpenAI-compatible LLM gateway with billing in rubles. Connect Claude Desktop, Claude Code, Cline, Cursor or any other MCP client to a single hosted server and get access to the model catalog, account balance and spending, and every kind of model in it: text, embeddings, rerankers, decision models, images, speech, transcription, video and YouTube transcripts.
There are two ways in: connect your client straight to the hosted endpoint, or run the stdio server in this repository, which declares the same tools locally and forwards calls to that endpoint. The second is what you want for clients that speak stdio only, and for sandboxes that build from a Dockerfile.
Listing the tools needs no credential; only calling one does. With `HUBRIS_API_KEY` set, the stdio server takes the tool list live from the hosted endpoint, so it never lags behind new tools; without a key it serves the list bundled with the package.
- **Endpoint:** `https://api.hubris.pw/mcp`
- **Transport:** Streamable HTTP
- **Auth:** Bearer API key (`sk-gw-...`, create one at [hubris.pw/keys](https://hubris.pw/keys))
- **Full docs:** [hubris.pw/docs/integrations/mcp](https://hubris.pw/docs/integrations/mcp)
## Tools
| Tool | Description |
| --- | --- |
| `models_list` | Full catalog of active models, cursor-paginated. |
| `models_search` | Filter by the tool that runs the model (`tool`), capability, price, context length. |
| `models_get_pricing` | Pricing for a specific model, in rubles; voices for speech models, durations and resolutions for video models. |
| `balance_get` | Current account balance. |
| `usage_get` | Spending over a period: requests, tokens, rubles. |
| `chat_complete` | LLM chat request — same as `POST /v1/chat/completions`. |
| `embeddings_create` | Embedding vectors — `POST /v1/embeddings`. |
| `rerank` | Order documents by relevance to a query — `POST /v1/rerank`. |
| `decisions_ask` | Yes/no, choice and scale answers with probabilities — `POST /v1/decisions`. |
| `image_generate` | Draw an image, returned as image content — `POST /v1/images/generations`. |
| `speech_create` | Text to speech, returned as audio content — `POST /v1/audio/speech`. |
| `transcription_create` | Speech to text from base64 audio — `POST /v1/audio/transcriptions`. |
| `video_create` | Start a video generation — `POST /v1/videos`. |
| `video_get` | Status of a video task; download links once it is ready — `GET /v1/videos/{id}`. |
| `youtube_transcribe` | Transcript or summary of a YouTube video — `POST /v1/video/transcriptions`. |
## Resources
| URI | Content |
| --- | --- |
| `hubris://catalog/models` | Full model catalog as a single JSON document. |
| `hubris://docs/quickstart` | Quickstart page. |
| `hubris://videos/{id}/content` | A finished video, linked from `video_get` (hosted endpoint only). |
## Prompts
- `compare-models {task}` — ready-made prompt for comparing models for a given task.
## Run locally (stdio)
```bash
npm install && npm run build
HUBRIS_API_KEY=sk-gw-... node dist/index.js
```
Or with Docker:
```bash
docker build -t hubris-mcp .
docker run -i --rm -e HUBRIS_API_KEY=sk-gw-... hubris-mcp
```
In an MCP client config:
```json
{
"mcpServers": {
"hubris": {
"command": "node",
"args": ["/path/to/hubris-mcp/dist/index.js"],
"env": { "HUBRIS_API_KEY": "sk-gw-..." }
}
}
}
```
`HUBRIS_MCP_URL` overrides the endpoint if you need to point it elsewhere.
## Connect
### Claude Code
```bash
claude mcp add --transport http hubris https://api.hubris.pw/mcp \
--header "Authorization: Bearer sk-gw-..."
```
### Claude Desktop
Claude Desktop only speaks stdio, so remote HTTP servers go through the [`mcp-remote`](https://github.com/geelen/mcp-remote) shim. Add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"hubris": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.hubris.pw/mcp",
"--transport",
"http-only",
"--header",
"Authorization:${AUTH_TOKEN}"
],
"env": {
"AUTH_TOKEN": "Bearer sk-gw-..."
}
}
}
}
```
### Cline / Cursor / other clients
Any MCP client with Streamable HTTP transport support:
| Field | Value |
| --- | --- |
| Transport | Streamable HTTP |
| URL | `https://api.hubris.pw/mcp` |
| Auth header | `Authorization: Bearer sk-gw-...` |
Full connection guide (with client-specific caveats): [hubris.pw/docs/integrations/mcp](https://hubris.pw/docs/integrations/mcp).
## Security
The Bearer key grants access to your account balance. We recommend creating a dedicated key for MCP at [hubris.pw/keys](https://hubris.pw/keys) so it can be revoked independently of other integrations.
## About Hubris
Hubris is an OpenAI-compatible LLM gateway for the Russian market — one API key, one ruble-denominated balance, 400+ models. [hubris.pw](https://hubris.pw)
TDQS
Scored across 5 tools
The only potential overlap is models_search vs models_list, but descriptions clearly separate filtered search from full paginated listing. models_get_pricing, balance_get, and chat_complete each map to distinct operations.
Three tools share a models_ prefix, but balance_get and chat_complete break the pattern, and models_get_pricing mixes verb placement. The names are readable but not fully consistent.
Five tools is well within the ideal 3–15 range and each tool earns a place for the catalog, pricing, balance, and chat workflow.
The set covers model discovery, pricing, balance checking, and chat completion, which are the core capabilities implied by the server. A dedicated single-model lookup would round it out, but search/list already cover retrieval.