Skip to content

oh-my-mcp v0.1.0 — lint your MCP server before a model chokes on it

Latest

Choose a tag to compare

@didrod205 didrod205 released this 17 Jun 05:30
· 1 commit to main since this release

Everyone's shipping MCP servers — and the tool definitions are full of silent footguns the protocol won't catch: a name with a space that breaks function-calling, a description the model can't act on, an inputSchema that requireds a property it never defines, and the context-window budget your toolset eats on every single request.

oh-my-mcp grades them — from a tools/list JSON or by speaking the protocol to a live server.

npx oh-my-mcp --cmd "node server.js"      # spawn it, run initialize→tools/list, lint what it serves
npx oh-my-mcp --servers claude_desktop_config.json   # lint every server in your config
npx oh-my-mcp tools.json                  # or a tools/list JSON you already have
  B  get weather   83/100
    ✗ Name "get weather" has characters that break function-calling.  → Use only [a-zA-Z0-9_-].
  · Your 6 tool definitions cost ~157 tokens of context on every single request.
  30/100 (F)  4 errors · 4 warnings

What it checks

  • 🔴 Breaks tool-calling — bad/duplicate/over-long names, readOnly-vs-mutating hints
  • 🟡 Model can't use it — missing/one-word descriptions, params with no description
  • 🧩 Input schema — invalid JSON Schema, requiredproperties mismatch, missing types
  • 📉 Context budget — what your whole toolset costs the model every request
  • 🔌 Protocol (live) — missing serverInfo/protocolVersion, malformed tools/list

Per-tool + overall 0–100 score, console/MD/JSON, CI exit codes (--min-score). Pure browser-safe lint core, no API key, 13 tests incl. a real stdio handshake. MIT. Bins: oh-my-mcp, omm.