OpenCode provider: surface MCP servers, LSP servers, and plugins
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 23k
- Forks
- 5.9k
- Avg merge
- 11h 14m
- Merged PRs (30d)
- 357
Description
Problem
When T3 Code uses the OpenCode provider, there is no way to see which MCP servers, LSP servers, or OpenCode plugins are active for the workspace.
Today the OpenCode inventory only loads:
- upstream providers/models (
client.provider.list) - agents (
client.app.agents) - skills (
client.app.skills/opencode debug skill)
(apps/server/src/provider/opencodeRuntime.ts loadOpenCodeInventory, apps/server/src/provider/Layers/OpenCodeProvider.ts checkOpenCodeProviderStatus.)
ServerProvider (packages/contracts/src/server.ts) carries models, slashCommands, and skills — but no MCP/LSP/plugin fields — and Settings > Providers / docs (docs/user/providers-opencode.md “Refresh models, commands, and skills”) only mention models/commands/skills.
Meanwhile OpenCode already exposes the data:
client.mcp.status()->Record<name, connected|disabled|failed|needs_auth|needs_client_registration>(+opencode mcp list)client.lsp.status()->Array<{id, name, root, status}>client.config.get()->Config.plugin: string[]+Config.mcpmap (+opencode debug config,opencode plugin)
So users debugging “why is this tool missing / why is this MCP red” have to drop to the OpenCode CLI/TUI. T3 Code never shows it on web, desktop, or mobile.
Proposal
- Extend
OpenCodeInventorywithmcps/lsps/pluginsloaded alongside providers/agents/skills (SDK-first:mcp.status,lsp.status,config.get; degrade to empty on failure like agents/skills do today, and document the CLI-fallback gap:opencode mcp listis human-readable, there is no \ fast-timeout so a hung helper cannot wedge refresh). - Plumb through
ServerProvider(new optional arrays, forward-compatible likeskills) so web/desktop/mobile can render them. - Render a read-only section in Settings > Providers for OpenCode instances (name + status/error; LSP id/name/root/status; plugin spec), reused by mobile thread settings where reasonable. Per-adapter decision for non-OpenCode drivers: not supported (OpenCode-only).
- Update
docs/user/providers-opencode.md(“Refresh models, commands, and skills” -> include MCP/LSP/plugins).
Acceptance
- With OpenCode enabled, Settings > Providers shows MCP server names + status, LSP servers, and configured plugins for the workspace.
- Failed/disabled/needs-auth MCP states surface their error instead of silently disappearing.
- Works for local and external (
serverUrl) OpenCode servers; refresh path reloads all three lists. - Mobile shows the same data where provider details are rendered (or explicitly tracks why not).
Part 1 PR (backend plumbing) to follow; this issue tracks the full user-visible feature.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with loadOpenCodeInventory in apps/server/src/provider/opencodeRuntime.ts and checkOpenCodeProviderStatus in apps/server/src/provider/Layers/OpenCodeProvider.ts, then inspect ServerProvider in packages/contracts/src/server.ts. Trace the Settings > Providers rendering and mobile provider details, plus docs/user/providers-opencode.md. Done means MCP, LSP, and plugin data refreshes for local and external OpenCode servers, including MCP error states, across the specified clients.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend, desktop, documentation, frontend, mobile
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 55/100