Skip to main content

Perch is a developer-friendly CLI tool for scaffolding MCP HexLayer Architecture projects using clean structure and modular design.

Project description

Perch - MCP HexLayer Scaffolding CLI

Perch is a developer-friendly command-line tool for scaffolding and managing MCP HexLayer Architecture server projects.

It helps you build modular, maintainable MCP servers using clean structure and naming conventions based on CGUDL (Create, Get, Update, Delete, List).


Features

  • Scaffold full MCP HexLayer projects
  • Add integrations, tools, services, and schemas
  • -a flag to auto-generate full service/schema stack
  • Works with uv
  • Built with Typer

Installation (Local Development)

uv pip install -e .

Then:

perch --help

Usage

Create a New Project

perch my-mcp-server

With an integration:

perch my-mcp-server --integration github

After Init

cd my-mcp-server
uv venv activate
python main.py

Add Commands

Add Integration

perch add integration github

Creates:

integrations/github/
interfaces/tools/github/
interfaces/resources/github/
schemas/github/
services/github/

Add Tool

perch add tool github user

Creates:

# interfaces/tools/github/user.py
def create_user_tool():
    pass

With -a flag:

perch add tool -a github user

Also creates:

# services/github/user.py
def create_user():
    pass

# schemas/github/user.py
from pydantic import BaseModel

class CreateUserInputSchema(BaseModel):
    pass

class UserResponseSchema(BaseModel):
    pass

Add Schema

perch add schema github issue

Creates:

from pydantic import BaseModel

class CreateIssueInputSchema(BaseModel):
    pass

class IssueResponseSchema(BaseModel):
    pass

Add Service

perch add service github user

Creates:

# services/github/user.py
def create_user():
    pass

Example Project Structure

my-mcp-server/
├── main.py
├── core/
│   ├── server.py
│   └── data/
│       └── tool.py
├── config/
├── integrations/
│   └── github/
├── interfaces/
│   ├── tools/
│   │   └── github/
│   ├── resources/
│   │   └── github/
│   └── prompts/
├── schemas/
│   └── github/
├── services/
│   └── github/
└── .venv/

Development Notes

Uninstall

uv pip uninstall perch-py

Reinstall After Edits

uv pip install -e .

About the Name

Perch represents a clean, elevated perspective — just like how clean architecture gives you clarity and control over your system layers.


License

This project is licensed under the MIT License. See LICENSE for details.

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

perch_py-0.1.1.tar.gz (31.6 kB view details)

Uploaded Source

Built Distribution

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

perch_py-0.1.1-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file perch_py-0.1.1.tar.gz.

File metadata

  • Download URL: perch_py-0.1.1.tar.gz
  • Upload date:
  • Size: 31.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for perch_py-0.1.1.tar.gz
Algorithm Hash digest
SHA256 709c35947fc8e42dd82997c4a05dcbe088c54dc0c2716398022fbe4091cf0d61
MD5 8ffbde867b24afc5073bd6352a4cd574
BLAKE2b-256 fc4d9fe91425d86b9941bfe7c5217f441027c369529c51242087f13a08945b0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for perch_py-0.1.1.tar.gz:

Publisher: publish.yml on danielremoquillo/perch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file perch_py-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: perch_py-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for perch_py-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e5662035e7fc71b60e298e4ab11891d3aa21be8101e1d299a9137baf76946289
MD5 ee5fcbbf256e0d30fa91661cc65ba20a
BLAKE2b-256 fda90a0ff55392a08f7139bd75340583f8c1db38410e5e974edb74de44d27aea

See more details on using hashes here.

Provenance

The following attestation bundles were made for perch_py-0.1.1-py3-none-any.whl:

Publisher: publish.yml on danielremoquillo/perch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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