# GitHub MCP server loads no tools in OpenCode: {env:VAR} vs ${env:VAR}

**TL;DR:** In OpenCode config, write the token placeholder as ${env:VAR} with the dollar sign, not {env:VAR}. Without the dollar sign OpenCode passes the literal string, auth fails silently, and no tools load. Restart OpenCode after fixing the config.

## The error

```
No tools available from the GitHub MCP server in OpenCode (server shows as connected but the tool list is empty).
```

## Fix it

1. Open your OpenCode MCP config and find the GitHub server env entry.
   Expected: You see {env:GITHUB_PERSONAL_ACCESS_TOKEN} without a dollar sign.
2. Change it to ${env:GITHUB_PERSONAL_ACCESS_TOKEN}.
   Expected: The placeholder now uses the dollar-brace form.
3. Save and restart OpenCode.
   Expected: The GitHub server lists its tools normally.

## When this applies

The GitHub MCP server connects in OpenCode but exposes no tools, while the same server works in Claude Desktop or Cursor.

## When this does NOT apply

If tools are missing in every client, the server itself is misconfigured. If you see 401s, the token value is wrong, not the placeholder syntax.

## Tool compatibility

GitHub MCP server with OpenCode

## Also seen as

- OpenCode GitHub MCP no tools
- GitHub MCP server empty tool list OpenCode
- env var not expanding in OpenCode MCP config

## Why it happens

OpenCode only expands ${env:VAR} placeholders. The bare {env:VAR} form is passed through literally, so the server receives the text {env:VAR} as the token, fails auth, and registers no tools.

## Edge cases

- The same mistake breaks any MCP server in OpenCode, not just GitHub.
- Some examples online show the wrong form; copy from the OpenCode docs.
- After fixing, delete any cached server state in OpenCode before restarting.