Reported issues for evals-mcp-server
Pod holds 9 of 9 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to evals-mcp-server.
Most discussed
test(evals_revise_draft): mcq_choice_mismatch path not covered
`evals_revise_draft` declares `mcq_choice_mismatch` in its typed error contract (alongside `task_type_constraint`), and the handler calls the shared `assertTaskTypeConstraints` after each patch — so patching `grader.correct` to a value not in `choices[]` should fire `mcq_choice_mismatch`. There is no test that exercises this path.
Proposal
Add a test (or test case in `tests/authoring-loop.test.ts` or a new `tests/tools/revise-draft.tool.test.ts`) that:
- Creates an mcq d
Read the thread · 2026-06-28 · closed · 2 comments
ux(evals_get_record): description is meta-coaching — names the caller, not the action
The current evals_get_record description reads:
"Read a draft or submitted eval record by id. The verification subagent calls this to inspect a draft before re-deriving or looking up the gold. The id is stable across submit, so it resolves a record whether it is still a draft or already submitted."
The second sentence names a specific caller type ("verification subagent") and workflow step ("before re-deriving or looking up the gold") — that is meta-coaching, not a description of what the
Read the thread · 2026-06-25 · closed · 1 comment
feat(config): default EVALS_DATA_DIR to ./evals-data so bare npx invocations work
EVALS_DATA_DIR is required with no default — omitting it aborts startup with a config error. .env.example already lists ./evals-data as the natural value. A hardcoded default would let npx/bare invocations work without any env setup, lowering the barrier for first use.
Proposal
Apply ./evals-data as the fallback in src/config/server-config.ts when EVALS_DATA_DIR is unset. Keep the existing .min(1) guard — it rejects an empty string (EVALS_DATA_DIR=) with a clear validation
Read the thread · 2026-06-25 · closed · 1 comment
bug(evals_create_draft): mcq grader correct-not-in-choices fires task_type_constraint instead of mcq_choice_mismatch
Server version
0.1.0
Runtime
Bun
Transport
HTTP / stdio
Description
evals_create_draft fires reason: "task_type_constraint" when the mcq grader's correct value is not in choices[], but the error contract documents this case as reason: "mcq_choice_mismatch". evals_run_check correctly returns mcq_choice_mismatch for the same condition — the two tools are inconsistent.
Steps to reproduce
- Call
evals_create_draftwithtask_type: "mcq", `choices: ["P
Read the thread · 2026-06-25 · closed · 1 comment
bug(evals_revise_draft): unknown set path reports false success
Server version
0.1.2
mcp-ts-core version
0.12.3
Runtime
Bun
Runtime version
Bun 1.4.0
Transport
HTTP (Streamable HTTP)
Description
evals_revise_draft reports an unknown set path as successfully applied even though schema validation removes it from the stored record. The success response makes the mutation appear effective when it was a no-op.
Steps to reproduce
- Create a valid draft with
evals_create_draft. - Call
evals_revise_draftwith `{ "dr
Read the thread · 2026-08-22 · open · 0 comments
fix(config): pin MCP_SESSION_MODE to stateful — the image ships stateless and breaks the confirmation gate for v1 HTTP clients
Dockerfile sets ENV MCP_SESSION_MODE="stateless", but .env.example carries a commented # MCP_SESSION_MODE=stateful, whose comment documents the value set as stateful | stateless (default: stateful). The container and the same code run via bunx, npm start, or from source therefore resolve to different session modes.
For this server the container is the one that is wrong.
Related: cyanheads/mcp-ts-core#376
Proposal
Settle every surface on stateful, and change the `Dockerfile
Read the thread · 2026-08-22 · open · 0 comments
bug(evals_submit_draft): llm_rubric/free_response is never judged — ctx.sample does not exist, descriptions over-claim LLM grading
Server version
0.1.2
mcp-ts-core version
0.10.9
Runtime
Bun
Runtime version
Bun 1.3.x
Transport
stdio
Description
free_response / llm_rubric is documented across the surface as "judged via ctx.sample when the client supports sampling" — but no such grading ever happens, and ctx.sample does not exist.
evals_submit_draftcallsrunSubmitGate(..., { samplingAvailable: false })unconditionally and never inspects sampling availability.- `@cyanheads/mc
Read the thread · 2026-06-30 · open · 0 comments
bug(evals_create_draft): persists an orphan draft when the grader is unexecutable
Server version
0.1.2
mcp-ts-core version
0.10.9
Runtime
Bun
Runtime version
Bun 1.3.x
Transport
stdio
Description
evals_create_draft persists the draft to disk (store.writeDraft) before running the self-consistency check. checkSelfConsistency calls gradeCandidate, which throws grader_unexecutable for a malformed grader (non-evaluable math.js target, invalid regex, json_match with neither expected nor schema). The throw becomes the tool's err
Read the thread · 2026-06-30 · open · 0 comments
Most recent
bug(grader): numeric grader accepts complex/unit candidates by truncating at the first space
Server version
0.1.2
mcp-ts-core version
0.10.9
Runtime
Bun
Runtime version
Bun 1.3.x (logic bug — runtime-agnostic)
Transport
stdio
Description
The numeric grader coerces a math.js result to a plain number with Number(result.toString().replace(/\s.*$/, '')) (candidateToNumber and resolveNumber in src/services/grader/grader-service.ts). For any non-real result — a math.js Complex or Unit — toString() yields e.g. "2 + 3i"
Read the thread · 2026-06-30 · open · 0 comments
The remaining reports are on the project's issue tracker.