Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Evalsmith MCP

by diegoperezg7version 0.1.0i★ –iRuns on your computer
Registry nameio.github.diegoperezg7/evalsmith-mcp

Install

Overview

Description from the maker (original English)

Evaluate RAG retrieval, agent tool calls and prompt regressions with deterministic metrics.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Search & AI memory
  • You need to fill in: EVALSMITH_JUDGE_API_KEY

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • You fill in yourself: EVALSMITH_JUDGE_BASE_URL, EVALSMITH_JUDGE_MODEL, EVALSMITH_JUDGE_API_KEY, LOG_LEVEL

Values marked secret are keys to your account. Never share them or paste them into a chat.

You need

  • npmNode.js installed (for the npx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "evalsmith": {
      "command": "npx",
      "args": [
        "-y",
        "evalsmith-mcp"
      ],
      "env": {
        "EVALSMITH_JUDGE_BASE_URL": "your-value",
        "EVALSMITH_JUDGE_MODEL": "your-value",
        "EVALSMITH_JUDGE_API_KEY": "your-value",
        "LOG_LEVEL": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add evalsmith --env EVALSMITH_JUDGE_BASE_URL=your-value --env EVALSMITH_JUDGE_MODEL=your-value --env EVALSMITH_JUDGE_API_KEY=your-value --env LOG_LEVEL=your-value -- npx -y evalsmith-mcp

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "evalsmith": {
      "command": "npx",
      "args": [
        "-y",
        "evalsmith-mcp"
      ],
      "env": {
        "EVALSMITH_JUDGE_BASE_URL": "your-value",
        "EVALSMITH_JUDGE_MODEL": "your-value",
        "EVALSMITH_JUDGE_API_KEY": "your-value",
        "LOG_LEVEL": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "evalsmith": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "evalsmith-mcp"
      ],
      "env": {
        "EVALSMITH_JUDGE_BASE_URL": "your-value",
        "EVALSMITH_JUDGE_MODEL": "your-value",
        "EVALSMITH_JUDGE_API_KEY": "your-value",
        "LOG_LEVEL": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • EVALSMITH_JUDGE_BASE_URL env
    OpenAI-compatible endpoint for the optional LLM judge (default: Ollama on localhost)
  • EVALSMITH_JUDGE_MODEL env
    Model used by the optional LLM judge
  • EVALSMITH_JUDGE_API_KEY secret env
    API key for the judge endpoint, if it needs one
  • LOG_LEVEL env
    pino log level; logs go to stderr

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account diegoperezg7, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Search & AI memoryi

  • More stars than 0% of the other 5716 servers in this category
  • Published to the registry more recently than 77% of the other 5716 servers in this category
  • Basic checks equal to or better than 100% of the other 5716 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Evalsmith MCP safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

You need to fill in: EVALSMITH_JUDGE_API_KEY

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.1.0) reached the registry 11 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.

What can I use instead?

In the same category: Context7, Codebase Memory, Exa

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Context7

Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.

by upstashWidely used↓ 972.7K/wk★ 64.2KUpdated 2 days ago

Computer or cloud

Codebase Memory

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

by DeusDataWidely used↓ 18K/wk★ 48.1KUpdated 22 days ago

Runs on your computer

Exa

Connect AI agents to Exa for web search, content fetching, and multi-step research.

by exa-labsWidely used★ 5.2KUpdated 2 months ago

Runs in the cloud✓ exa.ai

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

evalsmith-mcp

Evaluate RAG retrieval and AI agents with deterministic metrics, from any MCP client or from CI.

evalsmith answers four questions that come up every time a retriever, prompt or agent changes:

  1. Is retrieval good enough? recall@k, precision@k, nDCG@k, hit rate and MRR from qrels and a ranked run.
  2. Which configuration is better, and is the gap real? 2-3 configurations ranked with seeded paired-bootstrap confidence intervals.
  3. Did the agent call the right tools? Trace vs. expected calls, strict or lax order, argument matchers.
  4. Did the prompt change break anything? Golden-set checks on baseline vs. candidate outputs.

Everything is deterministic and runs offline. An LLM judge exists for a second opinion, but it is off by default and never decides the verdict. Results come out as a terminal table, Markdown, JSON, JUnit XML or a self-contained HTML report, and the GitHub Action turns them into a merge gate.


Interfaces over the same core

flowchart LR

subgraph Clients A[MCP client desktop app, IDE, agent] B[Remote MCP client or service] C[Terminal / CI job] D[GitHub workflow] end subgraph evalsmith S1[MCP server stdio] S2[MCP server Streamable HTTP, stateless] S3[CLI evalsmith run] S4[GitHub Action uses: evalsmith-mcp@v0] CORE[(src/core metrics, bootstrap, matchers, checks, gates, reports)] end A --> S1 --> CORE B --> S2 --> CORE C --> S3 --> CORE D --> S4 --> CORE S3 -. exit code + JUnit + HTML .-> C S4 -. outputs + job summary .-> D

InterfaceEntry pointWho uses itWhy it exists
MCP over stdiodist/mcp/server.jsDesktop MCP clients, IDE assistants, local agentsAn assistant can score a run, compare configs or audit a trace mid-conversation, with typed structuredContent back.
MCP over Streamable HTTPEVALSMITH_TRANSPORT=httpRemote clients, internal platforms, the MCP InspectorSame tools over the network. Stateless: no sessions to store, scales horizontally.
CLI / CIevalsmith run evalsmith.yamlPipelines and terminals--fail-under recall@5=0.8 turns a metric into a merge gate. Exit codes, Markdown summary, JUnit XML, HTML report.
GitHub Actionuses: diegoperezg7/evalsmith-mcp@v0GitHub workflowsThe same gates as a step, with outputs, a job summary and no install.

All four call the same functions in src/core. The MCP tools are thin adapters: parse input with Zod, call the core, return structuredContent validated against an output schema.


MCP surface

flowchart TB

subgraph Tools T1[evaluate_retrieval] T2[compare_configs] T3[check_tool_calls] T4[detect_prompt_regression] T5[generate_report] T6[run_suite] end subgraph Resources R1["evalsmith://examples/{name} 12 synthetic datasets + suite"] end subgraph Prompts P1[compare_rag_configs] P2[audit_agent_trace] P3[review_prompt_change] end T1 -- structuredContent --> T5 T2 -- structuredContent --> T5 T3 -- structuredContent --> T5 T4 -- structuredContent --> T5 classDef tool fill:#ffedd5,stroke:#c2410c,color:#431407 classDef res fill:#e0f2fe,stroke:#0369a1,color:#082f49 classDef prom fill:#ede9fe,stroke:#6d28d9,color:#2e1065 class T1,T2,T3,T4,T5,T6 tool class R1 res class P1,P2,P3 prom

Tools

Every tool declares an input and an output Zod schema, returns structuredContent plus a JSON text block, and is annotated readOnly and non-destructive. Four tools are also idempotent and closed-world. detect_prompt_regression and run_suite are declared open-world and non-idempotent: annotations are per tool, and with the judge enabled they call an external model whose answers can vary. With the judge off (the default) they behave like the others.

ToolInputOutput
evaluate_retrievalqrels, run, optional k listMean recall/precision/nDCG/hit rate at every k, MRR, per-query values, skipped and missing queries
compare_configsqrels, 2-3 {name, run}, primary metric, bootstrap {samples, seed, confidence}Ranking with intervals, winner, runner-up, paired interval of the gap, significant
check_tool_callstrace as logged (evalsmith, Anthropic Messages, OpenAI Chat or Responses), expected, `order: strict \lax`passed, score, matched position and reasons per expected call, unexpected calls
detect_prompt_regressiongolden, baseline, candidate, optional judge {enabled}Verdict, pass rates, regressions, improvements, per-case failures, judge votes when enabled
generate_reportAny of the results above, gates, `format: markdown \json \junit`passed, rendered report
run_suiteOptional config path to an evalsmith.yaml, gates, judge, formatpassed, rendered report and every section's results, read from the suite's files

run_suite runs the same suites as evalsmith run, so a client can evaluate data that lives in files instead of pasting it into the conversation. It only reads inside the workspace root (EVALSMITH_ROOT, the directory the server started in by default), following symlinks before it checks, and runs the bundled example suite when no config is given.

Bad input (unknown metric, duplicate config names, qrels with no relevant documents) comes back as an InvalidParams tool error with a message the model can act on. A judge endpoint that is down or returns an HTTP error is an InternalError.

Resources

evalsmith://examples/{name} lists and serves the synthetic datasets in examples/datasets, so a client can try every tool before wiring in its own data:

NameContent
rag-corpus, rag-queries, rag-qrels20 help-center articles of a fictional invoicing app, 12 questions, graded judgements
rag-run-bm25, rag-run-hybrid, rag-run-hybrid-rerankTop-10 rankings from three retrieval configurations
agent-trace, agent-expectedA support agent refunding a duplicate charge, and the calls it should make
prompts-golden, prompts-baseline, prompts-candidate, prompts-candidate-regressedSix golden cases and three sets of outputs
suiteThe example evalsmith.yaml
Prompts
PromptArgumentWhat it asks the model to do
compare_rag_configsmetricCompare the configurations, report the gap with its interval and the weakest queries
audit_agent_traceorderCheck the trace and propose the smallest fix for each failed step
review_prompt_changecandidateDetect regressions, build a Markdown report, decide ship / do not ship
A conversation with an MCP client
sequenceDiagram

autonumber actor User participant Host as MCP client (LLM host) participant ES as evalsmith (stdio) participant Core as src/core

User->>Host: "Is the reranker worth it on our help-center set?" Host->>ES: initialize, tools/list, resources/list ES-->>Host: 6 tools + JSON Schemas, 13 resources Host->>ES: resources/read evalsmith://examples/rag-qrels (+ 3 runs) ES-->>Host: qrels and runs as JSON Host->>ES: tools/call compare_configs {metric: "ndcg@5", configs: [...]} ES->>Core: compareConfigs(qrels, configs, "ndcg@5", {seed: 42}) Core-->>ES: ranking, intervals, paired delta ES-->>Host: structuredContent {winner: "hybrid+rerank", significant: true, ...} Host->>ES: tools/call generate_report {format: "markdown", comparison} ES-->>Host: Markdown report Host-->>User: "Yes: +0.153 nDCG@5 over hybrid, 95% CI [0.069, 0.251]."


Metrics

For a query $q$ with relevant set $R_q$ (documents with grade $> 0$) an

Only the beginning is shown; read the rest in the repo

Ask PopNx