VitalyGPT MCP
by setugk
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