Skip to main content
Glama
ramvishvas

prompt-enhancement-mcp-server

by ramvishvas
README.md
# Prompt Enhancement MCP Server

An MCP (Model Context Protocol) server that enhances user prompts using AI. It takes a rough prompt and returns a more detailed, clear, and effective version. Works with any MCP-compatible client like Claude Desktop or Claude Code.

## Quick Start

1. Install and set your API key:
   ```bash
   export ANTHROPIC_API_KEY=sk-ant-...
   ```

2. Add to your MCP client config (e.g. Claude Desktop):
   ```json
   {
     "mcpServers": {
       "prompt-enhancer": {
         "command": "npx",
         "args": ["-y", "prompt-enhancement-mcp-server"],
         "env": {
           "ANTHROPIC_API_KEY": "your-key-here"
         }
       }
     }
   }
   ```

3. Use the `enhance_prompt` tool to improve any prompt.

## Installation

```bash
# Run directly with npx (recommended)
npx -y prompt-enhancement-mcp-server

# Or install globally
npm install -g prompt-enhancement-mcp-server

# Or install locally
npm install prompt-enhancement-mcp-server
```

## Supported Providers

| Provider | Env Variable | Default Model |
|---|---|---|
| Anthropic | `ANTHROPIC_API_KEY` | `claude-sonnet-4-5-20250929` |
| OpenAI | `OPENAI_API_KEY` | `gpt-4o` |
| OpenRouter | `OPENROUTER_API_KEY` | `anthropic/claude-sonnet-4-5-20250929` |
| Gemini | `GEMINI_API_KEY` | `gemini-2.0-flash` |
| OpenAI-compatible | `OPENAI_COMPATIBLE_API_KEY` | `gpt-3.5-turbo` |

Set at least one API key as an environment variable.

## Configuration

### Environment Variables

```bash
# API keys (set at least one)
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
OPENROUTER_API_KEY=sk-or-...
GEMINI_API_KEY=...

# Optional settings
PROMPT_ENHANCER_DEFAULT_PROVIDER=anthropic   # Which provider to use by default
PROMPT_ENHANCER_CONFIG=/path/to/config.json  # Custom config file path
PROMPT_ENHANCER_LOG_LEVEL=info               # debug, info, warn, error
```

### Optional Config File

Create `~/.config/prompt-enhancer/config.json` for model defaults, custom templates, or OpenAI-compatible endpoints:

```json
{
  "defaultProvider": "anthropic",
  "providers": {
    "anthropic": {
      "model": "claude-sonnet-4-5-20250929",
      "temperature": 0.7,
      "maxTokens": 4096
    },
    "openai": {
      "model": "gpt-4o"
    },
    "openrouter": {
      "model": "anthropic/claude-sonnet-4-5-20250929",
      "baseUrl": "https://openrouter.ai/api/v1"
    },
    "gemini": {
      "model": "gemini-2.0-flash"
    }
  },
  "templates": {
    "default": "Generate an enhanced version of this prompt (reply with only the enhanced prompt - no conversation, explanations, lead-in, bullet points, placeholders, or surrounding quotes):\n\n${userInput}"
  },
  "options": {
    "maxContextMessages": 10,
    "contextTruncateLength": 500
  }
}
```

API keys are **never** stored in the config file -- always use environment variables.

## Tool: `enhance_prompt`

The server exposes a single MCP tool:

| Parameter | Type | Required | Description |
|---|---|---|---|
| `text` | string | Yes | The prompt text to enhance |
| `provider` | string | No | Provider to use (`anthropic`, `openai`, `openrouter`, `gemini`, `openai-compatible`) |
| `model` | string | No | Model override (e.g. `gpt-4-turbo`) |
| `context` | array | No | Conversation history (`[{role, content}]`) for context |
| `template` | string | No | Custom template. Use `${userInput}` as placeholder |

## Claude Desktop Integration

Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):

```json
{
  "mcpServers": {
    "prompt-enhancer": {
      "command": "npx",
      "args": ["-y", "prompt-enhancement-mcp-server"],
      "env": {
        "ANTHROPIC_API_KEY": "your-key-here"
      }
    }
  }
}
```

## Claude Code Integration

Add to `~/.claude/claude_code_config.json` or your project's `.mcp.json`:

```json
{
  "mcpServers": {
    "prompt-enhancer": {
      "command": "npx",
      "args": ["-y", "prompt-enhancement-mcp-server"],
      "env": {
        "OPENAI_API_KEY": "your-key-here",
        "PROMPT_ENHANCER_DEFAULT_PROVIDER": "openai"
      }
    }
  }
}
```

## Custom Templates

Override the default enhancement template via the config file or the `template` tool parameter:

```json
{
  "templates": {
    "default": "Rewrite this prompt to be more specific and actionable:\n\n${userInput}"
  }
}
```

Or pass inline when calling the tool:

```json
{
  "text": "write a web app",
  "template": "Add technical details and edge cases to this prompt:\n\n${userInput}"
}
```

## OpenAI-Compatible Endpoints

Connect to Ollama, LM Studio, vLLM, or any OpenAI-compatible API:

```json
{
  "providers": {
    "openai-compatible": {
      "baseUrl": "http://localhost:11434/v1",
      "model": "llama3"
    }
  }
}
```

Then use it:
```json
{
  "text": "write a function",
  "provider": "openai-compatible"
}
```

## Troubleshooting

**"Unsupported provider" error**
Check that the provider name is one of: `anthropic`, `openai`, `openrouter`, `gemini`, `openai-compatible`.

**"API key is required" / authentication errors**
Make sure the corresponding environment variable is set. API keys are loaded from env vars, not the config file.

**Timeouts or rate limit errors**
The server retries transient errors up to 3 times with exponential backoff. If you're consistently hitting rate limits, try a different provider or model.

**No output / server won't start**
Check `PROMPT_ENHANCER_LOG_LEVEL=debug` for detailed logging. Logs go to stderr (MCP protocol reserves stdout for communication).

## Development

```bash
git clone <repo-url>
cd prompt-enhancement-mcp-server
npm install
npm run build
npm test
```

## License

Apache-2.0

TDQS

B3.2/5.0

Scored across 1 tool

Disambiguation5/5

There is only one tool, so there is no possibility of misselection or overlap. Its purpose is unambiguous.

Naming Consistency5/5

The single tool follows a clean verb_noun snake_case convention (enhance_prompt). No inconsistencies are possible with one tool.

Tool Count3/5

One tool matches the narrowly stated purpose but is thin even for that scope. There is no room for variants (e.g. tone, length, format options) that a prompt-enhancement service would plausibly offer.

Completeness3/5

The core enhancement operation is covered, but the surface is a single dead-end call with no options for enhancement style, target format, or refinement iterations. Usable but notably shallow for the domain.

Maintenance

ActivityInactive
ResponsivenessNo issues