Skip to main content
Glama
benediktgirz

StoryLenses MCP Server

by benediktgirz
README.md
# StoryLenses MCP Server

AI-powered cover letter generation for MCP-compatible agents. The first production MCP server for job applications.

## Tools

| Tool | Description |
|------|-------------|
| `storylenses_analyze_job` | Extract 15+ structured fields from a job posting |
| `storylenses_match_profile` | Match a candidate CV against job data |
| `storylenses_generate_letter` | Generate a story-driven cover letter |
| `storylenses_quality_check` | Score and evaluate a cover letter |
| `storylenses_list_archetypes` | List available narrative archetypes and tones |

## Setup

### Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "storylenses": {
      "command": "npx",
      "args": ["-y", "@storylenses/mcp-server"],
      "env": {
        "STORYLENSES_API_KEY": "your-api-key"
      }
    }
  }
}
```

### Cursor / VS Code

Add to `.cursor/mcp.json` or VS Code MCP settings:

```json
{
  "mcp": {
    "servers": {
      "storylenses": {
        "command": "npx",
        "args": ["-y", "@storylenses/mcp-server"],
        "env": {
          "STORYLENSES_API_KEY": "your-api-key"
        }
      }
    }
  }
}
```

### Docker

```bash
docker run -e STORYLENSES_API_KEY=your-key ghcr.io/benediktgirz/storylenses-mcp-server
```

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `STORYLENSES_API_KEY` | Yes | Your API key from storylenses.app/mcp |
| `STORYLENSES_API_URL` | No | API base URL (default: https://www.storylenses.app) |

## Example Workflow

```typescript
// 1. Analyze job posting
const job = await callTool("storylenses_analyze_job", {
  job_url: "https://linkedin.com/jobs/view/12345"
});

// 2. Match candidate profile
const match = await callTool("storylenses_match_profile", {
  job_analysis: job,
  candidate_cv: "Senior engineer with 7 years React experience..."
});

// 3. Generate cover letter
const letter = await callTool("storylenses_generate_letter", {
  job_analysis: job,
  match_data: match,
  candidate_name: "Alex Chen",
  archetype: match.suggestedArchetype
});

// 4. Quality check
const score = await callTool("storylenses_quality_check", {
  letter_text: letter.letter_text,
  job_analysis: job
});
```

## Testing

```bash
npm install
STORYLENSES_API_KEY=your-key npm test
```

## Get an API Key

Visit [storylenses.app/mcp](https://www.storylenses.app/mcp) to get your API key.

- Free: 10 generations/month
- Developer ($29/mo): 200 generations
- Scale ($99/mo): 1,000 generations

## License

MIT

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation5/5

Each tool occupies a distinct stage in the workflow pipeline: analyze_job extracts job data, match_profile compares candidate to job, list_archetypes provides style options, generate_letter creates output, and quality_check validates results. No functional overlap exists between tools.

Naming Consistency5/5

All tools follow an identical storylenses_verb_noun pattern with consistent snake_case formatting, clear action-oriented verbs (analyze, generate, list, match, check), and uniform prefixing that prevents collisions with other servers.

Tool Count5/5

Five tools is ideally suited for this focused domain, covering the complete cover letter lifecycle from input analysis and matching through generation and validation without bloat, redundancies, or missing critical steps.

Completeness4/5

Provides comprehensive coverage of the generation workflow including analysis, matching, archetype selection, creation, and scoring; minor gap requires regenerating from scratch rather than refining existing letters based on quality feedback.

Maintenance

ActivityInactive
ResponsivenessNo issues