OpenCode MCP server for Shopify, Stripe and 100+ business tools
Add one entry to opencode.json and OpenCode signs in to PopMCP with OAuth the first time it needs it. Your terminal agent can then read real orders, payments, issues and analytics. No API keys, and no headers to manage.
https://app.popmcp.com/mcpConnect OpenCode to PopMCP
One path, and it ends with the PopMCP sign-in where you pick what OpenCode may reach.
Add PopMCP to your OpenCode config
One block under the mcp key. Put it in opencode.json in a project root to scope it to that repository, or in your global OpenCode config to have it everywhere.
Sign in at app.popmcp.com, connect the tools you want OpenCode to reach, and check each one shows as Verified.
Add popmcp under the mcp key. If the file already has an mcp block, add popmcp beside the existing entries instead of replacing them. Leave out headers: there is no API key.
opencode.json{ "$schema": "https://opencode.ai/config.json", "mcp": { "popmcp": { "type": "remote", "url": "https://app.popmcp.com/mcp", "enabled": true } } }Start OpenCode and it prompts you to authenticate the first time it uses PopMCP. You can also start the sign-in yourself.
Terminalopencode mcp auth popmcpYour browser opens the PopMCP consent screen. Tick only the connectors OpenCode should reach, then authorize.
List your MCP servers and their sign-in status, then ask OpenCode to run list_connections. Start with a read-only request.
Terminalopencode mcp list
The short answer
OpenCode supports the Model Context Protocol (MCP) through remote servers in its config: you add a server with type remote and a URL under the mcp key, and OpenCode handles the OAuth sign-in when the server asks for it. PopMCP is a hosted MCP server that puts 100+ business tools behind one URL, https://app.popmcp.com/mcp, so one entry reaches every tool you connect in PopMCP. You choose which connectors OpenCode may use on the PopMCP consent screen.
What to ask OpenCode
OpenCode calls PopMCP's tools, PopMCP reads your connected accounts, and the answer comes back in the chat. The tool names are the real ones OpenCode calls.
Write a seed script from five real Stripe products and their prices.
PopMCP, 2 tool calls

stripe_list_productsFive active productsread
stripe_list_pricesThe prices attached to eachread
The reply is drawn as bars on purpose: the figures come from your own accounts, so this page does not make any up.
More to paste into OpenCode
- Write a seed script from five real Stripe products and prices.
- Pull three recent Shopify orders so I can type the order model.
- Show me a HubSpot deal with every property we use.
- Draft release notes from the Linear issues closed this cycle.
- Which issues assigned to me are blocked?
- Summarize what customers reported about login this week.
- List the DNS records for the staging zone in Cloudflare.
- Which Workers scripts are deployed on this account?
- Does the Postman collection match the routes in this folder?
- Which events does the signup funnel fire, in order?
- Is the new-checkout feature flag on?
- Which errors appeared after yesterday's deploy?
You decide what OpenCode can reach
That is set in PopMCP, not in OpenCode. The sign-in ends on a consent screen that lists your connections.
- OAuth sign-in, no API keys
- OpenCode signs in to PopMCP with OAuth 2.1. There is nothing to paste, and your Shopify or Stripe credentials stay encrypted inside PopMCP.
- You pick the connectors
- The consent screen lists your connections. OpenCode reaches only the ones you tick.
- Read-only where you want it
- A workspace owner or admin sets each teammate to no access, read, or read and write, per connection.
- Every call is on the record
- Usage shows each request by user, connector and tool. Removing someone's access applies on the next request.
Where PopMCP works in OpenCode
Each row is one place OpenCode runs, and what its vendor says about adding a remote MCP server there.
| Where | Remote MCP | How it signs in |
|---|---|---|
| OpenCode, one repositoryopencode.json in the project root | Supported | OAuth, started automatically on first use |
| OpenCode, every projectYour global OpenCode config | Supported | The same entry and the same sign-in |
Before you connect OpenCode
Four details from OpenCode's docs worth knowing before you start.
- Tools are prefixed with the server name
- OpenCode prefixes each MCP tool with the name you gave the server, so PopMCP's tools appear as popmcp_ followed by the tool name. You can switch them all off for an agent with the pattern popmcp_*.
- MCP tools use context
- OpenCode's docs warn that MCP servers add to the context window and suggest enabling only what you need. PopMCP loads a curated set per connector and keeps the rest searchable, and you tick only the connectors a task needs.
- Tokens are stored on your machine
- OpenCode keeps MCP sign-in tokens in ~/.local/share/opencode/mcp-auth.json. Run opencode mcp logout popmcp to remove them.
- When a sign-in will not start
- opencode mcp debug popmcp shows the auth status, tests the connection and tries the OAuth discovery flow, which tells you where it stops.
Questions about OpenCode and PopMCP
Answered from OpenCode's documentation, checked on .
Does OpenCode support remote MCP servers?
Yes. OpenCode's config takes MCP servers with type remote and a url. If the server needs sign-in, OpenCode detects it and runs the OAuth flow, using dynamic client registration when the server supports it. PopMCP does.
How do I add an MCP server to OpenCode?
Add an entry under the mcp key in opencode.json with type set to remote, url set to https://app.popmcp.com/mcp and enabled set to true. Then start OpenCode, or run opencode mcp auth popmcp, and approve the sign-in.
Do I need to add an Authorization header?
No. PopMCP is OAuth-only, so there is no API key or bearer token to put in headers. Leave the headers block out and OpenCode signs in for you.
Can I limit PopMCP to one repository?
Yes. Put the entry in opencode.json in that project's root. Put it in your global OpenCode config to make it available in every project.
How do I sign out of PopMCP in OpenCode?
Run opencode mcp logout popmcp. It removes the stored credentials from ~/.local/share/opencode/mcp-auth.json. You can also remove the member or the connection in PopMCP.
Which of my tools can OpenCode reach?
Only the connectors you tick on the PopMCP consent screen. A workspace owner or admin can also set each teammate to no access, read, or read and write per connection.
Sources
3 references, checked 12 October 2026
Every step on this page comes from these sources. Community sources are labelled, and we used them only where the vendor has not documented a step.
- OpenCode docs: MCP serversRemote servers use type remote and a url under the mcp key, OAuth starts automatically with dynamic client registration, the opencode mcp auth, list, logout and debug commands, where tokens are stored, and that tools are prefixed with the server name.opencode.ai
- Model Context Protocol: AuthorizationThe MCP OAuth 2.1 flow, with PKCE, protected resource metadata and dynamic client registration, that PopMCP implements.modelcontextprotocol.io
- PopMCP docs: OpenCodeThe opencode.json entry PopMCP documents for OpenCode.docs.popmcp.com
Use the same URL everywhere
Every client adds the same PopMCP URL and signs in with OAuth.
Put 100+ business tools inside OpenCode
Connect your tools in PopMCP, add the PopMCP URL, and approve the sign-in. There is nothing to install.




