Skip to main content
Glama
@omnidim-ai/mcp-server

@omnidim-ai/mcp-server

by Omnidim
README.md
# @omnidim-ai/mcp-server

Local stdio Model Context Protocol server for [OmniDimension](https://omnidim.io). Drive voice agents, dispatch calls, and manage knowledge bases from Claude, Cursor, Windsurf, or any MCP-compatible client.

Looking for the hosted OAuth variant? Use [`https://mcp.omnidim.io/mcp`](https://docs.omnidim.io/docs/mcp) instead. The hosted server is the recommended path for Claude Desktop, Claude.ai, and any client that supports HTTP MCP.

## Quick start

```bash
npx -y @omnidim-ai/mcp-server setup
```

Reuses a saved API key from `~/.config/omnidim/credentials` if one exists, otherwise prompts for a new one and validates it. Then installs the server in any detected MCP client (Claude Code, Claude Desktop, Cursor, Windsurf). Get an API key at [omnidim.io/api-management](https://omnidim.io/api-management).

## Manual install

### Claude Code

```bash
claude mcp add omnidim -- npx -y @omnidim-ai/mcp-server
```

### Claude Desktop, Cursor, Windsurf

Add this block to your MCP client config:

```json
{
  "mcpServers": {
    "omnidim": {
      "command": "npx",
      "args": ["-y", "@omnidim-ai/mcp-server"],
      "env": {
        "OMNIDIM_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

Get your API key from [omnidim.io/api-management](https://omnidim.io/api-management).

**Config file locations:**

| Client | Path |
|---|---|
| Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
| Cursor | `~/.cursor/mcp.json` |
| Windsurf | `~/.codeium/windsurf/mcp_config.json` |

## Tools

| Surface | Tools |
|---|---|
| Agents | create, update, list, get, delete |
| Calls | dispatch, list logs, get log |
| Bulk calls | create, fetch, get, actions, cancel, live status |
| Knowledge base | list, upload, attach, detach, delete |
| Phone numbers | list, attach, detach, import (Twilio, Exotel, SIP) |
| Providers | list LLMs, list voices, list STT, list TTS |
| Reseller | child orgs, users, credits (reseller accounts only) |

Full API reference: [docs.omnidim.io](https://docs.omnidim.io).

## Local development

```bash
git clone https://github.com/Omnidim/omnidim-mcp-server
cd omnidim-mcp-server
npm install
npm run build
OMNIDIM_API_KEY=sk_... npm start
```

Inspect tools and call them interactively:

```bash
OMNIDIM_API_KEY=sk_... npx @modelcontextprotocol/inspector node build/index.js
```

## Telemetry

Anonymous usage data is sent to help us improve the package: package version, Node version, OS family, install count, session boots, tool names, and setup or crash outcomes as short error *categories* (e.g. `config_write_error`, `http_500`). **No API keys, no tool inputs/outputs, no error messages, no file paths, no personal info.**

Disable with:

```bash
npx -y @omnidim-ai/mcp-server telemetry disable
```

Full field-by-field breakdown and other opt-out options in [TELEMETRY.md](./TELEMETRY.md).

## Troubleshooting

Run the diagnostics command to see versions, detected clients, backend reachability, and recent errors:

```bash
npx -y @omnidim-ai/mcp-server doctor
```

It never prints your API key. A local log of errors is kept at `~/.config/omnidim/logs/mcp.log` (stays on your machine, never sent).

## Reporting issues

See [ISSUES.md](./ISSUES.md) for how to file bug reports, request features, or get help. Paste the `doctor` output into your report.

## License

[MIT](./LICENSE)

TDQS

A3.5/5.0

Scored across 80 tools

Disambiguation4/5

Most tools map cleanly to a single resource+action across well-separated domains (agents, calls, bulk calls, workflows, phone numbers, voice cloning), and descriptions explicitly disambiguate near-pairs like getWorkflow vs showWorkflow and createBulkCall vs startBulkCall. A few boundaries remain fuzzy: listAllProviders overlaps with listVoices/listLLMProviders/listSTTProviders/listTTSProviders, bulkCallActions (pause/resume/reschedule) sits ambiguously next to cancelBulkCall and startBulkCall, and addBulkCallContact vs addBulkCallContacts differ only by batch semantics.

Naming Consistency4/5

Every name is camelCase verb_noun, so the surface is highly predictable overall. Deviations are minor but real: fetchBulkCalls breaks the list_* convention used everywhere else, bulkCallActions is a vague noun-first catch-all rather than a specific verb, and a handful of non-CRUD verbs (showWorkflow, canUploadFile, diffAgentVersion, dispatchCall) sit outside the dominant create/get/list/update/delete family.

Tool Count2/5

80 tools is far past a comfortable agent-facing surface; even though the platform genuinely spans ten resource families, an agent must select among 80 similarly named endpoints per turn. Several clusters (bulk-call numbers/contacts/status/control, workflow node-type introspection in three separate tools) could be consolidated, and discoverability cost is high.

Completeness4/5

Coverage is strong where it matters: agents have full CRUD plus version history and per-action post-call management, workflows have a complete draft-validate-publish-activate-test lifecycle, and bulk calls, phone numbers, voice cloning and knowledge base all have lifecycle tools. Minor gaps remain: integrations expose only listIntegrations (no create/update/delete despite descriptions referencing creation), and sessions offer only createSession with no read/list counterpart.

Maintenance

ActivityActive
ResponsivenessLimited data