Skip to main content
Glama
raman325

omni-tools-mcp

by raman325
README.md
# omni-tools-mcp

An [MCP](https://modelcontextprotocol.io) server that exposes [omni-tools](https://github.com/iib0011/omni-tools)' tool logic to AI agents — **83 tools** across string, JSON, CSV, list, time, number, and XML categories.

There is no hand-written tool code here. omni-tools keeps each tool's pure logic in a `service.ts` separate from its React UI, so this project **auto-generates its entire tool registry from the omni-tools source** using [ts-morph](https://ts-morph.com):

- entry functions are discovered from each tool's own `index.tsx` imports of `./service`
- parameter types are compiled to zod schemas (primitives, literal-union enums, arrays, options objects)
- tool names/descriptions come from `meta.ts` i18n keys resolved against `public/locales/en/*.json`
- browser/wasm-bound tools (ffmpeg, canvas, pdf renderers) are skipped with reasons — see `src/generated/report.json` after a build

Point it at a newer omni-tools checkout and re-run `npm run generate` to pick up new upstream tools with zero code changes.

## Usage

### stdio (Claude Desktop, Claude Code, most MCP clients)

```jsonc
{
  "mcpServers": {
    "omni-tools": {
      "command": "node",
      "args": ["/path/to/omni-tools-mcp/dist/index.js"]
    }
  }
}
```

### Streamable HTTP

```bash
PORT=3000 node dist/http.js
# MCP endpoint: http://localhost:3000/mcp   health: /health
```

## Building

```bash
git clone https://github.com/iib0011/omni-tools          # sibling checkout (or set OMNI_TOOLS_ROOT)
git clone <this repo> omni-tools-mcp && cd omni-tools-mcp
npm install
npm run build        # generate registry from omni-tools source + bundle
node scripts/smoke-test.mjs
```

The build bundles the extracted services into `dist/` — the runtime needs no omni-tools checkout and no `node_modules`.

## What's included / excluded

| Included (83) | Excluded (~26) |
|---|---|
| string (28), csv (11), list (11), time (11), json (9), number (6), xml (2), misc | audio/video (ffmpeg.wasm), image/pdf converters (canvas, pdf.js workers), File-based tools |

Excluded tools depend on browser/wasm APIs that don't exist in Node. They could be added later by shelling out to native ffmpeg/ghostscript — contributions welcome.

## License

MIT — same as omni-tools, whose extracted service code is bundled into `dist/`. All tool logic copyright the [omni-tools contributors](https://github.com/iib0011/omni-tools).