Search MCP servers and agent skills, compare them, and get install configs for your client.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Bearer pb_live_ key from https://plugmcp.ai/app.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Compare two to five servers side by side by slug: trust signals, auth, hosting, transport, tools count, license.
Slugs from search results.
json (default) or markdown for a human-readable text block. structuredContent is always JSON.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http directory https://plugmcp.ai/mcp-server
Headers
Authorization (optional, not in the config above): Optional. Bearer pb_live_ key from https://plugmcp.ai/app.Compare two to five servers side by side by slug: trust signals, auth, hosting, transport, tools count, license.
| Argument | Type | Description |
|---|---|---|
| slugs* | array | Slugs from search results. |
| response_format | string | json (default) or markdown for a human-readable text block. structuredContent is always JSON. |
{
"type": "object",
"required": [
"slugs"
],
"properties": {
"slugs": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"description": "Slugs from search results."
},
"response_format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default) or markdown for a human-readable text block. structuredContent is always JSON."
}
},
"additionalProperties": false
}The exact config or command to install one server in one client: Cursor, Claude Code, Claude Desktop, VS Code, Windsurf, ChatGPT, Codex, Gemini CLI, Grok Build, Grok Bot, or plain JSON. For Grok Bot the value is the message to send in its chat. Includes the config file path and a one-click deeplink when the client has one.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Listing slug from search results, for example github-github-mcp-server. |
| client | string | The agent the user installs into. grok is Grok Build (terminal) plus grok.com; grok-bot is Grok Bot, which takes a chat message. json returns a plain mcpServers block for any other client. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Listing slug from search results, for example github-github-mcp-server."
},
"client": {
"enum": [
"cursor",
"claude-code",
"claude-desktop",
"vscode",
"windsurf",
"chatgpt",
"codex",
"gemini-cli",
"grok",
"grok-bot",
"json"
],
"type": "string",
"description": "The agent the user installs into. grok is Grok Build (terminal) plus grok.com; grok-bot is Grok Bot, which takes a chat message. json returns a plain mcpServers block for any other client."
}
},
"additionalProperties": false
}Details for one server by slug: description, tools, auth, transport, health, packages, and links. include_readme adds the README (trimmed).
| Argument | Type | Description |
|---|---|---|
| slug* | string | Listing slug from search results, for example github-github-mcp-server. |
| include_readme | boolean | Also return the README, trimmed to 8,000 characters. |
| response_format | string | json (default) or markdown for a human-readable text block. structuredContent is always JSON. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Listing slug from search results, for example github-github-mcp-server."
},
"include_readme": {
"type": "boolean",
"description": "Also return the README, trimmed to 8,000 characters."
},
"response_format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default) or markdown for a human-readable text block. structuredContent is always JSON."
}
},
"additionalProperties": false
}One skill by slug: what it does, where the SKILL.md lives, and the install command for Cursor, Claude Code, Codex and Grok Build, plus the chat message that installs it in Grok Bot. include_body adds the SKILL.md text (trimmed).
| Argument | Type | Description |
|---|---|---|
| slug* | string | Skill slug from search_skills. |
| include_body | boolean | Also return the SKILL.md text, trimmed to 6,000 characters. |
| response_format | string | json (default) or markdown for a human-readable text block. structuredContent is always JSON. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Skill slug from search_skills."
},
"include_body": {
"type": "boolean",
"description": "Also return the SKILL.md text, trimmed to 6,000 characters."
},
"response_format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default) or markdown for a human-readable text block. structuredContent is always JSON."
}
},
"additionalProperties": false
}Directory categories with listing counts. Use a slug as the category filter in search_servers.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Describe what the user wants to do in plain words. Returns the best three servers, each with why it fits, auth, remote or local, health, and the install snippet for the client.
| Argument | Type | Description |
|---|---|---|
| task* | string | What the agent should be able to do, for example query my Postgres database or send email from Gmail. |
| limit | integer | How many to return. Default 3. |
| client | string | The agent the user installs into. grok is Grok Build (terminal) plus grok.com; grok-bot is Grok Bot, which takes a chat message. json returns a plain mcpServers block for any other client. |
| constraints | object | |
| response_format | string | json (default) or markdown for a human-readable text block. structuredContent is always JSON. |
{
"type": "object",
"required": [
"task"
],
"properties": {
"task": {
"type": "string",
"description": "What the agent should be able to do, for example query my Postgres database or send email from Gmail."
},
"limit": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "How many to return. Default 3."
},
"client": {
"enum": [
"cursor",
"claude-code",
"claude-desktop",
"vscode",
"windsurf",
"chatgpt",
"codex",
"gemini-cli",
"grok",
"grok-bot",
"json"
],
"type": "string",
"description": "The agent the user installs into. grok is Grok Build (terminal) plus grok.com; grok-bot is Grok Bot, which takes a chat message. json returns a plain mcpServers block for any other client."
},
"constraints": {
"type": "object",
"properties": {
"no_auth": {
"type": "boolean",
"description": "Skip servers that need an API key or a sign-in."
},
"remote_only": {
"type": "boolean",
"description": "Hosted servers only, nothing to install."
},
"voice_ready": {
"type": "boolean",
"description": "Only servers suited to voice agents."
},
"official_only": {
"type": "boolean",
"description": "Only servers published by the product they connect to."
},
"verified_only": {
"type": "boolean",
"description": "Only servers that passed the live health check."
}
},
"additionalProperties": false
},
"response_format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default) or markdown for a human-readable text block. structuredContent is always JSON."
}
},
"additionalProperties": false
}Find MCP servers by product name, publisher, or topic. Ranked by relevance (exact name, then publisher, then tags and description), official and verified first, duplicates merged. Returns compact cards with trust signals; call get_install next.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page. Default 8. Without a key at most 10. |
| query | string | Product, publisher, or topic, for example github, postgres, send email. Empty lists the most used servers. |
| client | string | Only servers that work in this client (chatgpt keeps remote servers only). With fields=[install], adds the snippet for it. |
| cursor | string | next_cursor from the previous page. |
| fields | array | Extra card fields. install (needs client) and tools_count need a PlugMCP key. |
| category | string | Category slug from list_categories. |
| remote_only | boolean | Only hosted servers with a remote URL, no local install. |
| voice_ready | boolean | Only servers suited to voice agents. |
Find agent skills (SKILL.md packs for Claude Code, Cursor, Codex, Grok Build and Grok Bot) by name, publisher or topic. Call get_skill for the install command.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page. Default 8. Without a key at most 10. |
| query | string | Topic or name, for example pdf, frontend design, or testing. Empty lists the most starred skills. |
| cursor | string | next_cursor from the previous page. |
| category | string | Category slug. |
| response_format | string | json (default) or markdown for a human-readable text block. structuredContent is always JSON. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Results per page. Default 8. Without a key at most 10."
},
"query": {
"type": "string",
"description": "Topic or name, for example pdf, frontend design, or testing. Empty lists the most starred skills."
},
"cursor": {
"type": "string",
"description": "next_cursor from the previous page."
},
"category": {
"type": "string",
"description": "Category slug."
},
"response_format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default) or markdown for a human-readable text block. structuredContent is always JSON."
}
},
"additionalProperties": false
}Servers added to the directory recently, best first, plus health changes. Defaults to the last 7 days.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page. Default 8. Without a key at most 10. |
| since | string | ISO date or timestamp, for example 2026-11-01. Default: 7 days ago. At most 90 days back. |
| cursor | string | next_cursor from the previous page. |
| category | string | Category slug from list_categories. |
| remote_only | boolean | Only hosted servers with a remote URL. |
| response_format | string | json (default) or markdown for a human-readable text block. structuredContent is always JSON. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Results per page. Default 8. Without a key at most 10."
},
"since": {
"type": "string",
"description": "ISO date or timestamp, for example 2026-11-01. Default: 7 days ago. At most 90 days back."
},
"cursor": {
"type": "string",
"description": "next_cursor from the previous page."
},
"category": {
"type": "string",
"description": "Category slug from list_categories."
},
"remote_only": {
"type": "boolean",
"description": "Only hosted servers with a remote URL."
},
"response_format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default) or markdown for a human-readable text block. structuredContent is always JSON."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 5, 2026.
| official_only | boolean | Only servers published by the product they connect to. |
| verified_only | boolean | Only servers that passed the live health check. |
| response_format | string | json (default) or markdown for a human-readable text block. structuredContent is always JSON. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Results per page. Default 8. Without a key at most 10."
},
"query": {
"type": "string",
"description": "Product, publisher, or topic, for example github, postgres, send email. Empty lists the most used servers."
},
"client": {
"enum": [
"cursor",
"claude-code",
"claude-desktop",
"vscode",
"windsurf",
"chatgpt",
"codex",
"gemini-cli",
"grok",
"grok-bot",
"json"
],
"type": "string",
"description": "Only servers that work in this client (chatgpt keeps remote servers only). With fields=[install], adds the snippet for it."
},
"cursor": {
"type": "string",
"description": "next_cursor from the previous page."
},
"fields": {
"type": "array",
"items": {
"enum": [
"categories",
"sources",
"tools_count",
"install"
],
"type": "string"
},
"description": "Extra card fields. install (needs client) and tools_count need a PlugMCP key.",
"uniqueItems": true
},
"category": {
"type": "string",
"description": "Category slug from list_categories."
},
"remote_only": {
"type": "boolean",
"description": "Only hosted servers with a remote URL, no local install."
},
"voice_ready": {
"type": "boolean",
"description": "Only servers suited to voice agents."
},
"official_only": {
"type": "boolean",
"description": "Only servers published by the product they connect to."
},
"verified_only": {
"type": "boolean",
"description": "Only servers that passed the live health check."
},
"response_format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"description": "json (default) or markdown for a human-readable text block. structuredContent is always JSON."
}
},
"additionalProperties": false
}