From 824ab88fe37263bb24d1329c0902c82eb80c71ab Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Sat, 7 Mar 2026 17:40:35 +0100 Subject: [PATCH] anvilmcp: handle args passed as JSON-encoded string; fix team-templates install path - Parse args as JSON string fallback when LLM passes args incorrectly - Update SKILLS_PROMPT and agent docs to use unquoted args syntax - Install team-templates under $INSTALL_PATH/Teams instead of hardcoded $HOME/bin/Teams Co-Authored-By: Claude Sonnet 4.6 --- SKILLS_PROMPT.md | 4 ++-- claude/agent/anvillm-agent.md | 4 ++-- cmd/anvilmcp/main.go | 11 +++++++++++ mkfile | 6 +++--- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/SKILLS_PROMPT.md b/SKILLS_PROMPT.md index 9365b2e..9cac9db 100644 --- a/SKILLS_PROMPT.md +++ b/SKILLS_PROMPT.md @@ -7,14 +7,14 @@ ```bash Tool: execute_code tool: discover_skill.sh -args: [""] +args: [keyword] ``` 3. Load relevant skill files: ```bash Tool: execute_code tool: load_skill.sh -args: [""] +args: [skill-name] ``` **Common capability mappings:** diff --git a/claude/agent/anvillm-agent.md b/claude/agent/anvillm-agent.md index a72c3da..e27776e 100644 --- a/claude/agent/anvillm-agent.md +++ b/claude/agent/anvillm-agent.md @@ -39,14 +39,14 @@ If a step succeeded, do not announce it — the tool output is the confirmation. ```bash Tool: execute_code tool: discover_skill.sh -args: [""] +args: [keyword] ``` 3. Load relevant skill files: ```bash Tool: execute_code tool: load_skill.sh -args: [""] +args: [skill-name] ``` **Common capability mappings:** diff --git a/cmd/anvilmcp/main.go b/cmd/anvilmcp/main.go index ffa4b23..23f99cf 100644 --- a/cmd/anvilmcp/main.go +++ b/cmd/anvilmcp/main.go @@ -135,6 +135,12 @@ func handleToolCall(req MCPRequest) { toolArgs = append(toolArgs, s) } } + } else if argsStr, ok := params.Arguments["args"].(string); ok { + // LLM passed args as a JSON-encoded string instead of an array + var parsed []string + if err := json.Unmarshal([]byte(argsStr), &parsed); err == nil { + toolArgs = parsed + } } code, _ := params.Arguments["code"].(string) language, _ := params.Arguments["language"].(string) @@ -156,6 +162,11 @@ func handleToolCall(req MCPRequest) { step.Args = append(step.Args, s) } } + } else if argsStr, ok := stepMap["args"].(string); ok { + var parsed []string + if err := json.Unmarshal([]byte(argsStr), &parsed); err == nil { + step.Args = parsed + } } pipeSteps = append(pipeSteps, step) } diff --git a/mkfile b/mkfile index 563c0e7..fe22beb 100644 --- a/mkfile +++ b/mkfile @@ -21,9 +21,9 @@ build:V: chmod 0755 $INSTALL_PATH/9p-read-inbox cp scripts/anvilspawn $INSTALL_PATH/anvilspawn chmod 0755 $INSTALL_PATH/anvilspawn - mkdir -p $HOME/bin/Teams - cp -f team-templates/* $HOME/bin/Teams/ - chmod 0755 $HOME/bin/Teams/* + mkdir -p $INSTALL_PATH/Teams + cp -f team-templates/* $INSTALL_PATH/Teams/ + chmod 0755 $INSTALL_PATH/Teams/* mkdir -p $HOME/.config/anvillm cp -rf cfg/* $HOME/.config/anvillm/ mkdir -p $HOME/.config/anvillm/skills