Skip to main content
Glama

VitalyGPT MCP

A Model Context Protocol (MCP) server that makes Vitaly Friedman's UX insights available as a tool to any LLM.

Vitaly is the founder of Smashing Magazine 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


Related MCP server: hidrix-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):

{
  "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):

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

OpenAI Codex CLI

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

[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):

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

Contributing

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

## 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

  • 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

Available Tools

4 tools
get_random_insightA

Get a random UX insight from Vitaly Friedman. Great for inspiration during design sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description indicates a non-destructive read operation, but lacks details on rate limits, auth, or side effects. Acceptable for a simple random retrieval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose. No redundant information; every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema. Description fails to specify return format (e.g., text, object). For a random retrieval tool, basic return info would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters; schema coverage is 100%. Baseline 4 applies as description adds no parameter info beyond schema, but none needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'get', resource 'random UX insight', and source 'Vitaly Friedman'. Differentiates from siblings like search_insights and list_topics by specifying randomness and inspiration use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly mentions 'Great for inspiration during design sessions', providing clear context for when to use. No exclusions or alternatives, but adequate for a simple tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_topicA

Get all UX insights for a specific topic area (e.g. forms, navigation, research).

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesTopic slug. Use list_topics to see available topics.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It states the tool 'gets' insights, implying read-only, but does not explicitly confirm no side effects, pagination, or error behavior. Minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words, front-loaded with the essential action and resource. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low complexity (1 param, no output schema) and no annotations, the description adequately conveys the tool's purpose. It could mention return type but is sufficient for a simple retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with one parameter described as 'Topic slug.' The description adds useful context by directing users to list_topics to see available topics, enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('get') and resource ('UX insights'), clearly scoped to a specific topic area with examples. It distinguishes itself from siblings like get_random_insight and search_insights.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (for a given topic) but does not explicitly state when to use this tool versus alternatives like search_insights or get_random_insight. No exclusion criteria or alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_topicsA

List all available UX topic areas covered in the knowledge base.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It states the tool lists all available topics (a read-only operation), but omits details like whether results are paginated or if topic areas can be filtered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence of 10 words with no redundancy. Every word is necessary and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description is mostly complete. However, it could improve by briefly contrasting with sibling tools to help with tool selection (e.g., 'For a specific topic, use get_topic').

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the baseline is 4. The description correctly has no parameter information, and the schema already covers 100% of parameter details (none).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('list') and resource ('available UX topic areas'), clearly distinguishing from siblings like 'get_topic' (which likely retrieves a single topic) and 'search_insights' (which queries insights).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for obtaining an overview of all topics, but does not explicitly state when to use this tool versus alternatives (e.g., 'get_topic' for a specific topic) or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_insightsA

Search Vitaly Friedman's UX insights by keyword or topic. Returns matching insights with full content.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query — e.g. 'dropdown', 'mobile navigation', 'usability testing'

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the tool returns 'matching insights with full content' and is non-destructive, but lacks details on pagination, result limits, matching logic (exact/fuzzy), or any side effects. This is minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences that front-load the purpose and return information. No extraneous words; every sentence is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with one parameter and no output schema, the description covers the basics (what it searches, returns full content). However, it lacks details on result format, ordering, or limiting, which would improve completeness. It is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with a single 'query' parameter. The description adds value by providing concrete examples ('dropdown', 'mobile navigation', 'usability testing'), which helps the agent understand valid queries beyond the schema's generic description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Search'), resource ('Vitaly Friedman's UX insights'), and the action (by keyword or topic). It distinguishes from siblings like get_random_insight, get_topic, and list_topics by focusing on keyword/topic search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear context for use ('Search by keyword or topic') but does not explicitly state when not to use it or mention alternatives like get_topic for browsing topics. However, it is sufficiently clear for an AI to decide.

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. Dates show when Glama detected each change.

  1. 4 tool updatesv0.1.0
    • First observedget_random_insight
    • First observedget_topic
    • First observedlist_topics
    • First observedsearch_insights

TDQS

A4.3/5.0
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

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/setugk/vitalygpt'

If you have feedback or need assistance with the MCP directory API, please join our Discord server