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
-aflag 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
709c35947fc8e42dd82997c4a05dcbe088c54dc0c2716398022fbe4091cf0d61
|
|
| MD5 |
8ffbde867b24afc5073bd6352a4cd574
|
|
| BLAKE2b-256 |
fc4d9fe91425d86b9941bfe7c5217f441027c369529c51242087f13a08945b0d
|
Provenance
The following attestation bundles were made for perch_py-0.1.1.tar.gz:
Publisher:
publish.yml on danielremoquillo/perch-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
perch_py-0.1.1.tar.gz -
Subject digest:
709c35947fc8e42dd82997c4a05dcbe088c54dc0c2716398022fbe4091cf0d61 - Sigstore transparency entry: 234203430
- Sigstore integration time:
-
Permalink:
danielremoquillo/perch-py@5cc8ccc4f7bdb12795bba9e3555f2a3b40ebaf66 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/danielremoquillo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5cc8ccc4f7bdb12795bba9e3555f2a3b40ebaf66 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5662035e7fc71b60e298e4ab11891d3aa21be8101e1d299a9137baf76946289
|
|
| MD5 |
ee5fcbbf256e0d30fa91661cc65ba20a
|
|
| BLAKE2b-256 |
fda90a0ff55392a08f7139bd75340583f8c1db38410e5e974edb74de44d27aea
|
Provenance
The following attestation bundles were made for perch_py-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on danielremoquillo/perch-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
perch_py-0.1.1-py3-none-any.whl -
Subject digest:
e5662035e7fc71b60e298e4ab11891d3aa21be8101e1d299a9137baf76946289 - Sigstore transparency entry: 234203431
- Sigstore integration time:
-
Permalink:
danielremoquillo/perch-py@5cc8ccc4f7bdb12795bba9e3555f2a3b40ebaf66 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/danielremoquillo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5cc8ccc4f7bdb12795bba9e3555f2a3b40ebaf66 -
Trigger Event:
push
-
Statement type: