Annotate publisher plugins with Copilot connector pointers - #55
Draft
dhruvchand wants to merge 5 commits into
Draft
dhruvchand wants to merge 5 commits into
dhruvchand wants to merge 5 commits into
Conversation
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
force-pushed
the
dhruvchand-add-copilot-connectors
branch
from
October 5, 2026 18:39
08ac86d to
accd1c1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-connectortag plusmetadata.copilotConnector:metadatais used because Agent Finder'sCatalogEntrywire model drops unknown top-level fields. The earlier top-levelconnectorandmatchHintsfields never reached clients.availableflag, nomatchHints, and no top-levelconnectorfield.scripts/generate_ai_catalog.pyvalidate()now checks thatmetadata.copilotConnectoris an object whose only key isname, 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.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.
githubcopilotfigmamcpcatalog/figma/figma.json(new)githubcopilotatlassianrovomcpcatalog/atlassian/atlassian.json(new)githubcopilotcloudflaremcpcatalog/cloudflare/cloudflare-plugin.json(new)githubcopilotlinearmcpcatalog/linear/linear.json(new),catalog/anthropics/linear.jsongithubcopilotnotionmcpcatalog/makenotion/notion.json(new)githubcopilotsentrymcpcatalog/getsentry/sentry.json(new)githubcopilotslackmcpcatalog/slackapi/slack.json(new),catalog/anthropics/slack-by-salesforce.jsongithubcopilotvercelmcpcatalog/vercel/vercel.json(new)zapiermcpcatalog/zapier/zapier.json(new)microsoftlearndocsmcpservercatalog/microsoftdocs/microsoft-docs.json(new)workiqmcpcatalog/microsoft/workiq.jsonkustocatalog/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.jsonagainst the upstream repos. Descriptions come from the publisher manifests. The Cloudflare identifier ends in:cloudflare-pluginbecauseurn:ai:github.com:cloudflare:skills:cloudflareis already used by an existing skill entry.Why the
connector-annotations.jsonoverlay was removedurn:air:registry.modelcontextprotocol.io:*rows. The live Agent Finder serves MCP entries asurn:air:api.mcp.github.com:*from a different source, so the overlay annotated rows that clients never see.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.pypasses in CI with 2223 entries; 14 of them carrycopilot-connector.ai-catalog.jsonwas regenerated by the workflow.Follow-up needed in github/agentfinder
Agentfinder's enrichment → search projection currently drops source
metadataand replaces source tags with LLM-generated tags, so neithercopilot-connectornormetadata.copilotConnectorreaches search results yet. Agentfinder needs to:metadata.copilotConnector(and the sourcecopilot-connectortag) from the ingested entry to search results.datainstead ofurl). This is an open gap in that path today.