Skip to content

Annotate publisher plugins with Copilot connector pointers - #55

Draft
dhruvchand wants to merge 5 commits into
mainfrom
dhruvchand-add-copilot-connectors
Draft

dhruvchand wants to merge 5 commits into
mainfrom
dhruvchand-add-copilot-connectors

Conversation

@dhruvchand

@dhruvchand dhruvchand commented Sep 25, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Lets clients (the Copilot app) find a tool such as Figma through Agent Finder and learn that a managed Copilot connector exists for it, so they can prefer the connector.

The catalog stores only a static pointer to the connector's canonical name. Availability depends on the user and tenant and is feature-flagged, so clients check eligibility at runtime with the connector service (GET /plugins). The catalog makes no availability claims.

Shape

Each connector-backed entry gets a copilot-connector tag plus metadata.copilotConnector:

"tags": ["copilot-connector"],
"metadata": {
  "sourceSet": "figma/mcp-server-guide",
  "repoPath": ".github/plugin/plugin.json",
  "copilotConnector": { "name": "githubcopilotfigmamcp" }
}
  • metadata is used because Agent Finder's CatalogEntry wire model drops unknown top-level fields. The earlier top-level connector and matchHints fields never reached clients.
  • There is no available flag, no matchHints, and no top-level connector field.
  • scripts/generate_ai_catalog.py validate() now checks that metadata.copilotConnector is an object whose only key is name, matching ^[a-z0-9]+$. An entry must have both the tag and the metadata, or neither. Unit tests cover a valid entry, a missing name, a bad name, an extra key, a tag without metadata, and metadata without a tag.
  • The convention is documented in CONTRIBUTING.md.

Connector coverage (12/12)

Most publishers ship an official plugin that bundles the same hosted MCP server the connector proxies, so this PR annotates those plugin entries.

Connector name Catalog entries Hosted MCP server
githubcopilotfigmamcp catalog/figma/figma.json (new) mcp.figma.com
githubcopilotatlassianrovomcp catalog/atlassian/atlassian.json (new) mcp.atlassian.com
githubcopilotcloudflaremcp catalog/cloudflare/cloudflare-plugin.json (new) mcp.cloudflare.com
githubcopilotlinearmcp catalog/linear/linear.json (new), catalog/anthropics/linear.json mcp.linear.app
githubcopilotnotionmcp catalog/makenotion/notion.json (new) mcp.notion.com
githubcopilotsentrymcp catalog/getsentry/sentry.json (new) mcp.sentry.dev
githubcopilotslackmcp catalog/slackapi/slack.json (new), catalog/anthropics/slack-by-salesforce.json mcp.slack.com
githubcopilotvercelmcp catalog/vercel/vercel.json (new) mcp.vercel.com
zapiermcp catalog/zapier/zapier.json (new) mcp.zapier.com
microsoftlearndocsmcpserver catalog/microsoftdocs/microsoft-docs.json (new) learn.microsoft.com/api/mcp
workiqmcp catalog/microsoft/workiq.json —
kusto catalog/github/kusto.json (new, data-backed; no publisher plugin exists) —

For each new plugin entry, I checked the default branch (main), the manifest path, and the bundled .mcp.json/mcp.json against the upstream repos. Descriptions come from the publisher manifests. The Cloudflare identifier ends in :cloudflare-plugin because urn:ai:github.com:cloudflare:skills:cloudflare is already used by an existing skill entry.

Why the connector-annotations.json overlay was removed

  • It targeted urn:air:registry.modelcontextprotocol.io:* rows. The live Agent Finder serves MCP entries as urn:air:api.mcp.github.com:* from a different source, so the overlay annotated rows that clients never see.
  • It failed generation whenever an annotated identifier was missing from the remote catalog, which could break the automated catalog refresh.

The overlay file, its generator logic, and its tests have been removed. The generator and the tests that existed before this PR are back to main's versions, with only the new validation added.

Validation

  • python3 -m unittest discover -s tests: 25 tests, OK in CI.
  • python3 scripts/generate_ai_catalog.py passes in CI with 2223 entries; 14 of them carry copilot-connector. ai-catalog.json was regenerated by the workflow.

Follow-up needed in github/agentfinder

Agentfinder's enrichment → search projection currently drops source metadata and replaces source tags with LLM-generated tags, so neither copilot-connector nor metadata.copilotConnector reaches search results yet. Agentfinder needs to:

  1. Pass through metadata.copilotConnector (and the source copilot-connector tag) from the ingested entry to search results.
  2. Handle data-backed entries such as Kusto (data instead of url). This is an open gap in that path today.

dhruvchand and others added 4 commits October 5, 2026 11:35
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b4d3b6e9-79c8-4c01-8f3d-f1534c00505a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b4d3b6e9-79c8-4c01-8f3d-f1534c00505a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b4d3b6e9-79c8-4c01-8f3d-f1534c00505a
Replace the connector-annotations.json overlay with a static pointer on
local catalog entries: a `copilot-connector` tag plus
`metadata.copilotConnector: { "name": "<connector name>" }`.

- Remove the overlay file, its generator logic, and its tests. It
  annotated registry.modelcontextprotocol.io rows that Agent Finder does
  not serve, and failed generation when identifiers were missing.
- Validate metadata.copilotConnector in validate(): an object whose only
  key is `name` matching ^[a-z0-9]+$, present iff the entry has the
  copilot-connector tag.
- Move WorkIQ and Kusto to the new shape (drop top-level `connector`,
  `matchHints`, and `connector-available`); refresh Kusto's description
  from its connector manifest.
- Annotate the Anthropic-hosted Linear and Slack plugins and add 10
  publisher plugin entries that bundle the same hosted MCP servers as
  their connectors (Figma, Atlassian, Cloudflare, Linear, Notion, Sentry,
  Slack, Vercel, Zapier, Microsoft Learn Docs).
- Document the convention in CONTRIBUTING.md.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@dhruvchand
dhruvchand force-pushed the dhruvchand-add-copilot-connectors branch from 08ac86d to accd1c1 Compare October 5, 2026 18:39
@dhruvchand dhruvchand changed the title Add Microsoft + Zapier connectors to Agent Finder catalog Annotate publisher plugins with Copilot connector pointers Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant