@omnidim-ai/mcp-server
# @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
Scored across 80 tools
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.
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.
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.
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.