Shared connectors (Gmail, Google Calendar, Slack) are redeclared per-plugin instead of shared, forcing duplicate auth
Summary
gmail, google calendar, and slack are not org-wide/utility connectors — each plugin's .mcp.json redeclares its own copy of them under that plugin's own namespace. The Cowork connector picker then shows them as plugin:legal:gmail, plugin:finance:gmail, plugin:sales:gmail, etc., each requiring separate authentication, even though they're the same underlying account/service.
Evidence
slack, google calendar, and gmail are each declared independently in at least 8 plugins' .mcp.json:
legal, finance, sales, customer-support, human-resources, marketing, operations, product-management(atlassian and notion show the same pattern in a subset of plugins.)
Example from legal/.mcp.json:
"google calendar": { "type": "http", "url": "" },
"gmail": { "type": "http", "url": "" }identical blocks appear verbatim in finance/.mcp.json, sales/.mcp.json, etc.
Why it's confusing
Installing more than one of these plugins (e.g. legal + finance) surfaces the same service twice in the connector list under two different plugin namespaces, and authenticating one does not satisfy the other — a user has to click through OAuth once per plugin for what is, from their point of view, one account.
Suggested fix
Cheap: document in CONNECTORS.md that these are shared/global connectors satisfied once across all plugins that reference them, if that's already true at the auth layer and only the UI namespacing is misleading.
Bigger: let plugins reference a shared connector definition (e.g. a top-level connectors.json or marketplace-level registry) instead of copy-pasting the same .mcp.json block into every plugin, so authenticating once satisfies every plugin that declares it.
Related but distinct from #933 (empty url on the same servers) — this issue is about the duplicated-namespace/redundant-auth UX even where the URL is populated and working (e.g. slack).
Source: anthropics/knowledge-work-plugins