VitalyGPT MCP
The VitalyGPT MCP server gives you access to Vitaly Friedman's UX insights as a searchable knowledge base. You can use it to:
search_insights: Full-text search across all insights using a keyword or phrase (e.g. 'dropdown', 'mobile navigation', 'usability testing').get_topic: Retrieve all insights for a specific UX topic area using a topic slug (e.g. forms, navigation, research).list_topics: Discover all available UX topic areas, including Forms & Inputs, Navigation & IA, Research & Usability Testing, UX Strategy & Metrics, Design Process, Careers & Communication, UI Components & Patterns, and AI & Design Tools.get_random_insight: Fetch a random UX insight for design inspiration.
Allows OpenAI Codex CLI to search and browse Vitaly Friedman's UX insights for design advice.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VitalyGPT MCPsearch for accessible form design insights"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| See all UX topic areas covered |
| Full-text search across all insights |
| Get all insights for a specific topic |
| 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.jsonWindows:
%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, tag3To add a new insight: edit the relevant topic file and submit a PR. No code knowledge required.
Topic files:
content/forms-and-inputs.mdcontent/navigation-and-ia.mdcontent/research-and-testing.mdcontent/strategy-and-metrics.mdcontent/process-and-workflow.mdcontent/careers-and-communication.mdcontent/components-and-patterns.mdcontent/ai-and-tools.md
Roadmap
Publish to npm as
@vitalygpt/mcpDeduplicate 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 toolsget_random_insightA
Get a random UX insight from Vitaly Friedman. Great for inspiration during design sessions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Topic slug. Use list_topics to see available topics. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query — e.g. 'dropdown', 'mobile navigation', 'usability testing' |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v0.1.0- First observed
get_random_insight - First observed
get_topic - First observed
list_topics - First observed
search_insights
TDQS
Each tool has a clearly distinct purpose: random insight, topic-specific insights, topic listing, and keyword search. No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case (get_random_insight, get_topic, list_topics, search_insights).
With 4 tools, the server is well-scoped for a UX insight knowledge base, covering random retrieval, topic browsing, and search without excess.
The tools cover the core needs: random inspiration, topic exploration, topic listing, and full-text search. No obvious gaps for the given domain.
Maintenance
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
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
The Figma MCP server brings Figma design context directly into your AI workflow.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
An MCP memory server. One memory your agents share — across models, devices and apps.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAn MCP server that enables LLMs to interact with NEXT structured data, providing tools for retrieving highlights and clusters.23MIT
- AlicenseNot gradedqualityFmaintenanceMCP tool server that gives any AI agent the ability to search, scrape, and analyze content across the internet.42MIT
- AlicenseAqualityCmaintenanceMCP server that gives LLMs deep knowledge of design systems and tokens, enabling intelligent design evolution, token analysis, and designer-to-developer handoffs.37132MIT
- AlicenseNot gradedqualityDmaintenanceA remote MCP server exposing uxspot.io's curated UX glossary, AI tools directory, checklists, and Learn UX curriculum as callable tools. Enables AI assistants to search for UX terms, tools, and checklists via natural language.2MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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