Skip to main content
Glama
README.md
# VitalyGPT MCP

A Model Context Protocol (MCP) server that makes [Vitaly Friedman](https://www.linkedin.com/in/vitalyfriedman/)'s UX insights available as a tool to any LLM.

Vitaly is the founder of [Smashing Magazine](https://www.smashingmagazine.com/) and one of the most prolific UX educators on the internet. This project collects his insights and serves them as structured, searchable knowledge — so you can reference his thinking directly inside Claude, Cursor, or any MCP-compatible client while designing your next product.

> **Status:** Personal use / early preview. Shared with Vitaly for feedback before wider distribution.

---

## What it does

Four tools, zero setup friction:

| Tool | Description |
|---|---|
| `list_topics` | See all UX topic areas covered |
| `search_insights` | Full-text search across all insights |
| `get_topic` | Get all insights for a specific topic |
| `get_random_insight` | Random insight for design inspiration |

**Topics covered:** Forms & Inputs · Navigation & IA · Research & Usability Testing · UX Strategy & Metrics · Design Process · Careers & Communication · UI Components & Patterns · AI & Design Tools

---

## Setup

**Requirements:** Node.js 18+

### Fastest way: ask your AI agent

Paste this into whatever AI coding agent you use — Claude Code, Cursor, Codex, Gemini, all of them:

> Read the setup instructions at github.com/setugk/vitalygpt and add its MCP server (`npx -y @vitalygpt/mcp`) to your own config in whatever way is correct for you.

It'll fetch this page, figure out the right config mechanism for itself, and tell you when to restart.

### Manual setup

Prefer to do it yourself? All clients use the same server command — only the config file's location (and sometimes its format) differs. After editing, **restart the client** so it picks up the change.

### Claude Code

Create `.mcp.json` at the **root** of the folder/workspace you open in Claude Code (not a subfolder — it won't be discovered otherwise):

```json
{
  "mcpServers": {
    "vitalygpt": {
      "command": "npx",
      "args": ["-y", "@vitalygpt/mcp"]
    }
  }
}
```

Restart Claude Code, then confirm with `/mcp` or by asking "what MCP servers are connected?".

### Claude Desktop

Edit `claude_desktop_config.json`:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`

Same JSON as above (top-level `mcpServers` key). Restart the app.

### Cursor

Create `.cursor/mcp.json` — either in a project root (project-only) or `~/.cursor/mcp.json` (all projects):

```json
{
  "mcpServers": {
    "vitalygpt": {
      "command": "npx",
      "args": ["-y", "@vitalygpt/mcp"]
    }
  }
}
```

### OpenAI Codex CLI

Add to `~/.codex/config.toml` (or `.codex/config.toml` in a trusted project):

```toml
[mcp_servers.vitalygpt]
command = "npx"
args = ["-y", "@vitalygpt/mcp"]
```

Or via the CLI: `codex mcp add vitalygpt -- npx -y @vitalygpt/mcp`

### Gemini CLI

Add to `~/.gemini/settings.json` (global) or `.gemini/settings.json` (project):

```json
{
  "mcpServers": {
    "vitalygpt": {
      "command": "npx",
      "args": ["-y", "@vitalygpt/mcp"]
    }
  }
}
```

---

## Contributing

Content lives in [`content/`](./content/) as plain markdown files — one file per topic. Each insight follows this format:

```markdown
## Insight Title

One-paragraph summary of the key takeaway.

**Full post:**

The original post content.

**Source:** [LinkedIn](https://linkedin.com/...) · Vitaly Friedman · YYYY-MM-DD
**Tags:** tag1, tag2, tag3
```

To add a new insight: edit the relevant topic file and submit a PR. No code knowledge required.

**Topic files:**
- `content/forms-and-inputs.md`
- `content/navigation-and-ia.md`
- `content/research-and-testing.md`
- `content/strategy-and-metrics.md`
- `content/process-and-workflow.md`
- `content/careers-and-communication.md`
- `content/components-and-patterns.md`
- `content/ai-and-tools.md`

---

## Roadmap

- [x] Publish to npm as `@vitalygpt/mcp`
- [ ] Deduplicate near-identical entries
- [ ] Add semantic search (embeddings)
- [ ] Support for contributions from Vitaly directly

---

## Attribution

All insights are sourced from Vitaly Friedman's public LinkedIn posts, with attribution and links to originals. This project is not affiliated with Vitaly or Smashing Magazine.

## License

MIT

TDQS

A4.3/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: random insight, topic-specific insights, topic listing, and keyword search. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (get_random_insight, get_topic, list_topics, search_insights).

Tool Count5/5

With 4 tools, the server is well-scoped for a UX insight knowledge base, covering random retrieval, topic browsing, and search without excess.

Completeness5/5

The tools cover the core needs: random inspiration, topic exploration, topic listing, and full-text search. No obvious gaps for the given domain.

Maintenance

ActivityActive
ResponsivenessNo issues