summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--opencode.json6
-rw-r--r--packages/opencode/src/session/index.ts22
2 files changed, 20 insertions, 8 deletions
diff --git a/opencode.json b/opencode.json
index 57b940082..ff206980d 100644
--- a/opencode.json
+++ b/opencode.json
@@ -1,5 +1,11 @@
{
"$schema": "https://opencode.ai/config.json",
+ "mcp": {
+ "weather": {
+ "type": "local",
+ "command": ["opencode", "x", "@h1deya/mcp-server-weather"]
+ }
+ },
"experimental": {
"hook": {
"file_edited": {
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts
index 4c50d51d5..4e24fa517 100644
--- a/packages/opencode/src/session/index.ts
+++ b/packages/opencode/src/session/index.ts
@@ -496,14 +496,20 @@ export namespace Session {
const execute = item.execute
if (!execute) continue
item.execute = async (args, opts) => {
- try {
- const result = await execute(args, opts)
- return result.content
- .filter((x: any) => x.type === "text")
- .map((x: any) => x.text)
- .join("\n\n")
- } catch (e: any) {
- return e.toString()
+ const result = await execute(args, opts)
+ const output = result.content
+ .filter((x: any) => x.type === "text")
+ .map((x: any) => x.text)
+ .join("\n\n")
+
+ return {
+ output,
+ }
+ }
+ item.toModelOutput = (result) => {
+ return {
+ type: "text",
+ value: result.output,
}
}
tools[key] = item