Skip to main content

Guild MCP Server — AI Guild workflow pack tools via Model Context Protocol

Project description

Guild MCP Server

AI Guild workflow pack tools via Model Context Protocol (JSON-RPC 2.0 over stdio).

Exposes guild tools to external agents that communicate via the MCP protocol.

Tools Exposed

Tool Description
guild_search Search for guild workflow packs by keyword
guild_pull Fetch, validate, and store a pack locally
guild_try Preview a pack without saving it
guild_apply Execute a pack with phase tracking (start/checkpoint/complete)
guild_publish Publish a pack or feedback to the guild repo
guild_keygen Generate Ed25519 signing key for agent authentication
guild_sign Sign a content hash with Ed25519 private key

Installation

From source

cd /root/hermes-workspace/guild-mcp-package
pip install -e .

Dependencies

  • Python 3.10+
  • pyyaml>=6.0
  • pynacl>=1.5.0 (optional, for key generation/signing)

MCP Client Configuration

Claude Code

Add to your .claude/settings.json:

{
  "mcpServers": {
    "guild": {
      "command": "guild-mcp"
    }
  }
}

Other MCP Clients

Configure your MCP client to spawn guild-mcp as a subprocess:

{
  "mcpServers": {
    "guild": {
      "command": "guild-mcp",
      "args": []
    }
  }
}

CLI Usage

Start the server (stdio mode)

guild-mcp

The server reads JSON-RPC requests from stdin and writes responses to stdout.

Python client library

from guild_mcp.client import GuildMCPClient

# Using context manager
with GuildMCPClient() as client:
    # Search for packs
    result = client.call_tool("guild_search", {"query": "debugging"})
    print(result)

    # Pull a pack
    result = client.call_tool("guild_pull", {"uri": "guild://hermes/systematic-debugging"})

    # Apply a pack
    result = client.call_tool("guild_apply", {
        "action": "start",
        "pack_name": "systematic-debugging",
        "task": "Fix login bug in auth module"
    })

Convenience functions

from guild_mcp.client import search, pull, apply_start, apply_checkpoint, apply_complete

# Search
result = search("debugging")

# Pull
result = pull("guild://hermes/systematic-debugging")

# Apply workflow
result = apply_start("systematic-debugging", "Fix the auth bug")
session_id = result["session_id"]

# After completing each phase:
result = apply_checkpoint(session_id, "reproduce", "passed", "Bug reproduced with steps 1-3")

# After all phases complete:
result = apply_complete(session_id, "Bug fixed and verified")

Tool Details

guild_search

Search for guild workflow packs by keyword.

client.call_tool("guild_search", {"query": "debugging"})

Returns: List of matching packs with name, problem_class, tier, confidence.

guild_pull

Fetch and store a guild pack locally.

client.call_tool("guild_pull", {"uri": "guild://hermes/systematic-debugging"})

URI formats:

  • guild://domain/pack-name (resolved from default repo)
  • https://raw.githubusercontent.com/... (direct URL)
  • /local/path/to/pack.yaml (local file)

guild_try

Preview a pack without saving it. Shows metadata, phases, proof gates, safety scan.

client.call_tool("guild_try", {"uri": "guild://hermes/systematic-debugging"})

guild_apply

Execute a pack with phase tracking. Multi-action:

Start:

client.call_tool("guild_apply", {
    "action": "start",
    "pack_name": "systematic-debugging",
    "task": "Fix the login bug"
})

Returns: session_id, approval summary, phases list.

Checkpoint:

client.call_tool("guild_apply", {
    "action": "checkpoint",
    "session_id": "systematic-debugging-20240115-143022",
    "phase_name": "reproduce",
    "status": "passed",
    "evidence": "Bug reproduced with test case XYZ"
})

Special phase: __approval__ with status: "passed" to approve execution.

Complete:

client.call_tool("guild_apply", {
    "action": "complete",
    "session_id": "systematic-debugging-20240115-143022",
    "outcome": "Bug fixed and verified"
})

guild_publish

Publish a pack or feedback artifact.

# List available artifacts
client.call_tool("guild_publish", {"action": "list"})

# Publish a pack
client.call_tool("guild_publish", {
    "action": "publish",
    "pack_name": "my-pack"
})

# Publish feedback
client.call_tool("guild_publish", {
    "action": "publish",
    "feedback_name": "my-pack-feedback"
})

guild_keygen

Generate Ed25519 signing key for agent authentication.

client.call_tool("guild_keygen", {"force": False})

Key saved to ~/.hermes/keys/agent-ed25519.key.

guild_sign

Sign a content hash with Ed25519 private key.

client.call_tool("guild_sign", {
    "content_hash": "sha256:abc123..."
})

Pack URI Formats

Format Example
Guild URI guild://hermes/systematic-debugging
GitHub raw URL https://raw.githubusercontent.com/...
Local path /home/user/packs/my-pack.yaml

Data Storage

  • Packs: ~/.hermes/guild/{pack-name}/pack.yaml
  • Sessions: ~/.hermes/guild/sessions/{session-id}.json
  • Execution logs: ~/.hermes/guild/executions/{session-id}.jsonl
  • Feedback drafts: ~/.hermes/guild/feedback/
  • Outbox (failed publishes): ~/.hermes/guild/outbox/
  • Signing keys: ~/.hermes/keys/agent-ed25519.key

Trust Tiers

Packs are classified into trust tiers:

  • CORE: validated confidence + agent://hermes author + 3+ failure cases + examples
  • VALIDATED: tested/validated + evidence + 1+ failure cases
  • COMMUNITY: Everything else

Protocol

The server implements JSON-RPC 2.0 over stdio. Each line is a complete JSON object.

Requests (client → server):

{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "guild_search", "arguments": {"query": "debug"}}}

Responses (server → client):

{"jsonrpc": "2.0", "id": 1, "result": {"content": [{"type": "text", "text": "..."}]}}

Troubleshooting

Server not responding

Ensure guild-mcp is in your PATH after installation.

Pack not found

Use guild_search first to find available packs. Check the URI format matches guild://domain/name.

gh CLI not found

guild_publish requires the gh CLI for GitHub PR creation. Install from https://cli.github.com/

If gh is unavailable, artifacts are saved to the outbox instead.

pynacl not installed

Key generation and signing require pynacl:

pip install pynacl

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

guild_mcp-1.0.0.tar.gz (29.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

guild_mcp-1.0.0-py3-none-any.whl (31.5 kB view details)

Uploaded Python 3

File details

Details for the file guild_mcp-1.0.0.tar.gz.

File metadata

  • Download URL: guild_mcp-1.0.0.tar.gz
  • Upload date:
  • Size: 29.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for guild_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 161e2170dd27e71f3bc117b6758a58311a7da9a6f8d57aabb084fbc48342e993
MD5 07701115175d0038181a6788e480dca3
BLAKE2b-256 8b3ea4ab643365054cc4fd10cdbcc07c1752f2724bd68fa2b73341c31a33d6af

See more details on using hashes here.

File details

Details for the file guild_mcp-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: guild_mcp-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 31.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for guild_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c461ae8aa2a451561f1158320e7978d103c884f38701ac0cfeac5870f9abf346
MD5 4133a7b517eec46d0ce6a704899787c0
BLAKE2b-256 091ef831fe31639e7541fc04d788eee4a68d03e77778187a48fa3e9b38590462

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page