Skip to main content
Glama
PetPals KittyClaw MCP Server

PetPals KittyClaw MCP Server

by Danissimode

PetPals KittyClaw MCP Server

MCP Server for managing KittyClaw task board — a safe control plane for AI agents without direct repository, shell, or git access.

What This MCP Server Does

This MCP server allows ChatGPT to manage project workflows through KittyClaw (a kanban task board), while never gaining direct access to:

  • Shell commands

  • Git operations (commit, push, clone)

  • Repository file editing

  • Arbitrary HTTP requests

Architecture

ChatGPT (via OpenAI MCP Tunnel)
  ↓ MCP stdio
PetPals KittyClaw MCP Server
  ↓ REST API (localhost:5230)
KittyClaw Task Board
  ↓ tickets / comments / status / evidence
Agents (Codex / Cursor / Jules / etc.)
  ↓ branch / worktree / validation output
PetPals Repository
  ↓ completion report / evidence
KittyClaw Review → Verified → Human Approval → Done

ChatGPT acts as architect / planner / reviewer.
KittyClaw is the control plane + evidence hub.
Agents are executors.
Danil (you) is the owner / final approver.

Related MCP server: coordinaut

Installation

git clone https://github.com/Danissimode/petpals-kittyclaw-mcp.git
cd petpals-kittyclaw-mcp
npm install
npm run build

Configuration

Copy the example policy and edit it:

mkdir -p ~/.config/petpals-kittyclaw-mcp
cp config/policy.example.yaml ~/.config/petpals-kittyclaw-mcp/policy.yaml
# Edit allowed_projects, labels, transitions as needed

Set environment variables (optional):

export KITTYCLAW_BASE_URL=http://localhost:5230
export KITTYCLAW_AUTHOR=chatgpt
export PETPALS_KITTYCLAW_POLICY=~/.config/petpals-kittyclaw-mcp/policy.yaml
export PETPALS_KITTYCLAW_AUDIT_LOG=~/.local/share/petpals-kittyclaw-mcp/audit.jsonl

Running Locally (stdio)

npm run build
node dist/index.js

With custom config:

node dist/index.js --config ~/.config/petpals-kittyclaw-mcp/policy.yaml

Connecting via OpenAI Secure MCP Tunnel

1. Initialize

export CONTROL_PLANE_API_KEY="sk-..."
export CONTROL_PLANE_TUNNEL_ID="tun_..."
./scripts/openai-tunnel-init-stdio.sh

2. Doctor Check

./scripts/openai-tunnel-doctor.sh

3. Run Tunnel

./scripts/openai-tunnel-run.sh

4. Emergency Stop

./scripts/emergency-stop.sh

MCP Tools Exposed

Read-Only Board Tools

Tool

Description

kitty.projects.list

List allowed projects

kitty.project.get

Get project details

kitty.board.summary

Compact board snapshot

kitty.columns.list

List columns

kitty.members.list

List members

kitty.labels.list

List labels

kitty.tickets.list

List tickets (compact)

kitty.ticket.get

Get ticket details + comments

kitty.comments.list

List comments

kitty.mentions.get

Get mentions for handle

kitty.blockers.list

List blocked tickets

Mutating Ticket Tools

Tool

Description

kitty.ticket.create

Create ticket with author

kitty.ticket.add_comment

Add comment with author

kitty.ticket.update_description

Update description

kitty.ticket.assign_member

Assign member

kitty.ticket.set_priority

Set priority (Idea/NiceToHave/Required/Critical)

kitty.ticket.add_label

Add label

kitty.ticket.create_subtask

Create subtask

kitty.ticket.move_status

Move status (with policy enforcement)

PetPals Governance Tools

Tool

Description

petpals.create_task_contract

Attach structured Task Contract to ticket

petpals.attach_acceptance_criteria

Attach acceptance criteria

petpals.attach_validation_commands

Attach validation commands (text only)

petpals.request_agent_completion_report

Request structured completion report

petpals.review_completion_report

Review evidence and return verdict

petpals.mark_ready_for_human_review

Mark for human review

petpals.reject_completion

Reject completion with reason

petpals.mark_verified

Mark as verified (never Done)

audit.recent

Read recent audit events

Denied Tools (Explicitly Blocked)

These tools do not exist in this MCP server:

  • run_shell_command

  • git_commit, git_push

  • delete_ticket, delete_project

  • move_to_done_without_review

  • execute_agent_directly

  • edit_repo_files

  • apply_patch

  • generic_http_request

  • raw_openapi_call

Status Model

Backlog → Ready → InProgress → Review → ChangesRequested
                          ↓              ↓
                        Blocked      Verified → Done (owner only)
                                     ↓
                                  Rejected (owner only)
  • ChatGPT can move: Backlog↔Ready, InProgress→Blocked/Review, Review→ChangesRequested/Verified, ChangesRequested→InProgress

  • Agent can move: Ready→InProgress, InProgress→Review/Blocked

  • Owner can move: Verified→Done, Any→Rejected

Security Model

See docs/security-model.md for full details.

Key principles:

  • No shell execution

  • No git operations

  • No direct repo file access

  • No generic HTTP proxy

  • Comments are untrusted data (prompt injection protection)

  • Owner-only Done transition

  • Audit logging of all tool calls

  • Secret redaction in outputs and logs

Workflow

See docs/petpals-workflow.md for the full PetPals evidence workflow.

Tech Stack

  • Node.js 20+

  • TypeScript 5.7

  • @modelcontextprotocol/sdk (stdio transport)

  • zod (input validation)

  • undici / native fetch (HTTP client)

  • yaml (policy config)

  • vitest (testing)

License

MIT

Available Tools

28 tools
audit.recentA

Read the last N lines from the audit log

Inputs: lines.

kitty.blockers.listB

List blocked tickets for a project

Inputs: projectSlug (required).

kitty.board.summaryA

Get a board summary: columns, member count, label count, and open ticket count

Inputs: projectSlug (required).

kitty.columns.listC

List columns for a project

Inputs: projectSlug (required).

kitty.comments.listC

List comments for a ticket

Inputs: ticketId (required), projectSlug (required).

kitty.labels.listB

List labels for a project

Inputs: projectSlug (required).

kitty.members.listB

List members for a project

Inputs: projectSlug (required).

kitty.mentions.getA

Get tickets where a user handle is mentioned

Inputs: handle (required), projectSlug (required).

kitty.project.getB

Get a specific project

Inputs: projectSlug (required).

kitty.projects.listA

List all projects visible to the agent

Inputs: no named parameters.

kitty.ticket.add_commentB

Add a comment to a ticket

Inputs: body (required), ticketId (required), projectSlug (required).

kitty.ticket.add_labelB

Add a label to a ticket

Inputs: label (required), ticketId (required), projectSlug (required).

kitty.ticket.assign_memberB

Assign a member to a ticket

Inputs: assignee (required), ticketId (required), projectSlug (required).

kitty.ticket.createC

Create a new ticket in a project

Inputs: title (required), projectSlug (required), status, assignee, +3 more.

kitty.ticket.create_subtaskB

Create a subtask under a parent ticket

Inputs: title (required), parentId (required), projectSlug (required), description.

kitty.ticket.getB

Get a single ticket by ID

Inputs: ticketId (required), projectSlug (required).

kitty.ticket.move_statusB

Move a ticket to a new status

Inputs: status (required), ticketId (required), projectSlug (required).

kitty.ticket.set_priorityC

Set a ticket's priority

Inputs: priority (required), ticketId (required), projectSlug (required).

kitty.tickets.listA

List tickets for a project with optional filters

Inputs: projectSlug (required), label, limit, status, +2 more.

kitty.ticket.update_descriptionB

Update a ticket's description

Inputs: ticketId (required), description (required), projectSlug (required).

petpals.attach_acceptance_criteriaB

Attach acceptance criteria to a ticket description

Inputs: criteria (required), ticketId (required), projectSlug (required).

petpals.attach_validation_commandsC

Attach validation commands to a ticket description

Inputs: commands (required), ticketId (required), projectSlug (required).

petpals.create_task_contractC

Create a task contract and update the ticket description with it

Inputs: goal (required), reviewer (required), ticketId (required), projectSlug (required), +6 more.

petpals.mark_ready_for_human_reviewB

Mark a ticket as ready for human review by adding a comment

Inputs: ticketId (required), projectSlug (required), note.

petpals.mark_verifiedA

Mark a ticket as verified by adding a review comment. Does NOT move to Done.

Inputs: ticketId (required), projectSlug (required), note.

petpals.reject_completionA

Reject a ticket completion and add a comment with reasons

Inputs: reasons (required), ticketId (required), projectSlug (required).

petpals.request_agent_completion_reportC

Request a structured agent completion report by adding a comment template

Inputs: ticketId (required), projectSlug (required).

petpals.review_completion_reportB

Review a completion report for a ticket and return a verdict

Inputs: ticketId (required), projectSlug (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 28 tools

    Disambiguation5/5

    Each tool targets a specific resource and action, with clear names that leave little room for confusion. Even related tools like board.summary and columns.list are distinct because one provides aggregated counts and the other lists detailed items. No two tools appear to duplicate functionality.

    Naming Consistency3/5

    The kitty namespace follows a resource.action dot pattern, but uses plural for list and singular for get (e.g., projects.list vs project.get). The petpals namespace uses underscore verb_phrase (e.g., create_task_contract), and audit uses just a noun. This mixing of conventions across namespaces makes the overall naming less predictable.

    Tool Count2/5

    With 28 tools, the set exceeds the 25+ threshold for 'too many.' Though the scope is broad, many ticket update operations could be consolidated into a generic update tool, and the workflow tools add significant volume. The high count makes selection more difficult for agents.

    Completeness3/5

    The core ticket lifecycle is well covered: create, get, list, update description/status/priority/labels/assignment, add comments, and create subtasks. The petpals workflow also spans contract creation to verification. However, there are notable gaps such as no project creation/update, no ticket deletion or title updates, and no management of columns/members/labels beyond reading.

    Related MCP Connectors

    Related MCP Servers