MCP Discovery and Connection
How to find and connect MCPs during plugin customization.
Available Tools
search_mcp_registry
Search the MCP directory for available connectors.
Input: { "keywords": ["array", "of", "search", "terms"] }
Output: Up to 10 results, each with:
name: MCP display name
description: One-liner description
tools: List of tool names the MCP provides
url: MCP endpoint URL (use this in .mcp.json)
directoryUuid: UUID for use with suggest_connectors
connected: Boolean - whether user has this MCP connected
suggest_connectors
Display Connect buttons to let users install/connect MCPs.
Input: { "directoryUuids": ["uuid1", "uuid2"] }
Output: Renders UI with Connect buttons for each MCP
Category-to-Keywords Mapping
| Category |
Search Keywords |
project-management |
["asana", "jira", "linear", "monday", "tasks"] |
software-coding |
["github", "gitlab", "bitbucket", "code"] |
chat |
["slack", "teams", "discord"] |
documents |
["google docs", "notion", "confluence"] |
calendar |
["google calendar", "calendar"] |
email |
["gmail", "outlook", "email"] |
design-graphics |
["figma", "sketch", "design"] |
analytics-bi |
["datadog", "grafana", "analytics"] |
crm |
["salesforce", "hubspot", "crm"] |
wiki-knowledge-base |
["notion", "confluence", "outline", "wiki"] |
data-warehouse |
["bigquery", "snowflake", "redshift"] |
conversation-intelligence |
["gong", "chorus", "call recording"] |
Workflow
- Find customization point: Look for
~~-prefixed values (e.g., ~~Jira)
- Check earlier phase findings: Did you already learn which tool they use?
- Yes: Search for that specific tool to get its
url, skip to step 5
- No: Continue to step 3
- Search: Call
search_mcp_registry with mapped keywords
- Present choices and ask user: Show all results, ask which they use
- Connect if needed: If not connected, call
suggest_connectors
- Update MCP config: Add config using the
url from search results
Updating Plugin MCP Configuration
Finding the Config File
Check plugin.json for an mcpServers field:
{
"name": "my-plugin",
"mcpServers": "./config/servers.json"
}
If present, edit the file at that path.
If no mcpServers field, use .mcp.json at the plugin root (default).
If mcpServers points only to .mcpb files (bundled servers), create a new .mcp.json at the plugin root.
Config File Format
Both wrapped and unwrapped formats are supported:
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
}
Use the url field from search_mcp_registry results.
Directory Entries Without a URL
Some directory entries have no url because the endpoint is dynamic — the admin provides it when connecting the server. These servers can still be referenced in the plugin's MCP config by name: if the MCP server name in the config matches the directory entry name, it is treated the same as a URL match.
Example: Fully Configured .mcp.json
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ${GITHUB_TOKEN}"
}
},
"asana": {
"type": "sse",
"url": "https://mcp.asana.com/sse"
},
"slack": {
"type": "http",
"url": "https://slack.mcp.claude.com/mcp"
},
"figma": {
"type": "http",
"url": "https://mcp.figma.com/mcp"
},
"datadog": {
"type": "http",
"url": "https://api.datadoghq.com/mcp",
"headers": {
"DD-API-KEY": "${DATADOG_API_KEY}",
"DD-APPLICATION-KEY": "${DATADOG_APP_KEY}"
}
}
},
"recommendedCategories": [
"source-control",
"project-management",
"chat",
"documents",
"wiki-knowledge-base",
"design-graphics",
"analytics-bi"
]
}
1---2name: data-cowork-plugin-mcp-discovery-and-connection3description: Reference guidance for finding MCP connectors during plugin customization, using search and suggestion tools, mapping categories to keywords, and writing .mcp.json entries4license: BSD-3-Clause license5---67# MCP Discovery and Connection89How to find and connect MCPs during plugin customization.1011## Available Tools1213### `search_mcp_registry`14Search the MCP directory for available connectors.1516**Input:** `{ "keywords": ["array", "of", "search", "terms"] }`1718**Output:** Up to 10 results, each with:19- `name`: MCP display name20- `description`: One-liner description21- `tools`: List of tool names the MCP provides22- `url`: MCP endpoint URL (use this in `.mcp.json`)23- `directoryUuid`: UUID for use with suggest_connectors24- `connected`: Boolean - whether user has this MCP connected2526### `suggest_connectors`27Display Connect buttons to let users install/connect MCPs.2829**Input:** `{ "directoryUuids": ["uuid1", "uuid2"] }`3031**Output:** Renders UI with Connect buttons for each MCP3233## Category-to-Keywords Mapping3435| Category | Search Keywords |36|----------|-----------------|37| `project-management` | `["asana", "jira", "linear", "monday", "tasks"]` |38| `software-coding` | `["github", "gitlab", "bitbucket", "code"]` |39| `chat` | `["slack", "teams", "discord"]` |40| `documents` | `["google docs", "notion", "confluence"]` |41| `calendar` | `["google calendar", "calendar"]` |42| `email` | `["gmail", "outlook", "email"]` |43| `design-graphics` | `["figma", "sketch", "design"]` |44| `analytics-bi` | `["datadog", "grafana", "analytics"]` |45| `crm` | `["salesforce", "hubspot", "crm"]` |46| `wiki-knowledge-base` | `["notion", "confluence", "outline", "wiki"]` |47| `data-warehouse` | `["bigquery", "snowflake", "redshift"]` |48| `conversation-intelligence` | `["gong", "chorus", "call recording"]` |4950## Workflow51521. **Find customization point**: Look for `~~`-prefixed values (e.g., `~~Jira`)532. **Check earlier phase findings**: Did you already learn which tool they use?54 - **Yes**: Search for that specific tool to get its `url`, skip to step 555 - **No**: Continue to step 3563. **Search**: Call `search_mcp_registry` with mapped keywords574. **Present choices and ask user**: Show all results, ask which they use585. **Connect if needed**: If not connected, call `suggest_connectors`596. **Update MCP config**: Add config using the `url` from search results6061## Updating Plugin MCP Configuration6263### Finding the Config File64651. **Check `plugin.json`** for an `mcpServers` field:66 ```json67 {68 "name": "my-plugin",69 "mcpServers": "./config/servers.json"70 }71 ```72 If present, edit the file at that path.73742. **If no `mcpServers` field**, use `.mcp.json` at the plugin root (default).75763. **If `mcpServers` points only to `.mcpb` files** (bundled servers), create a new `.mcp.json` at the plugin root.7778### Config File Format7980Both wrapped and unwrapped formats are supported:8182```json83{84 "mcpServers": {85 "github": {86 "type": "http",87 "url": "https://api.githubcopilot.com/mcp/"88 }89 }90}91```9293Use the `url` field from `search_mcp_registry` results.9495### Directory Entries Without a URL9697Some directory entries have no `url` because the endpoint is dynamic — the admin provides it when connecting the server. These servers can still be referenced in the plugin's MCP config by **name**: if the MCP server name in the config matches the directory entry name, it is treated the same as a URL match.9899## Example: Fully Configured `.mcp.json`100101```json102{103 "mcpServers": {104 "github": {105 "type": "http",106 "url": "https://api.githubcopilot.com/mcp/",107 "headers": {108 "Authorization": "Bearer ${GITHUB_TOKEN}"109 }110 },111 "asana": {112 "type": "sse",113 "url": "https://mcp.asana.com/sse"114 },115 "slack": {116 "type": "http",117 "url": "https://slack.mcp.claude.com/mcp"118 },119 "figma": {120 "type": "http",121 "url": "https://mcp.figma.com/mcp"122 },123 "datadog": {124 "type": "http",125 "url": "https://api.datadoghq.com/mcp",126 "headers": {127 "DD-API-KEY": "${DATADOG_API_KEY}",128 "DD-APPLICATION-KEY": "${DATADOG_APP_KEY}"129 }130 }131 },132 "recommendedCategories": [133 "source-control",134 "project-management",135 "chat",136 "documents",137 "wiki-knowledge-base",138 "design-graphics",139 "analytics-bi"140 ]141}142143```