@gcszhn/mcp-sentinel-opencode-plugin

August 16, 2026 · View on GitHub

An OpenCode plugin that acts as a sentinel between the AI agent and MCP servers — polling long-running tasks on the agent's behalf so that token-costly status loops never enter the LLM inference path.

This package is the OpenCode harness adapter for @gcszhn/mcp-sentinel-core.

Install

opencode plugin -g @gcszhn/mcp-sentinel-opencode-plugin

Or add it to your opencode.jsonc (project .opencode/opencode.jsonc or global ~/.config/opencode/opencode.jsonc):

{
  "plugin": ["@gcszhn/mcp-sentinel-opencode-plugin"],
}

The plugin reads your existing MCP server config — no additional setup needed.

Tools

mcp_sentinel_poll

Submit a long-running MCP tool call and poll it at regular intervals until a condition is met. Returns a sentinel ID immediately; the agent is notified via promptAsync when done.

ParameterTypeDefaultDescription
serverstringrequiredMCP server name (from opencode config)
toolstringrequiredTool name to call on the server
argsobject{}JSON object of arguments for the tool
intervalnumber5000Poll interval in milliseconds
timeoutnumberoptionalMax poll duration in ms (unset = no limit)
untilobjectrequiredJSON condition object

mcp_sentinel_status

Check status, list active tasks, or cancel a running task (action = status | list | cancel).

mcp_sentinel_attach

Block the agent, waiting for a sentinel to complete. Zero token cost during the wait.

mcp_sentinel_read

Read raw poll outputs with offset/limit pagination.

Condition model

Conditions are pure declarative data:

{ "path": "status", "is": "eq", "value": "completed" }
{ "and": [
  { "path": "status", "is": "eq", "value": "completed" },
  { "path": "tasks[0].exit_code", "is": "eq", "value": 0 }
] }

See the repository root README.md for the full operator and path syntax.

Environment variables

VariableDefaultDescription
SENTINEL_MAX_POLL_LOGunlimitedMax poll log entries per task (FIFO trim)
SENTINEL_TASK_TTL_MSunlimitedAuto-cleanup completed tasks after N ms

License

MIT