Skip to content

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

@jsprof26

Description

@jsprof26

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcliChanges that impact CLI functionalitygoPull requests that update go code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions