Open source · MIT

Evaluate how LLM agents actually use your MCP server

You built an MCP server, but you can only guess how agents actually use it. bitmcp-eval runs your prompts through a real agent, records the traffic through a proxy, and compares the tool calls it sees with the ones you expected.

Node ≥ 20  ·  agents: claude, codex  ·  zero server changes
bitmcp-eval · demo run done · 100%
running 3 test cases × 2 iterations · agent: claude
current weather lookup→ get_current_weather 2/2
compare two forecasts→ get_forecast 2/2
list supported cities→ list_supported_cities 2/2
3 test cases · 6 iterations · 6 passed · 0 failed · 100%

How it works

bitmcp-eval starts a proxy in front of your server and points the agent at it. Every message is forwarded byte-for-byte while a copy records each tool call.

01

Your prompts

YAML test cases naming the tools you expect the agent to call.

02

The agent

claude or codex, run headlessly, once per iteration.

03

Recording proxy

Forwards MCP traffic and records every tools/call.

04

Validate

Recorded calls checked against expectations → live TUI + report.

The proxy works on the transport layer (MCP StreamableHTTP), so your server needs no changes at all. It can run locally or remote, and the proxy takes care of auth headers and OAuth.

Quickstart

Install the CLI from npm to evaluate your own MCP server, or clone the repo to try it against the bundled demo weather server first.

# install the CLI from npm
npm install -g @bitmcp-eval/cli
bitmcp-eval -c your-eval.yaml

# or run it once, without installing
npx @bitmcp-eval/cli -c your-eval.yaml

Want to see it work first? Clone the repo and run the two-minute demo against the bundled weather server:

# install & build the monorepo
corepack enable
yarn install
yarn build

# terminal 1: demo MCP server on :3210
yarn demo-server

# terminal 2: run the evaluation
yarn start -c examples/eval.yaml

Every test case gets a pass rate

 current weather lookup  2/2 passed
 compare two forecasts   2/2 passed
 list supported cities   2/2 passed

3 test cases · 6 iterations
6 passed · 0 failed · 100%

Then point mcp.url at your own server and write your test cases. Full setup in the README.

What's in the box

What you get out of a run, and what the harness handles for you.

Recording proxy

Records every tools/call with name, arguments, result, error state and duration. The server under test stays unchanged.

claude & codex

Run one agent or both. The suite executes once per agent and the report shows pass rates for each.

Iterations & spread

Agents are non-deterministic, so each test case runs several times and the report shows how much the behavior varies.

OAuth support

When the server responds with a 401, the proxy runs the auth-code + PKCE flow, caches the token and refreshes it during long runs. Servers with dynamic client registration need no config.

Optional LLM judge

An LLM reviews each iteration and adds a second, semantic verdict. Works with any OpenAI-compatible endpoint, and the report highlights iterations where it disagrees with the tool-call result.

Live TUI & HTML report

Watch runs live, then share a self-contained report with each iteration's tool calls and full conversation.

Put your MCP server under test

Point it at your server, write a handful of test cases, and see how agents actually use your tools.