prassoai/example-plugin-market-place. It publishes one plugin, the Linear MCP server.
Setup at a glance
- Create a marketplace repo in your GitHub organization and give the Macroscope GitHub App access to it.
- Store the MCP server’s token as a Murmur secret.
- Add the plugin and the secret to your workspace.
- Spawn an agent. It starts with the plugin’s tools.
What each harness supports
Repo structure
The repo uses the Claude Code plugin format:marketplace.json and keep .claude-plugin/plugin.json at its root.
.claude-plugin/marketplace.json
Names the marketplace and lists its plugins. Two repos in one workspace cannot use the same marketplace name, and each source is a path inside the repo.
.claude-plugin/marketplace.json
linear/.claude-plugin/plugin.json
Describes the plugin. Claude Code and Codex cache plugins by version, so bump it every time you change the plugin.
linear/.claude-plugin/plugin.json
linear/.mcp.json
Declares the MCP servers. The two highlighted lines carry the same token, because the harnesses read different fields:
linear/.mcp.json
Keep both lines so the server authenticates on every harness. Both name an environment variable, so the repo holds no token.
Set it up
1
Create the repo and give the Macroscope GitHub App access
Copy the example repo into your organization, for example as
acme/plugin-marketplace, or create the three files above. Commit and push.If the Macroscope GitHub App has access to selected repositories only, open your organization’s GitHub settings → GitHub Apps → Macroscope → Configure, and add the repo under Repository access.2
Store the token as a secret
Create a Linear API key and store it under the variable name from
.mcp.json:3
Add the plugin and the secret to your workspace
Export the workspace:Add a Save it:In the dashboard, the same fields are under Settings → Workspaces → your workspace → Plugins. Adding the secret under Settings → Agent configuration → Secrets with Mount automatically checked adds the mount. See Add MCP servers to agents for the dashboard steps.
plugins entry and mount the secret as an environment variable. Use the field names murmur get prints. If the file already has plugins or runtimeSecretMounts, add the entries to those lists:my-workspace.yaml
4
Spawn an agent
Plugins install when an agent starts, so spawn a new one:The agent answers with your Linear teams. On Claude Code the tools are named like
mcp__plugin_linear_linear__list_teams.Workspace plugins fields
MCP server fields
OpenCode rules
OpenCode loads only a plugin’s MCP servers, with these rules:${NAME}is the only variable form.${NAME:-default}makes the plugin unavailable.- A relative
commandsuch as./bin/servermakes the plugin unavailable; write${CLAUDE_PLUGIN_ROOT}/bin/server. A bare program name such asnpxis found onPATH. - A server whose
${NAME}variable has no value is left out until it has one. - When two plugins declare the same server name, the plugin listed first in the workspace keeps it.
MURMUR_IDENTITY_TOKEN,MURMUR_GATEWAY_TOKEN, andGH_ENTERPRISE_TOKENcannot be referenced.