Skill Tracer
Skills › Knowledge Work Plugins › cowork-plugin-customizer › mcp-servers.md

mcp-servers.md

91 lines · cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md at 2574e29

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# MCP Discovery and Connection
2
3How to find and connect MCPs during plugin customization.
4

MCP Discovery and Connection

How to find and connect MCPs during plugin customization.

Raw lines 1 to 4
Uses an outside tool MCP :1
5## Available Tools
6

Available Tools

Raw lines 5 to 6
7### `search_mcp_registry`
8Search the MCP directory for available connectors.
9
10**Input:** `{ "keywords": ["array", "of", "search", "terms"] }`
12**Output:** Up to 10 results, each with:
13- `name`: MCP display name
14- `description`: One-liner description
15- `tools`: List of tool names the MCP provides
16- `url`: MCP endpoint URL (use this in `.mcp.json`)
17- `directoryUuid`: UUID for use with suggest_connectors
18- `connected`: Boolean - whether user has this MCP connected

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
Raw lines 7 to 19
Uses an outside tool MCP :8
20### `suggest_connectors`
21Display Connect buttons to let users install/connect MCPs.
23**Input:** `{ "directoryUuids": ["uuid1", "uuid2"] }`
25**Output:** Renders UI with Connect buttons for each MCP

suggest_connectors

Display Connect buttons to let users install/connect MCPs.

Input: { "directoryUuids": ["uuid1", "uuid2"] }

Output: Renders UI with Connect buttons for each MCP

Raw lines 20 to 26
Uses an outside tool MCP :25
27## Category-to-Keywords Mapping
29| Category | Search Keywords |
30|----------|-----------------|
31| `project-management` | `["asana", "jira", "linear", "monday", "tasks"]` |
32| `software-coding` | `["github", "gitlab", "bitbucket", "code"]` |
33| `chat` | `["slack", "teams", "discord"]` |
34| `documents` | `["google docs", "notion", "confluence"]` |
35| `calendar` | `["google calendar", "calendar"]` |
36| `email` | `["gmail", "outlook", "email"]` |
37| `design-graphics` | `["figma", "sketch", "design"]` |
38| `analytics-bi` | `["datadog", "grafana", "analytics"]` |
39| `crm` | `["salesforce", "hubspot", "crm"]` |
40| `wiki-knowledge-base` | `["notion", "confluence", "outline", "wiki"]` |
41| `data-warehouse` | `["bigquery", "snowflake", "redshift"]` |
42| `conversation-intelligence` | `["gong", "chorus", "call recording"]` |

Category-to-Keywords Mapping

CategorySearch 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"]
Raw lines 27 to 43
44## Workflow
461. **Find customization point**: Look for `~~`-prefixed values (e.g., `~~Jira`)
472. **Check earlier phase findings**: Did you already learn which tool they use?
48 - **Yes**: Search for that specific tool to get its `url`, skip to step 5
49 - **No**: Continue to step 3
503. **Search**: Call `search_mcp_registry` with mapped keywords
514. **Present choices and ask user**: Show all results, ask which they use
525. **Connect if needed**: If not connected, call `suggest_connectors`
536. **Update MCP config**: Add config using the `url` from search results

Workflow

  1. Find customization point: Look for ~~-prefixed values (e.g., ~~Jira)
  2. Check earlier phase findings: Did you already learn which tool they use?
  3. Yes: Search for that specific tool to get its url, skip to step 5
  4. No: Continue to step 3
  5. Search: Call search_mcp_registry with mapped keywords
  6. Present choices and ask user: Show all results, ask which they use
  7. Connect if needed: If not connected, call suggest_connectors
  8. Update MCP config: Add config using the url from search results
Raw lines 44 to 54
Uses an outside tool MCP :53
55## Updating Plugin MCP Configuration

Updating Plugin MCP Configuration

Raw lines 55 to 56
Uses an outside tool MCP :55
57### Finding the Config File
591. **Check `plugin.json`** for an `mcpServers` field:
60 ```json
61 {
62 "name": "my-plugin",
63 "mcpServers": "./config/servers.json"
64 }
65 ```
66 If present, edit the file at that path.
682. **If no `mcpServers` field**, use `.mcp.json` at the plugin root (default).
703. **If `mcpServers` points only to `.mcpb` files** (bundled servers), create a new `.mcp.json` at the plugin root.

Finding the Config File

  1. **Check plugin.json** for an mcpServers field: ``json { "name": "my-plugin", "mcpServers": "./config/servers.json" } `` If present, edit the file at that path.
  1. **If no mcpServers field**, use .mcp.json at the plugin root (default).
  1. **If mcpServers points only to .mcpb files** (bundled servers), create a new .mcp.json at the plugin root.
Raw lines 57 to 71
72### Config File Format
74Both wrapped and unwrapped formats are supported:
76```json
78 "mcpServers": {
79 "github": {
80 "type": "http",
81 "url": "https://api.githubcopilot.com/mcp/"
82 }
83 }
85```
87Use the `url` field from `search_mcp_registry` results.

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.

Raw lines 72 to 88
89### Directory Entries Without a URL
91Some 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.

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.

Raw lines 89 to 91
Uses an outside tool MCP :91