# OpenCode

OpenCode reads remote MCP servers from its JSON config file.

## Add the server

Create a token in the app under **Agent connection**, then add this to `~/.config/opencode/opencode.json`. OpenCode reads the token from the `BLINK_ARTIFACT_TOKEN` environment variable, so it never sits in the file:

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "blink-artifact": {
      "type": "remote",
      "url": "https://artifact.blinkbrosai.com/mcp",
      "headers": { "Authorization": "Bearer {env:BLINK_ARTIFACT_TOKEN}" }
    }
  }
}
```

Then export the token in the shell you start OpenCode from; if the variable is not set, OpenCode sends an empty token:

```bash
export BLINK_ARTIFACT_TOKEN=<TOKEN>
```

If you already have an `mcp` section, add the `blink-artifact` entry to it. Restart OpenCode so it loads the tools.

## Listening for questions

OpenCode does not have its own listener harness. Ask it to listen with the `generic` harness: if it can keep a background process running, it follows the stream; otherwise you run the follow command in your own terminal and the agent reads unread questions each turn. Agents that cannot run background processes can wait with `asks_wait` instead. See [Listener & asks_wait](/docs/listener).

## The artifact link under the prompt

OpenCode has no documented way to add a custom status line yet, so it cannot show the `⧉ <title>` link that Claude Code, Copilot CLI and Antigravity show. The agent still prints the artifact's URL after each publish.

## Plugins

OpenCode's plugins are JavaScript or TypeScript code that reacts to events and adds tools; they do not bundle an MCP server config. The config file above is the way to connect.
