opencode-mcp 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/README.md +23 -12
- package/dist/helpers.d.ts +13 -0
- package/dist/helpers.js +53 -0
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +19 -3
- package/dist/index.js.map +1 -1
- package/dist/server-manager.d.ts +68 -0
- package/dist/server-manager.js +251 -0
- package/dist/server-manager.js.map +1 -0
- package/dist/tools/provider.js +47 -2
- package/dist/tools/provider.js.map +1 -1
- package/dist/tools/workflow.js +75 -9
- package/dist/tools/workflow.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,40 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.4.0] - 2025-02-09
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Auth error detection** — `opencode_ask` and `opencode_reply` now analyze AI responses for signs of failure (empty response, missing text content, error keywords like "unauthorized" or "invalid key") and append a clear `--- WARNING ---` with actionable guidance instead of silently returning nothing
|
|
13
|
+
- **`analyzeMessageResponse()` helper** — new diagnostic function in `src/helpers.ts` that detects empty, error, and auth-related response issues
|
|
14
|
+
- **Provider probing in `opencode_setup`** — connected providers are now verified with a lightweight "Reply with OK" probe to distinguish between WORKING, CONNECTED BUT NOT RESPONDING (bad API key), and could-not-verify states. Unconfigured providers now show available auth methods.
|
|
15
|
+
- **`opencode_provider_models` tool** — new tool to list models for a single provider, replacing the previous approach of dumping all providers and all models in one massive response
|
|
16
|
+
- **164 tests** (up from 140) — new tests for `analyzeMessageResponse`, auth warning in ask/reply, provider probe statuses, compact provider list, and per-provider model listing
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- **`opencode_provider_list` is now compact** — returns only provider names, connection status, and model count (not the full model list). This dramatically reduces token usage for MCP clients. Use `opencode_provider_models` with a provider ID to drill into a specific provider's models.
|
|
21
|
+
- Tool count: 72 (up from 71)
|
|
22
|
+
|
|
23
|
+
## [1.3.0] - 2025-02-08
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- **Auto-serve** — the MCP server now automatically detects whether `opencode serve` is running and starts it as a child process if not. No more manual "start opencode serve" step before using the MCP server.
|
|
28
|
+
- Checks the `/global/health` endpoint on startup
|
|
29
|
+
- Finds the `opencode` binary via `which`/`where`
|
|
30
|
+
- Spawns `opencode serve --port <port>` and polls until healthy
|
|
31
|
+
- Graceful shutdown: kills the managed child process on SIGINT/SIGTERM/exit
|
|
32
|
+
- Clear error messages with install instructions if the binary is not found
|
|
33
|
+
- **`OPENCODE_AUTO_SERVE` env var** — set to `"false"` to disable auto-start for users who prefer manual control
|
|
34
|
+
- **`src/server-manager.ts` module** — new module with `findBinary()`, `isServerRunning()`, `startServer()`, `stopServer()`, `ensureServer()`
|
|
35
|
+
- **140 tests** (up from 117) — 23 new tests for the server manager covering health checks, binary detection, auto-start, error cases, and shutdown
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
|
|
39
|
+
- Startup flow in `src/index.ts` now calls `ensureServer()` before connecting the MCP transport
|
|
40
|
+
- Updated README: removed manual "start opencode serve" step, added auto-serve documentation, updated env vars table and architecture section
|
|
41
|
+
|
|
8
42
|
## [1.2.0] - 2025-02-08
|
|
9
43
|
|
|
10
44
|
### Added
|
package/README.md
CHANGED
|
@@ -5,19 +5,16 @@
|
|
|
5
5
|
[](https://nodejs.org/)
|
|
6
6
|
[](https://www.npmjs.com/package/opencode-mcp)
|
|
7
7
|
|
|
8
|
-
An [MCP](https://modelcontextprotocol.io/) server that gives any MCP-compatible client full access to
|
|
8
|
+
An [MCP](https://modelcontextprotocol.io/) server that gives any MCP-compatible client full access to [OpenCode](https://opencode.ai/). Manage sessions, send prompts, search files, review diffs, configure providers, control the TUI, and more.
|
|
9
9
|
|
|
10
|
-
**
|
|
10
|
+
**72 tools** | **10 resources** | **5 prompts** | **Multi-project support** | **Auto-start**
|
|
11
11
|
|
|
12
12
|
## Quick Start
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
Add to your MCP client and go. The server **automatically detects and starts** the OpenCode server if it's not already running — no manual `opencode serve` step needed.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
opencode
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
### 2. Add to your MCP client
|
|
16
|
+
> **Prerequisite:** [OpenCode](https://opencode.ai/) must be installed on your system.
|
|
17
|
+
> Install: `curl -fsSL https://opencode.ai/install | bash` or `npm i -g opencode-ai` or `brew install sst/tap/opencode`
|
|
21
18
|
|
|
22
19
|
Pick your client below. No authentication is needed by default — just add the config and restart your client.
|
|
23
20
|
|
|
@@ -137,7 +134,7 @@ claude mcp add opencode -- npx -y opencode-mcp
|
|
|
137
134
|
}
|
|
138
135
|
```
|
|
139
136
|
|
|
140
|
-
That's it. Your MCP client now has access to the entire OpenCode API.
|
|
137
|
+
That's it. Your MCP client now has access to the entire OpenCode API. The MCP server will auto-start `opencode serve` if it's not already running.
|
|
141
138
|
|
|
142
139
|
### Custom server URL or authentication (optional)
|
|
143
140
|
|
|
@@ -161,6 +158,16 @@ If the OpenCode server is on a different host/port or has auth enabled, pass env
|
|
|
161
158
|
}
|
|
162
159
|
```
|
|
163
160
|
|
|
161
|
+
To **disable** auto-start (if you prefer to manage the OpenCode server yourself):
|
|
162
|
+
|
|
163
|
+
```json
|
|
164
|
+
{
|
|
165
|
+
"env": {
|
|
166
|
+
"OPENCODE_AUTO_SERVE": "false"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
164
171
|
## What Can It Do?
|
|
165
172
|
|
|
166
173
|
### Workflow Tools (start here)
|
|
@@ -240,6 +247,7 @@ All environment variables are **optional**. You only need to set them if you've
|
|
|
240
247
|
| `OPENCODE_BASE_URL` | URL of the OpenCode server | `http://127.0.0.1:4096` | No |
|
|
241
248
|
| `OPENCODE_SERVER_USERNAME` | HTTP basic auth username | `opencode` | No |
|
|
242
249
|
| `OPENCODE_SERVER_PASSWORD` | HTTP basic auth password | *(none — auth disabled)* | No |
|
|
250
|
+
| `OPENCODE_AUTO_SERVE` | Auto-start `opencode serve` if not running | `true` | No |
|
|
243
251
|
|
|
244
252
|
> **Note:** Authentication is disabled by default. It only activates when `OPENCODE_SERVER_PASSWORD` is set on both the OpenCode server and the MCP server.
|
|
245
253
|
|
|
@@ -250,7 +258,9 @@ MCP Client <--stdio--> opencode-mcp <--HTTP--> OpenCode Server
|
|
|
250
258
|
(Claude, Cursor, etc.) (this package) (opencode serve)
|
|
251
259
|
```
|
|
252
260
|
|
|
253
|
-
The MCP server communicates over **stdio** using the Model Context Protocol. When a client invokes a tool, the server translates it into HTTP calls against the OpenCode headless API.
|
|
261
|
+
The MCP server communicates over **stdio** using the Model Context Protocol. When a client invokes a tool, the server translates it into HTTP calls against the OpenCode headless API.
|
|
262
|
+
|
|
263
|
+
**Auto-start flow:** On startup, the MCP server checks if the OpenCode server is already running (via the `/global/health` endpoint). If not, it finds the `opencode` binary on your system and spawns `opencode serve` as a child process. The child is automatically cleaned up when the MCP server exits.
|
|
254
264
|
|
|
255
265
|
## Working with Multiple Projects
|
|
256
266
|
|
|
@@ -292,6 +302,7 @@ When `directory` is omitted, the OpenCode server uses its own working directory
|
|
|
292
302
|
```
|
|
293
303
|
src/
|
|
294
304
|
index.ts Entry point — wires everything together
|
|
305
|
+
server-manager.ts Auto-detect, find, and start OpenCode server
|
|
295
306
|
client.ts HTTP client with retry, SSE, error categorization
|
|
296
307
|
helpers.ts Smart response formatting for LLM-friendly output
|
|
297
308
|
resources.ts MCP Resources (10 browseable data endpoints)
|
|
@@ -303,7 +314,7 @@ src/
|
|
|
303
314
|
file.ts File and search tools (6)
|
|
304
315
|
tui.ts TUI remote control tools (9)
|
|
305
316
|
config.ts Config tools (3)
|
|
306
|
-
provider.ts Provider/auth tools (
|
|
317
|
+
provider.ts Provider/auth tools (6)
|
|
307
318
|
misc.ts System, agents, LSP, MCP, logging tools (13)
|
|
308
319
|
events.ts SSE event polling (1)
|
|
309
320
|
global.ts Health check (1)
|
|
@@ -325,7 +336,7 @@ npm run dev # watch mode
|
|
|
325
336
|
|
|
326
337
|
- [Getting Started](docs/getting-started.md) — step-by-step setup guide
|
|
327
338
|
- [Configuration](docs/configuration.md) — all env vars and MCP client configs
|
|
328
|
-
- [Tools Reference](docs/tools.md) — detailed reference for all
|
|
339
|
+
- [Tools Reference](docs/tools.md) — detailed reference for all 72 tools
|
|
329
340
|
- [Resources Reference](docs/resources.md) — all 10 MCP resources
|
|
330
341
|
- [Prompts Reference](docs/prompts.md) — all 5 MCP prompts
|
|
331
342
|
- [Usage Examples](docs/examples.md) — real workflow examples
|
package/dist/helpers.d.ts
CHANGED
|
@@ -34,6 +34,19 @@ export declare function formatSessionList(sessions: unknown[]): string;
|
|
|
34
34
|
* Generic safe JSON stringify with truncation for very large responses.
|
|
35
35
|
*/
|
|
36
36
|
export declare function safeStringify(value: unknown, maxLength?: number): string;
|
|
37
|
+
/**
|
|
38
|
+
* Analyze an AI message response for signs of failure:
|
|
39
|
+
* - Completely empty (null/undefined)
|
|
40
|
+
* - Has parts but no text content (provider returned nothing)
|
|
41
|
+
* - Contains error indicators in parts
|
|
42
|
+
*
|
|
43
|
+
* Returns a diagnostic object with `isEmpty`, `hasError`, and `warning` text.
|
|
44
|
+
*/
|
|
45
|
+
export declare function analyzeMessageResponse(response: unknown): {
|
|
46
|
+
isEmpty: boolean;
|
|
47
|
+
hasError: boolean;
|
|
48
|
+
warning: string | null;
|
|
49
|
+
};
|
|
37
50
|
/**
|
|
38
51
|
* Standard tool response builder.
|
|
39
52
|
*/
|
package/dist/helpers.js
CHANGED
|
@@ -125,6 +125,59 @@ export function safeStringify(value, maxLength = 50000) {
|
|
|
125
125
|
return (json.slice(0, maxLength) +
|
|
126
126
|
`\n\n... [truncated, ${json.length - maxLength} more characters]`);
|
|
127
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Analyze an AI message response for signs of failure:
|
|
130
|
+
* - Completely empty (null/undefined)
|
|
131
|
+
* - Has parts but no text content (provider returned nothing)
|
|
132
|
+
* - Contains error indicators in parts
|
|
133
|
+
*
|
|
134
|
+
* Returns a diagnostic object with `isEmpty`, `hasError`, and `warning` text.
|
|
135
|
+
*/
|
|
136
|
+
export function analyzeMessageResponse(response) {
|
|
137
|
+
if (response === null || response === undefined) {
|
|
138
|
+
return {
|
|
139
|
+
isEmpty: true,
|
|
140
|
+
hasError: false,
|
|
141
|
+
warning: "The AI returned an empty response. This usually means the provider " +
|
|
142
|
+
"is not configured or the API key is missing/invalid. " +
|
|
143
|
+
"Use `opencode_setup` to check provider status, or " +
|
|
144
|
+
"`opencode_auth_set` to configure an API key.",
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
const r = response;
|
|
148
|
+
const parts = Array.isArray(r?.parts) ? r.parts : [];
|
|
149
|
+
// Check for error parts
|
|
150
|
+
const errorParts = parts.filter((p) => p.error ||
|
|
151
|
+
(p.type === "tool-result" && p.error) ||
|
|
152
|
+
(typeof p.text === "string" && /\b(error|unauthorized|forbidden|invalid.?key)\b/i.test(p.text)));
|
|
153
|
+
if (errorParts.length > 0) {
|
|
154
|
+
const firstError = errorParts[0].error ??
|
|
155
|
+
errorParts[0].text ??
|
|
156
|
+
JSON.stringify(errorParts[0]);
|
|
157
|
+
return {
|
|
158
|
+
isEmpty: false,
|
|
159
|
+
hasError: true,
|
|
160
|
+
warning: `The response contains an error: ${typeof firstError === "string" ? firstError : JSON.stringify(firstError)}. ` +
|
|
161
|
+
"This may indicate an authentication issue. " +
|
|
162
|
+
"Use `opencode_auth_set` to verify your API key.",
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
// Check if there's any actual text content
|
|
166
|
+
const textContent = parts
|
|
167
|
+
.filter((p) => p.type === "text")
|
|
168
|
+
.map((p) => (p.text ?? p.content ?? "").trim())
|
|
169
|
+
.join("");
|
|
170
|
+
if (parts.length === 0 || textContent === "") {
|
|
171
|
+
return {
|
|
172
|
+
isEmpty: true,
|
|
173
|
+
hasError: false,
|
|
174
|
+
warning: "The AI returned a response with no text content. This usually means " +
|
|
175
|
+
"the provider API key is missing or the model is unavailable. " +
|
|
176
|
+
"Try a different provider/model, or use `opencode_auth_set` to configure credentials.",
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
return { isEmpty: false, hasError: false, warning: null };
|
|
180
|
+
}
|
|
128
181
|
/**
|
|
129
182
|
* Standard tool response builder.
|
|
130
183
|
*/
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* providers, and more.
|
|
9
9
|
*
|
|
10
10
|
* Features:
|
|
11
|
-
* -
|
|
11
|
+
* - 70+ tools covering the entire OpenCode API surface
|
|
12
12
|
* - High-level workflow tools (opencode_ask, opencode_reply, etc.)
|
|
13
13
|
* - Smart response formatting for LLM-friendly output
|
|
14
14
|
* - MCP Resources for browseable project data
|
|
@@ -16,10 +16,12 @@
|
|
|
16
16
|
* - SSE event polling
|
|
17
17
|
* - TUI control tools
|
|
18
18
|
* - Retry logic with exponential backoff
|
|
19
|
+
* - Auto-detection and auto-start of the OpenCode server
|
|
19
20
|
*
|
|
20
21
|
* Environment variables:
|
|
21
22
|
* OPENCODE_BASE_URL - Base URL of the OpenCode server (default: http://127.0.0.1:4096)
|
|
22
23
|
* OPENCODE_SERVER_USERNAME - Username for HTTP basic auth (default: opencode)
|
|
23
24
|
* OPENCODE_SERVER_PASSWORD - Password for HTTP basic auth (optional)
|
|
25
|
+
* OPENCODE_AUTO_SERVE - Set to "false" to disable auto-start (default: true)
|
|
24
26
|
*/
|
|
25
27
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* providers, and more.
|
|
9
9
|
*
|
|
10
10
|
* Features:
|
|
11
|
-
* -
|
|
11
|
+
* - 70+ tools covering the entire OpenCode API surface
|
|
12
12
|
* - High-level workflow tools (opencode_ask, opencode_reply, etc.)
|
|
13
13
|
* - Smart response formatting for LLM-friendly output
|
|
14
14
|
* - MCP Resources for browseable project data
|
|
@@ -16,15 +16,18 @@
|
|
|
16
16
|
* - SSE event polling
|
|
17
17
|
* - TUI control tools
|
|
18
18
|
* - Retry logic with exponential backoff
|
|
19
|
+
* - Auto-detection and auto-start of the OpenCode server
|
|
19
20
|
*
|
|
20
21
|
* Environment variables:
|
|
21
22
|
* OPENCODE_BASE_URL - Base URL of the OpenCode server (default: http://127.0.0.1:4096)
|
|
22
23
|
* OPENCODE_SERVER_USERNAME - Username for HTTP basic auth (default: opencode)
|
|
23
24
|
* OPENCODE_SERVER_PASSWORD - Password for HTTP basic auth (optional)
|
|
25
|
+
* OPENCODE_AUTO_SERVE - Set to "false" to disable auto-start (default: true)
|
|
24
26
|
*/
|
|
25
27
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
26
28
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
27
29
|
import { OpenCodeClient } from "./client.js";
|
|
30
|
+
import { ensureServer } from "./server-manager.js";
|
|
28
31
|
// Tool groups
|
|
29
32
|
import { registerGlobalTools } from "./tools/global.js";
|
|
30
33
|
import { registerConfigTools } from "./tools/config.js";
|
|
@@ -43,15 +46,17 @@ import { registerPrompts } from "./prompts.js";
|
|
|
43
46
|
const baseUrl = process.env.OPENCODE_BASE_URL ?? "http://127.0.0.1:4096";
|
|
44
47
|
const username = process.env.OPENCODE_SERVER_USERNAME;
|
|
45
48
|
const password = process.env.OPENCODE_SERVER_PASSWORD;
|
|
49
|
+
const autoServe = process.env.OPENCODE_AUTO_SERVE !== "false";
|
|
46
50
|
const client = new OpenCodeClient({ baseUrl, username, password });
|
|
47
51
|
const server = new McpServer({
|
|
48
52
|
name: "opencode-mcp",
|
|
49
|
-
version: "1.
|
|
53
|
+
version: "1.4.0",
|
|
50
54
|
description: "Full-featured MCP server wrapping the OpenCode AI headless HTTP server. " +
|
|
51
55
|
"Provides 70+ tools, resources, and prompts to manage sessions, send " +
|
|
52
56
|
"prompts, search files, configure providers, control the TUI, monitor " +
|
|
53
57
|
"events, and interact with the full OpenCode API. " +
|
|
54
58
|
"All tools support a directory parameter for multi-project workflows. " +
|
|
59
|
+
"Auto-detects and starts the OpenCode server if not already running. " +
|
|
55
60
|
"Start with opencode_setup for onboarding, opencode_ask for one-shot " +
|
|
56
61
|
"questions, or opencode_context to understand the current project.",
|
|
57
62
|
});
|
|
@@ -76,9 +81,20 @@ registerResources(server, client);
|
|
|
76
81
|
registerPrompts(server);
|
|
77
82
|
// ── Start ───────────────────────────────────────────────────────────
|
|
78
83
|
async function main() {
|
|
84
|
+
// Step 1: Ensure OpenCode server is available (auto-start if needed).
|
|
85
|
+
try {
|
|
86
|
+
await ensureServer({ baseUrl, autoServe });
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
// Log the error but don't prevent MCP from starting — tools will
|
|
90
|
+
// report connection errors individually, and the server may come
|
|
91
|
+
// up later.
|
|
92
|
+
console.error(`Warning: ${err instanceof Error ? err.message : String(err)}`);
|
|
93
|
+
}
|
|
94
|
+
// Step 2: Connect the MCP transport.
|
|
79
95
|
const transport = new StdioServerTransport();
|
|
80
96
|
await server.connect(transport);
|
|
81
|
-
console.error(`opencode-mcp v1.
|
|
97
|
+
console.error(`opencode-mcp v1.4.0 started (OpenCode server at ${baseUrl})`);
|
|
82
98
|
}
|
|
83
99
|
main().catch((err) => {
|
|
84
100
|
console.error("Fatal error starting opencode-mcp:", err);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-detection and auto-start of the OpenCode headless server.
|
|
3
|
+
*
|
|
4
|
+
* This module handles:
|
|
5
|
+
* 1. Checking if `opencode serve` is already running (health check)
|
|
6
|
+
* 2. Finding the `opencode` binary on the system
|
|
7
|
+
* 3. Spawning `opencode serve` as a child process if needed
|
|
8
|
+
* 4. Graceful shutdown of the child process on exit
|
|
9
|
+
*
|
|
10
|
+
* Controlled via environment variables:
|
|
11
|
+
* OPENCODE_AUTO_SERVE - Set to "false" to disable auto-start (default: true)
|
|
12
|
+
* OPENCODE_BASE_URL - Base URL of the server (default: http://127.0.0.1:4096)
|
|
13
|
+
*/
|
|
14
|
+
export interface ServerManagerOptions {
|
|
15
|
+
baseUrl: string;
|
|
16
|
+
/** Disable auto-start entirely. */
|
|
17
|
+
autoServe?: boolean;
|
|
18
|
+
/** Max time (ms) to wait for the server to become healthy after spawning. */
|
|
19
|
+
startupTimeoutMs?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface ServerStatus {
|
|
22
|
+
running: boolean;
|
|
23
|
+
version?: string;
|
|
24
|
+
managedByUs: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if the OpenCode server is already running by hitting the health endpoint.
|
|
28
|
+
* Returns `{ healthy: true, version }` or `{ healthy: false }`.
|
|
29
|
+
*/
|
|
30
|
+
export declare function isServerRunning(baseUrl: string): Promise<{
|
|
31
|
+
healthy: boolean;
|
|
32
|
+
version?: string;
|
|
33
|
+
}>;
|
|
34
|
+
/**
|
|
35
|
+
* Attempt to find the `opencode` binary on the system.
|
|
36
|
+
* Returns the full path or null if not found.
|
|
37
|
+
*/
|
|
38
|
+
export declare function findBinary(): Promise<string | null>;
|
|
39
|
+
/**
|
|
40
|
+
* Get the installed OpenCode version. Returns null if not installed.
|
|
41
|
+
*/
|
|
42
|
+
export declare function getInstalledVersion(binaryPath: string): Promise<string | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Build installation instructions for when the binary is not found.
|
|
45
|
+
*/
|
|
46
|
+
export declare function getInstallInstructions(): string;
|
|
47
|
+
/**
|
|
48
|
+
* Spawn `opencode serve` as a background child process.
|
|
49
|
+
* Waits until the health endpoint responds or the timeout elapses.
|
|
50
|
+
*
|
|
51
|
+
* @throws Error if the binary is not found or the server fails to start.
|
|
52
|
+
*/
|
|
53
|
+
export declare function startServer(binaryPath: string, baseUrl: string, timeoutMs?: number): Promise<{
|
|
54
|
+
version?: string;
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Stop the managed child process (if we started one).
|
|
58
|
+
*/
|
|
59
|
+
export declare function stopServer(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Main entry point: ensure the OpenCode server is available.
|
|
62
|
+
*
|
|
63
|
+
* Returns a status object describing the result.
|
|
64
|
+
* Logs progress to stderr (MCP servers use stdout for the transport).
|
|
65
|
+
*
|
|
66
|
+
* @throws Error if the server cannot be reached and auto-start fails.
|
|
67
|
+
*/
|
|
68
|
+
export declare function ensureServer(opts: ServerManagerOptions): Promise<ServerStatus>;
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-detection and auto-start of the OpenCode headless server.
|
|
3
|
+
*
|
|
4
|
+
* This module handles:
|
|
5
|
+
* 1. Checking if `opencode serve` is already running (health check)
|
|
6
|
+
* 2. Finding the `opencode` binary on the system
|
|
7
|
+
* 3. Spawning `opencode serve` as a child process if needed
|
|
8
|
+
* 4. Graceful shutdown of the child process on exit
|
|
9
|
+
*
|
|
10
|
+
* Controlled via environment variables:
|
|
11
|
+
* OPENCODE_AUTO_SERVE - Set to "false" to disable auto-start (default: true)
|
|
12
|
+
* OPENCODE_BASE_URL - Base URL of the server (default: http://127.0.0.1:4096)
|
|
13
|
+
*/
|
|
14
|
+
import { execFile, spawn } from "node:child_process";
|
|
15
|
+
import { promisify } from "node:util";
|
|
16
|
+
const execFileAsync = promisify(execFile);
|
|
17
|
+
const DEFAULT_STARTUP_TIMEOUT_MS = 30_000;
|
|
18
|
+
const HEALTH_POLL_INTERVAL_MS = 500;
|
|
19
|
+
/** Singleton child process reference so we can clean up on exit. */
|
|
20
|
+
let managedProcess = null;
|
|
21
|
+
let shutdownRegistered = false;
|
|
22
|
+
/**
|
|
23
|
+
* Check if the OpenCode server is already running by hitting the health endpoint.
|
|
24
|
+
* Returns `{ healthy: true, version }` or `{ healthy: false }`.
|
|
25
|
+
*/
|
|
26
|
+
export async function isServerRunning(baseUrl) {
|
|
27
|
+
try {
|
|
28
|
+
const url = `${baseUrl.replace(/\/$/, "")}/global/health`;
|
|
29
|
+
const controller = new AbortController();
|
|
30
|
+
const timeout = setTimeout(() => controller.abort(), 3_000);
|
|
31
|
+
const res = await fetch(url, {
|
|
32
|
+
method: "GET",
|
|
33
|
+
signal: controller.signal,
|
|
34
|
+
});
|
|
35
|
+
clearTimeout(timeout);
|
|
36
|
+
if (res.ok) {
|
|
37
|
+
const body = (await res.json());
|
|
38
|
+
return {
|
|
39
|
+
healthy: body.healthy === true,
|
|
40
|
+
version: typeof body.version === "string" ? body.version : undefined,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return { healthy: false };
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return { healthy: false };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Attempt to find the `opencode` binary on the system.
|
|
51
|
+
* Returns the full path or null if not found.
|
|
52
|
+
*/
|
|
53
|
+
export async function findBinary() {
|
|
54
|
+
const cmd = process.platform === "win32" ? "where" : "which";
|
|
55
|
+
try {
|
|
56
|
+
const { stdout } = await execFileAsync(cmd, ["opencode"]);
|
|
57
|
+
const path = stdout.trim().split("\n")[0]?.trim();
|
|
58
|
+
return path || null;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get the installed OpenCode version. Returns null if not installed.
|
|
66
|
+
*/
|
|
67
|
+
export async function getInstalledVersion(binaryPath) {
|
|
68
|
+
try {
|
|
69
|
+
const { stdout } = await execFileAsync(binaryPath, ["--version"]);
|
|
70
|
+
return stdout.trim() || null;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Build installation instructions for when the binary is not found.
|
|
78
|
+
*/
|
|
79
|
+
export function getInstallInstructions() {
|
|
80
|
+
return [
|
|
81
|
+
"OpenCode is not installed on this system.",
|
|
82
|
+
"",
|
|
83
|
+
"Install it using one of these methods:",
|
|
84
|
+
" curl -fsSL https://opencode.ai/install | bash",
|
|
85
|
+
" npm i -g opencode-ai",
|
|
86
|
+
" brew install sst/tap/opencode",
|
|
87
|
+
"",
|
|
88
|
+
"For more options: https://opencode.ai",
|
|
89
|
+
"",
|
|
90
|
+
"After installing, restart the MCP server.",
|
|
91
|
+
"To disable auto-start: set OPENCODE_AUTO_SERVE=false",
|
|
92
|
+
].join("\n");
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Parse host and port from a base URL.
|
|
96
|
+
*/
|
|
97
|
+
function parseBaseUrl(baseUrl) {
|
|
98
|
+
const url = new URL(baseUrl);
|
|
99
|
+
return {
|
|
100
|
+
hostname: url.hostname,
|
|
101
|
+
port: url.port ? parseInt(url.port, 10) : 4096,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Poll the health endpoint until the server responds or timeout elapses.
|
|
106
|
+
*/
|
|
107
|
+
async function waitForHealthy(baseUrl, timeoutMs) {
|
|
108
|
+
const deadline = Date.now() + timeoutMs;
|
|
109
|
+
while (Date.now() < deadline) {
|
|
110
|
+
const { healthy } = await isServerRunning(baseUrl);
|
|
111
|
+
if (healthy)
|
|
112
|
+
return true;
|
|
113
|
+
await new Promise((r) => setTimeout(r, HEALTH_POLL_INTERVAL_MS));
|
|
114
|
+
}
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Register process-exit handlers to kill the managed child process.
|
|
119
|
+
* Only registers once even if called multiple times.
|
|
120
|
+
*/
|
|
121
|
+
function registerShutdownHandlers() {
|
|
122
|
+
if (shutdownRegistered)
|
|
123
|
+
return;
|
|
124
|
+
shutdownRegistered = true;
|
|
125
|
+
const cleanup = () => {
|
|
126
|
+
if (managedProcess && !managedProcess.killed) {
|
|
127
|
+
managedProcess.kill("SIGTERM");
|
|
128
|
+
managedProcess = null;
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
process.on("exit", cleanup);
|
|
132
|
+
process.on("SIGINT", () => {
|
|
133
|
+
cleanup();
|
|
134
|
+
process.exit(0);
|
|
135
|
+
});
|
|
136
|
+
process.on("SIGTERM", () => {
|
|
137
|
+
cleanup();
|
|
138
|
+
process.exit(0);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Spawn `opencode serve` as a background child process.
|
|
143
|
+
* Waits until the health endpoint responds or the timeout elapses.
|
|
144
|
+
*
|
|
145
|
+
* @throws Error if the binary is not found or the server fails to start.
|
|
146
|
+
*/
|
|
147
|
+
export async function startServer(binaryPath, baseUrl, timeoutMs = DEFAULT_STARTUP_TIMEOUT_MS) {
|
|
148
|
+
const { hostname, port } = parseBaseUrl(baseUrl);
|
|
149
|
+
const args = ["serve", "--port", String(port)];
|
|
150
|
+
if (hostname !== "127.0.0.1" && hostname !== "localhost") {
|
|
151
|
+
args.push("--hostname", hostname);
|
|
152
|
+
}
|
|
153
|
+
const child = spawn(binaryPath, args, {
|
|
154
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
155
|
+
detached: false,
|
|
156
|
+
});
|
|
157
|
+
managedProcess = child;
|
|
158
|
+
registerShutdownHandlers();
|
|
159
|
+
// Collect stderr for diagnostics if the process exits early.
|
|
160
|
+
let stderrOutput = "";
|
|
161
|
+
child.stderr?.on("data", (chunk) => {
|
|
162
|
+
stderrOutput += chunk.toString();
|
|
163
|
+
});
|
|
164
|
+
// Also watch stdout for the "listening" line (informational).
|
|
165
|
+
let stdoutOutput = "";
|
|
166
|
+
child.stdout?.on("data", (chunk) => {
|
|
167
|
+
stdoutOutput += chunk.toString();
|
|
168
|
+
});
|
|
169
|
+
// Reject early if the child process exits before becoming healthy.
|
|
170
|
+
const earlyExit = new Promise((_, reject) => {
|
|
171
|
+
child.on("error", (err) => {
|
|
172
|
+
reject(new Error(`Failed to start opencode serve: ${err.message}`));
|
|
173
|
+
});
|
|
174
|
+
child.on("exit", (code) => {
|
|
175
|
+
if (code !== null && code !== 0) {
|
|
176
|
+
reject(new Error(`opencode serve exited with code ${code}.\n${stderrOutput || stdoutOutput}`));
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
// Race: either the server becomes healthy or the child crashes.
|
|
181
|
+
const healthy = await Promise.race([
|
|
182
|
+
waitForHealthy(baseUrl, timeoutMs),
|
|
183
|
+
earlyExit.catch(() => false),
|
|
184
|
+
]);
|
|
185
|
+
if (!healthy) {
|
|
186
|
+
// Kill the child if it's still around.
|
|
187
|
+
if (!child.killed)
|
|
188
|
+
child.kill("SIGTERM");
|
|
189
|
+
managedProcess = null;
|
|
190
|
+
throw new Error(`opencode serve did not become healthy within ${timeoutMs / 1000}s.\n` +
|
|
191
|
+
`stderr: ${stderrOutput}\nstdout: ${stdoutOutput}`);
|
|
192
|
+
}
|
|
193
|
+
// Grab the version from the now-running server.
|
|
194
|
+
const status = await isServerRunning(baseUrl);
|
|
195
|
+
return { version: status.version };
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Stop the managed child process (if we started one).
|
|
199
|
+
*/
|
|
200
|
+
export function stopServer() {
|
|
201
|
+
if (managedProcess && !managedProcess.killed) {
|
|
202
|
+
managedProcess.kill("SIGTERM");
|
|
203
|
+
managedProcess = null;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Main entry point: ensure the OpenCode server is available.
|
|
208
|
+
*
|
|
209
|
+
* Returns a status object describing the result.
|
|
210
|
+
* Logs progress to stderr (MCP servers use stdout for the transport).
|
|
211
|
+
*
|
|
212
|
+
* @throws Error if the server cannot be reached and auto-start fails.
|
|
213
|
+
*/
|
|
214
|
+
export async function ensureServer(opts) {
|
|
215
|
+
const baseUrl = opts.baseUrl;
|
|
216
|
+
const autoServe = opts.autoServe !== false;
|
|
217
|
+
const timeoutMs = opts.startupTimeoutMs ?? DEFAULT_STARTUP_TIMEOUT_MS;
|
|
218
|
+
// Step 1: Check if server is already running.
|
|
219
|
+
const existing = await isServerRunning(baseUrl);
|
|
220
|
+
if (existing.healthy) {
|
|
221
|
+
console.error(`OpenCode server already running at ${baseUrl} (v${existing.version ?? "unknown"})`);
|
|
222
|
+
return {
|
|
223
|
+
running: true,
|
|
224
|
+
version: existing.version,
|
|
225
|
+
managedByUs: false,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
// If auto-serve is disabled, just report that the server isn't running.
|
|
229
|
+
if (!autoServe) {
|
|
230
|
+
throw new Error(`OpenCode server is not running at ${baseUrl} and OPENCODE_AUTO_SERVE=false.\n` +
|
|
231
|
+
`Start it manually: opencode serve`);
|
|
232
|
+
}
|
|
233
|
+
// Step 2: Find the opencode binary.
|
|
234
|
+
console.error("OpenCode server not detected, attempting auto-start...");
|
|
235
|
+
const binaryPath = await findBinary();
|
|
236
|
+
if (!binaryPath) {
|
|
237
|
+
throw new Error(getInstallInstructions());
|
|
238
|
+
}
|
|
239
|
+
const version = await getInstalledVersion(binaryPath);
|
|
240
|
+
console.error(`Found opencode binary at ${binaryPath}${version ? ` (${version})` : ""}`);
|
|
241
|
+
// Step 3: Start the server.
|
|
242
|
+
console.error(`Starting: opencode serve --port ${parseBaseUrl(baseUrl).port}`);
|
|
243
|
+
const result = await startServer(binaryPath, baseUrl, timeoutMs);
|
|
244
|
+
console.error(`OpenCode server started successfully (v${result.version ?? "unknown"})`);
|
|
245
|
+
return {
|
|
246
|
+
running: true,
|
|
247
|
+
version: result.version,
|
|
248
|
+
managedByUs: true,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=server-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../src/server-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/provider.js
CHANGED
|
@@ -1,11 +1,56 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { toolJson, toolError, toolResult, directoryParam } from "../helpers.js";
|
|
3
3
|
export function registerProviderTools(server, client) {
|
|
4
|
-
server.tool("opencode_provider_list", "List all providers
|
|
4
|
+
server.tool("opencode_provider_list", "List all configured providers with their connection status. Returns a compact summary — use opencode_provider_models to see models for a specific provider.", {
|
|
5
5
|
directory: directoryParam,
|
|
6
6
|
}, async ({ directory }) => {
|
|
7
7
|
try {
|
|
8
|
-
|
|
8
|
+
const providers = (await client.get("/provider", undefined, directory));
|
|
9
|
+
if (!providers || providers.length === 0) {
|
|
10
|
+
return toolResult("No providers configured.");
|
|
11
|
+
}
|
|
12
|
+
const lines = providers.map((p) => {
|
|
13
|
+
const id = p.id ?? p.name ?? "?";
|
|
14
|
+
const connected = p.connected ?? p.authenticated ?? p.status === "connected";
|
|
15
|
+
const models = p.models;
|
|
16
|
+
const modelCount = models?.length ?? 0;
|
|
17
|
+
const status = connected ? "connected" : "not configured";
|
|
18
|
+
return `- ${id}: ${status} (${modelCount} model${modelCount !== 1 ? "s" : ""})`;
|
|
19
|
+
});
|
|
20
|
+
return toolResult(`## Providers (${providers.length})\n${lines.join("\n")}\n\nUse \`opencode_provider_models\` with a provider ID to see its models.`);
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
return toolError(e);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
server.tool("opencode_provider_models", "List available models for a specific provider. Call opencode_provider_list first to see provider IDs.", {
|
|
27
|
+
providerId: z
|
|
28
|
+
.string()
|
|
29
|
+
.describe("Provider ID (e.g. 'anthropic', 'openrouter', 'google')"),
|
|
30
|
+
directory: directoryParam,
|
|
31
|
+
}, async ({ providerId, directory }) => {
|
|
32
|
+
try {
|
|
33
|
+
const providers = (await client.get("/provider", undefined, directory));
|
|
34
|
+
const provider = providers?.find((p) => (p.id ?? p.name) === providerId);
|
|
35
|
+
if (!provider) {
|
|
36
|
+
const available = providers
|
|
37
|
+
?.map((p) => p.id ?? p.name)
|
|
38
|
+
.join(", ");
|
|
39
|
+
return toolResult(`Provider "${providerId}" not found. Available: ${available || "none"}`, true);
|
|
40
|
+
}
|
|
41
|
+
const connected = provider.connected ??
|
|
42
|
+
provider.authenticated ??
|
|
43
|
+
provider.status === "connected";
|
|
44
|
+
const models = provider.models;
|
|
45
|
+
if (!models || models.length === 0) {
|
|
46
|
+
return toolResult(`Provider "${providerId}" (${connected ? "connected" : "NOT CONFIGURED"}) has no models available.`);
|
|
47
|
+
}
|
|
48
|
+
const lines = models.map((m) => {
|
|
49
|
+
const id = m.id ?? m.name ?? "?";
|
|
50
|
+
const name = m.name && m.name !== m.id ? ` — ${m.name}` : "";
|
|
51
|
+
return `- ${id}${name}`;
|
|
52
|
+
});
|
|
53
|
+
return toolResult(`## ${providerId} (${connected ? "connected" : "NOT CONFIGURED"}) — ${models.length} model${models.length !== 1 ? "s" : ""}\n${lines.join("\n")}`);
|
|
9
54
|
}
|
|
10
55
|
catch (e) {
|
|
11
56
|
return toolError(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/tools/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEhF,MAAM,UAAU,qBAAqB,CACnC,MAAiB,EACjB,MAAsB;IAEtB,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/tools/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/workflow.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* for an LLM to accomplish common tasks in a single call.
|
|
4
4
|
*/
|
|
5
5
|
import { z } from "zod";
|
|
6
|
-
import { formatMessageResponse, formatMessageList, formatSessionList, toolResult, toolError, directoryParam, } from "../helpers.js";
|
|
6
|
+
import { formatMessageResponse, formatMessageList, formatSessionList, analyzeMessageResponse, toolResult, toolError, directoryParam, } from "../helpers.js";
|
|
7
7
|
export function registerWorkflowTools(server, client) {
|
|
8
8
|
// ─── Setup / onboarding ───────────────────────────────────────────
|
|
9
9
|
server.tool("opencode_setup", "Check OpenCode status, provider configuration, and optionally initialize a project directory. Use this as the first step when starting work — it tells you what is ready and what still needs configuration.", {
|
|
@@ -28,17 +28,68 @@ export function registerWorkflowTools(server, client) {
|
|
|
28
28
|
try {
|
|
29
29
|
const providers = (await client.get("/provider", undefined, directory));
|
|
30
30
|
if (providers && providers.length > 0) {
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
// Also fetch auth methods for richer status info
|
|
32
|
+
let authMethods = null;
|
|
33
|
+
try {
|
|
34
|
+
authMethods = (await client.get("/provider/auth", undefined, directory));
|
|
35
|
+
}
|
|
36
|
+
catch { /* non-critical */ }
|
|
37
|
+
const lines = await Promise.all(providers.map(async (p) => {
|
|
38
|
+
const id = (p.id ?? p.name ?? "?");
|
|
33
39
|
const models = p.models;
|
|
34
40
|
const defaultModel = models && models.length > 0
|
|
35
41
|
? (models[0].id ?? models[0].name ?? "?")
|
|
36
42
|
: "no models";
|
|
37
43
|
// Check if provider has auth configured
|
|
38
44
|
const connected = p.connected ?? p.authenticated ?? p.status === "connected";
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
if (!connected) {
|
|
46
|
+
// Determine available auth methods
|
|
47
|
+
let authHint = "use opencode_auth_set to add API key";
|
|
48
|
+
if (authMethods && Array.isArray(authMethods[id])) {
|
|
49
|
+
const methods = authMethods[id]
|
|
50
|
+
.map((m) => m.type ?? m.id ?? "?")
|
|
51
|
+
.join(", ");
|
|
52
|
+
authHint = `available auth: ${methods}`;
|
|
53
|
+
}
|
|
54
|
+
return `- ${id}: NOT CONFIGURED — ${authHint}`;
|
|
55
|
+
}
|
|
56
|
+
// Provider says connected — verify with a lightweight probe
|
|
57
|
+
let verified = "connected";
|
|
58
|
+
try {
|
|
59
|
+
// Create a throwaway session, send a trivial prompt, check for content
|
|
60
|
+
const session = (await client.post("/session", {
|
|
61
|
+
title: `_probe_${id}`,
|
|
62
|
+
}, { directory }));
|
|
63
|
+
const sessionId = session.id;
|
|
64
|
+
const probeBody = {
|
|
65
|
+
parts: [{ type: "text", text: "Reply with OK" }],
|
|
66
|
+
};
|
|
67
|
+
if (models && models.length > 0) {
|
|
68
|
+
probeBody.model = {
|
|
69
|
+
providerID: id,
|
|
70
|
+
modelID: (models[0].id ?? models[0].name),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
const probeResponse = await client.post(`/session/${sessionId}/message`, probeBody, { directory });
|
|
74
|
+
const analysis = analyzeMessageResponse(probeResponse);
|
|
75
|
+
if (analysis.isEmpty || analysis.hasError) {
|
|
76
|
+
verified = "CONNECTED BUT NOT RESPONDING — API key may be invalid or expired";
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
verified = "WORKING";
|
|
80
|
+
}
|
|
81
|
+
// Clean up probe session
|
|
82
|
+
try {
|
|
83
|
+
await client.delete(`/session/${sessionId}`, undefined, directory);
|
|
84
|
+
}
|
|
85
|
+
catch { /* best effort */ }
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// If the probe throws (e.g. network error), just report connected
|
|
89
|
+
verified = "connected (could not verify)";
|
|
90
|
+
}
|
|
91
|
+
return `- ${id}: ${verified} (${defaultModel})`;
|
|
92
|
+
}));
|
|
42
93
|
sections.push(`## Providers\n${lines.join("\n")}`);
|
|
43
94
|
}
|
|
44
95
|
else {
|
|
@@ -119,9 +170,17 @@ export function registerWorkflowTools(server, client) {
|
|
|
119
170
|
if (system)
|
|
120
171
|
body.system = system;
|
|
121
172
|
const response = await client.post(`/session/${sessionId}/message`, body, { directory });
|
|
122
|
-
// 3.
|
|
173
|
+
// 3. Analyze for auth / empty response issues
|
|
174
|
+
const analysis = analyzeMessageResponse(response);
|
|
175
|
+
// 4. Format and return
|
|
123
176
|
const formatted = formatMessageResponse(response);
|
|
124
|
-
|
|
177
|
+
const parts = [`Session: ${sessionId}`];
|
|
178
|
+
if (formatted)
|
|
179
|
+
parts.push(formatted);
|
|
180
|
+
if (analysis.warning) {
|
|
181
|
+
parts.push(`\n--- WARNING ---\n${analysis.warning}`);
|
|
182
|
+
}
|
|
183
|
+
return toolResult(parts.join("\n\n"), analysis.hasError);
|
|
125
184
|
}
|
|
126
185
|
catch (e) {
|
|
127
186
|
return toolError(e);
|
|
@@ -146,8 +205,15 @@ export function registerWorkflowTools(server, client) {
|
|
|
146
205
|
if (agent)
|
|
147
206
|
body.agent = agent;
|
|
148
207
|
const response = await client.post(`/session/${sessionId}/message`, body, { directory });
|
|
208
|
+
const analysis = analyzeMessageResponse(response);
|
|
149
209
|
const formatted = formatMessageResponse(response);
|
|
150
|
-
|
|
210
|
+
const parts = [];
|
|
211
|
+
if (formatted)
|
|
212
|
+
parts.push(formatted);
|
|
213
|
+
if (analysis.warning) {
|
|
214
|
+
parts.push(`\n--- WARNING ---\n${analysis.warning}`);
|
|
215
|
+
}
|
|
216
|
+
return toolResult(parts.join("\n\n") || "Empty response.", analysis.hasError);
|
|
151
217
|
}
|
|
152
218
|
catch (e) {
|
|
153
219
|
return toolError(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/tools/workflow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/tools/workflow.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-mcp",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "MCP server that wraps the OpenCode AI headless server API —
|
|
3
|
+
"version": "1.4.0",
|
|
4
|
+
"description": "MCP server that wraps the OpenCode AI headless server API — 72 tools, 10 resources, 5 prompts with multi-project support for any MCP client",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|