Prompt evals over MCP: run a prompt on your dataset, score each output 1-5 with an LLM judge.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Your prompts need tests too.
Run every prompt against real data. Score each output with an LLM judge against criteria you define. Change anything: the prompt, the model, the temperature, the dataset. Re-run and see exactly what got better and what broke. When the scores tell you something's off, CompletionKit suggests an improved prompt based on the judge's actual feedback on your runs. You inspect the diff, apply it as a new version, and verify the improvement.
It's the difference between "this prompt seems to work" and "this prompt scores 4.3 out of 5 across 200 inputs, up from 3.8 last version."
Start on completionkit.com β | RubyGems
Just want to use it? CompletionKit Cloud is the same engine, fully hosted β zero install, no Rails ops, plans at completionkit.com/pricing.

Same engine, same UI, same REST API and MCP server β pick the deployment that fits. The first two are stack-agnostic: you run CompletionKit as a product and talk to it over HTTP and MCP, whatever language your own app is written in. The third is for teams already building on Rails.
The fastest path. Sign up and you're running on the same engine you'd self-host, without touching a Rails app. No db:migrate, no Puma, no Solid Queue, no provider key management β multi-tenant workspaces, your team logs in, you go. Plans at completionkit.com/pricing.
Run it on your own infra as a self-contained product. There's nothing to integrate and no Ruby to write β once it's up, you drive everything through the web UI, the REST API, and the MCP server, from whatever stack your own app is built in. It needs Postgres and a host that can run the app (Fly, Render, Heroku, Docker, β¦).
Run both a web server and a Solid Queue worker. In two terminals:
Or with foreman in one terminal: foreman start -f Procfile.dev.
Visit http://localhost:3000. Add a provider credential (Settings), create a prompt, upload a CSV dataset, and run it. See Deploying self-hosted for the production-env setup.
The engine mounts at /completion_kit. Generate / judge flows enqueue Active Job jobs (CompletionKit::GenerateRowJob, CompletionKit::JudgeReviewJob, CompletionKit::RunCompletionCheckJob), so your host app needs an Active Job adapter that actually processes them β Solid Queue, Sidekiq, GoodJob, etc. The :async adapter is not suitable for production: it runs jobs in the web Puma's thread pool with no durability and no retry, and a long LLM call will block request handling.
Host-app layout integration. If your host app overrides the engine layout (e.g. layout "application" on engine controllers, or rendering engine views inside your own shell), include both the engine's stylesheet and JavaScript in that layout:
Without the JavaScript include, in-page behaviours silently fail: live tag-breadcrumb updates, relative-time ticking, CSV row hover-expand, model-refresh progress, focus-first-error, and local-time formatting.
CompletionKit discovers available models from each provider's API automatically.
| Provider | Env vars | What it covers |
|---|---|---|
| OpenAI | OPENAI_API_KEY | GPT-5, GPT-4.1, GPT-4o, etc. |
| Anthropic | ANTHROPIC_API_KEY | Claude Opus, Sonnet, Haiku |
| Ollama / local endpoint | OLLAMA_API_ENDPOINT (default: http://localhost:11434/v1) | Any model you've ollama pull-ed, or any OpenAI-compatible local server (vLLM, LM Studio, llama.cpp) |
| OpenRouter | OPENROUTER_API_KEY | 100+ models from 30+ providers through one API key |
| Azure AI Foundry | No env var β add via the Providers UI / a ProviderCredential (api_key + api_endpoint required, api_version optional) | Azure OpenAI deployments and Foundry projects |
Set these as environment variables or configure them in the generated initializer. You can also add provider credentials through the web UI under Settings.
Provider API keys are encrypted at rest using Active Record encryption. You need three encryption keys configured before the app will boot in production.
Generate them:
Then set them as environment variables:
Or add them to config/credentials.yml.enc under active_record_encryption. In development, the standalone app uses built-in fallback values so you can skip this step locally.
CompletionKit requires authentication in any deployed environment. In development and test, routes are open by default (with a log warning); every other environment returns 403 until auth is configured.
Only one mode can be active.
The REST API, the MCP endpoint, and the web UI are rate limited per IP, per minute. The defaults are generous; tune them in the initializer:
Limiting uses Rails.cache. A shared cache store (Solid Cache, Redis) throttles accurately across multiple app instances; a per-process store still throttles each instance independently.
It's a loop. Each pass leaves you with a score you can compare against the last one.
{{variable}} placeholders{{variable}} placeholders. Editing a prompt that's already been run creates a new version, so earlier results stay reproducible.?tag[]=...).Every resource is accessible via a bearer-token JSON API:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/completionkit)<a href="https://allmcps.com/mcp/completionkit"><img src="https://allmcps.com/api/badge/completionkit?style=directory" alt="CompletionKit on AllMCPs" /></a>