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).