vibe-prompt-mcp
vibe-prompt-mcp
Every vague prompt costs you 2–3 follow-up messages. This MCP fixes your prompt before it reaches the AI — so you get the right output on the first try.
vibe-prompt-mcp scores your prompt across 4 quality dimensions, rewrites the weak parts, and fills in what's missing. The AI gets a precise instruction. You get fewer iterations.
No API key. No account. No server to run. Works inside Claude Code, Cursor, Windsurf, Zed, and any stdio MCP client.
The problem it solves
You send a prompt. The AI produces something close but not quite right. You clarify. It tries again. You say "also add loading states." Another round. "Make it responsive." One more.
Three iterations to get what you could have specified upfront.
vibe-prompt-mcp catches the gaps before the prompt is sent — vague verbs, subjective language, missing acceptance criteria, absent style stack — and fixes them automatically. The AI gets one clear instruction instead of a guessing game.
Related MCP server: PromptArchitect MCP
See it in action
Example 1 — vague UI prompt
Before:
can you please improve the login page, it looks bad and i want it to feel more modernScore: 76/100 — 5 issues detected
After optimize_prompt:
please redesign the login page, it looks bad and i want it to use
Inter font, neutral color palette, 8px border radius, consistent
16px grid spacing. Done when: the page renders correctly on mobile
and desktop with no console errors. Use Tailwind CSS and shadcn/ui.Score: 78/100 — filler stripped, vague terms replaced, missing specs appended
Example 2 — feature request with missing specs
Before:
Add a notifications bell icon to the navbar that shows unread count
and a dropdown list of recent notifications with mark-as-read functionalityScore: 79/100 — 3 issues detected
After optimize_prompt:
Add a notifications bell icon to the navbar that shows unread count
and a dropdown list of recent notifications with mark-as-read
functionality. Done when: the list renders correctly on mobile and
desktop with no console errors. Use Tailwind CSS and shadcn/ui.
Include loading, error, and empty states.Score: 84/100 — acceptance criteria, style stack, and state requirements added
Without this, you'd have built the feature — then asked about loading states, then responsive layout, then the empty state. Three follow-ups eliminated upfront.
How it works
vibe-prompt-mcp runs entirely on your machine as a local Node.js process. It uses no AI, makes no API calls, and sends nothing to any external service.
Under the hood it's a rule engine — 18 rules across 4 dimensions — that analyzes the structure and language of your prompt, detects patterns that consistently cause poor AI output, and applies targeted fixes. Think of it as a linter for prompts.
What this means for you:
Zero AI cost for the optimization itself. The only tokens spent are ~130 for the tool call overhead (your message + Claude routing the request + the response).
Net savings come from avoiding re-iterations. Each back-and-forth cycle with the AI costs 500–1,000+ tokens. One optimized prompt that gets it right on the first try pays for itself immediately.
Runs offline. No network call is made during optimization.
This is the core difference from AI-based prompt improvers — those spend tokens to save tokens. This one doesn't.
Quick start
Step 1 — Add to your AI tool (pick your platform below)
Step 2 — Use it
Ask your AI in plain language:
optimize this prompt: [your prompt here]score this prompt: [your prompt here]optimize in verbose mode: [your prompt here]Step 3 — Send the result
Copy the rewritten prompt and use it as your actual instruction.
Add to your AI tool
Claude Code
Option A — project-level (recommended, checked into source control and shared with your team):
Create .mcp.json at your project root:
{
"mcpServers": {
"vibe-prompt-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "vibe-prompt-mcp"]
}
}
}Option B — global (available in every project on your machine):
claude mcp add vibe-prompt-mcp -s user -- npx -y vibe-prompt-mcpRestart Claude Code, then type /mcp to confirm vibe-prompt-mcp appears with both tools listed.
Cursor
Settings → MCP → Add new server:
Name:
vibe-prompt-mcpCommand:
npxArgs:
-y vibe-prompt-mcp
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"vibe-prompt-mcp": {
"command": "npx",
"args": ["-y", "vibe-prompt-mcp"]
}
}
}Zed
Add to .zed/settings.json:
{
"context_servers": {
"vibe-prompt-mcp": {
"command": {
"path": "npx",
"args": ["-y", "vibe-prompt-mcp"]
}
}
}
}Antigravity
Add to ~/.gemini/antigravity/mcp_config.json:
{
"mcpServers": {
"vibe-prompt-mcp": {
"command": "npx",
"args": ["-y", "vibe-prompt-mcp"]
}
}
}Lovable / Replit / Codex (HTTP)
These platforms require a deployed remote endpoint. The package ships an HTTP server:
node node_modules/vibe-prompt-mcp/dist/http.js
# Express on port 3000 (or $PORT) — MCP endpoint: POST /mcpDeploy to Railway or Render and point the platform's MCP URL to https://YOUR_HOST/mcp.
Scoring dimensions
Each dimension is worth 25 points. Total score: 0–100.
Dimension | What it evaluates |
Clarity | Vague action verbs, subjective descriptors, contradictory requirements, pronoun ambiguity |
Specificity | Acceptance criteria, style framework, error/loading/empty states, data shape definitions |
Completeness | Scope boundaries, responsive and accessibility constraints, tech stack, context references |
Efficiency | Filler language, meta-commentary, hedge phrases, duplicate context |
Severity:
🔴 Critical — high likelihood of wrong output
⚠ Warn — reduces quality or causes follow-up iterations
✦ Info — noise with no instructional value
Running locally from source
git clone https://github.com/saurabhjambure-pixel/vibe-prompt-mcp
cd vibe-prompt-mcp
npm install
npm run build # TypeScript → dist/
npm run dev # stdio server, hot reload
npm run start:http # HTTP server on port 3000To use your local build instead of npx:
{
"mcpServers": {
"vibe-prompt-mcp": {
"command": "node",
"args": ["/path/to/vibe-prompt-mcp/dist/index.js"]
}
}
}Contributing
Issues and PRs welcome. If you have a rule idea — a pattern you keep seeing that produces poor AI output — open an issue.
License
MIT
Available Tools
2 toolsoptimize_promptD
| Name | Required | Description | Default |
|---|---|---|---|
| raw_prompt | Yes | ||
| mode | No | compact | |
| projectRoot | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_promptD
| Name | Required | Description | Default |
|---|---|---|---|
| raw_prompt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.2- Added
optimize_prompt
1 tool update
v1.1.0- First observed
score_prompt
TDQS
Scored across 2 tools
The two tools, score_prompt and optimize_prompt, suggest distinct actions, though the lack of descriptions leaves some room for overlap. An agent could generally tell them apart by verb alone.
Both tool names follow the same lowercase snake_case verb_noun pattern: score_prompt and optimize_prompt. The naming is fully consistent.
With only two tools, the server feels minimal and near the thin end of the acceptable range. It could be sufficient for a narrowly scoped prompt-tuning server, but the purpose is unclear without descriptions.
The surface covers scoring and optimizing prompts but lacks obvious supporting operations such as generation, comparison, or iteration. The missing descriptions also make it hard to confirm that the intended workflow is fully covered.
Maintenance
Related MCP Connectors
Lints + auto-fixes how AI coding agents discover any new product. 24 rules, 6 tools, score 0-100.
PQS scores any prompt before the model runs. 8 dimensions. 5 frameworks. Pre-flight, not post-hoc.
Agentic code review, no signup to try: reality gates + frontier-model review, with veto.
Live React design-system APIs, patterns, and code validation so AI agents build real UI, not slop.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA code ingestion tool that transforms your code into AI-optimized prompts instantly. Gather the relevant context with code2prompt under the hood. Learn more at code2prompt.dev7,653MIT
- FlicenseAqualityCmaintenanceRefines and improves AI prompts using workspace-aware context from your project's tech stack, structure, and dependencies. Includes tools to analyze prompt quality and generate well-structured prompts from raw ideas.4209 npm5-
- AlicenseAqualityAmaintenanceAI development observability platform. It silently captures structured data from vibe coding sessions via MCP and codifies deviation patterns into project rules to make AI write better code. 100% local and zero runtime dependencies.102 npm8MIT
- AlicenseNot gradedqualityCmaintenanceContext intelligence for AI coding sessions. 7 MCP tools to score, compare, compress, build, and scan prompts across 9 AI tools. Rule-based, <5ms/prompt, all analysis runs locally.46MIT