stacklok / stacklok/toolhive

awesome-agent-skills-mcp fails in ToolHive: list_skills unusable due to missing git + response format mismatch

Open
#4,301 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug cli go
Dominant language
Go
Stars
2.2k
Forks
300
Avg merge
1d 15h
Merged PRs (30d)
184

Description

Summary

When [awesome-agent-skills-mcp](https://github.com/shadowrootdev/awesome-agent-skills-mcp) is launched by ToolHive as a npm converted to Docker container, list_skills fails to provide usable results. The container cannot sync the skills repo because git is not installed (spawn git ENOENT), and the tool response format is JSON-in-text rather than structured output matching the declared outputSchema.

Environment

  • OS: Windows 11 (10.0.26200)
  • Docker Desktop: 4.65.0
  • Docker Engine: 29.2.1

Steps to Reproduce

  1. Start ToolHive with awesome-agent-skills-mcp enabled (containerized).
  2. Call refresh_skills or list_skills through ToolHive.
  3. Inspect container logs (docker logs <container-id>).

Actual Behavior

  • Container logs show git sync failure: Failed to initialize git repository: GitError: Error: spawn git ENOENT
  • Attempted command includes clone of: https://github.com/VoltAgent/awesome-agent-skills.git
  • list_skills returns empty data ({"skills":[],"total":0}) when sync failed.
  • ToolHive reports list failure / structured output mismatch (tool has outputSchema but response is not treated as structured).

Expected Behavior

  • refresh_skills should successfully clone/pull the skills repository.
  • list_skills should return a populated, schema-valid structured object (not JSON serialized into a text field).
  • ToolHive should be able to parse the response without structured-content errors.

Evidence (from container)

Git missing in container:
docker exec <container-id> git --version -> executable not found

Relevant log lines:

  • Failed to initialize git repository: GitError: Error: spawn git ENOENT
  • Cloning repository from https://github.com/VoltAgent/awesome-agent-skills.git...
  • Repository sync failed: Failed to initialize: Error: spawn git ENOENT

Tool response observed:
{"skills":[],"total":0} via content[0].text

Suspected Root Causes

  1. Container image missing git
    • Repo sync cannot run, so skills registry stays empty.
  2. Tool output format mismatch
    • list_skills declares an outputSchema object but returns JSON string inside content: [{ type: "text", text: JSON.stringify(...) }], which ToolHive may not accept as structured output.

Proposed Fix

  • Image fix: Include git in the awesome-agent-skills-mcp container image (persistent fix; runtime install is not durable).
  • Response fix: Return schema-compatible structured output for tool calls (or ToolHive-compatible structured content), rather than JSON string embedded in text.
  • Validation guard: Ensure list_skills always returns schema-safe fields even when sync fails.

Impact

  • awesome-agent-skills-mcp is effectively non-functional in ToolHive for listing/refreshing skills in fresh containers.
  • End users cannot discover or use skills reliably.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the container image definition and the list_skills and refresh_skills entry points mentioned in the report. Reproduce with the documented Docker commands and inspect the logs and content[0].text response. Done means repository sync works in a fresh container and list_skills returns populated, schema-valid structured output, including when sync fails.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, git, nodejs
Domain
api, devops
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.