perch-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@perch-mcpMake me a Perch widget that shows my Steam friends online"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
perch-mcp
The MCP server for building Perch mods. Point the AI tool you already use at it and it gets what only Perch can give it: the display vocabulary, the docs, the builtin packages as worked examples, a package validator, and a way to run your package in Perch.
Nothing here calls an AI. Your own client (Claude Code, Claude Desktop, Cursor, …) does the thinking on your own account.
Install
Requires Node 18+.
Claude Code
claude mcp add perch -- npx -y github:hlpdev/perch-mcpClaude Desktop — claude_desktop_config.json:
{
"mcpServers": {
"perch": { "command": "npx", "args": ["-y", "github:hlpdev/perch-mcp"] }
}
}Cursor — .cursor/mcp.json (project) or the global one:
{
"mcpServers": {
"perch": { "command": "npx", "args": ["-y", "github:hlpdev/perch-mcp"] }
}
}Any other MCP client: run npx -y github:hlpdev/perch-mcp over stdio.
Related MCP server: Hanzo MCP
Tools
Tool | What it gives the model |
| The short authoring guide: package shape, Lua declarations, handlers, scopes, style. |
| The canonical vocabulary (api-spec.json): components and props, color roles, host functions, handlers, scopes, contexts. |
| The modding and API docs: list, read a page, or search. |
| The builtin packages (media, clock, weather, launcher, …) as complete examples. |
| Checks a package folder: manifest schema, entry, Lua syntax, widget declaration, component names. |
| Launches Perch with |
Try: "Make me a Perch widget that shows my Steam friends online, using the perch tools."
Updating the bundled content
content/ is generated from the Perch repos and committed:
npm run sync # needs ../perch, ../perch-studio, ../perch-site checked outAvailable Tools
6 toolsperch_docsPerch docsA
The modding and API documentation. Without page, lists pages (id, title, description); with page (e.g. "modding/your-first-widget", "api/host"), returns that page. search finds pages whose text mentions a term.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| search | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavior. It transparently describes the three output modes: a list of page metadata without 'page', a full page with 'page', and search results for 'search'. It does not mention error handling (e.g., invalid page paths) or edge cases like both parameters being set, which are minor gaps. Overall, it adds meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is remarkably concise, fitting all essential information into two sentences (semicolon-separated). It front-loads the core purpose ('modding and API documentation') and then efficiently details the three operation modes. There is zero filler, and every clause contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two optional parameters and no output schema, the description covers the necessary ground: it explains how parameters alter the response and what the list output includes (id, title, description). It lacks explicit handling of invalid input or interactions between 'page' and 'search', but these are edge cases. Given the complexity, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters itself. It does so effectively: 'page' changes the output from list to specific page, and 'search' triggers a text search. It even provides example page paths ('modding/your-first-widget', 'api/host'). This goes beyond the bare schema, though it doesn't cover all potential parameter combinations or validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides modding and API documentation, with specific behaviors: lists pages without 'page', returns a specific page with 'page', and searches with 'search'. It uses a clear verb-resource structure and distinguishes itself from a generic 'docs' title. However, it does not explicitly differentiate from sibling tools like perch_guide or perch_vocabulary, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage instructions for its own parameters (when to use 'page' vs. 'search', and the default list behavior). This implies the appropriate use cases. However, it does not explicitly state when to choose this tool over sibling tools (e.g., perch_guide) or provide any 'when not to use' exclusions. The guidance is self-contained but lacks comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perch_examplesPerch builtin packagesA
The builtin Perch packages (media, clock, weather, launcher, …) are complete worked examples of the vocabulary. Without id, lists them; with id, returns every file of that package.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It clearly states the two modes: without id, list packages; with id, return all files of that package. This is transparent about the core read-only behavior. It doesn't mention edge cases like invalid ids or output format, but it covers the primary behavior sufficiently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. It front-loads the purpose and concisely captures the conditional branching behavior. Every word earns its place, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema or annotations, the description covers the essential behavior. The only gap is the lack of detail on what 'returns every file' means (e.g., file paths, contents, or metadata) and how invalid ids are handled. These are minor for a tool this simple, so it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage for the only parameter `id`. The description fully compensates by explaining that absent `id` triggers a list operation, while present `id` returns the files of that package. This adds concrete semantic meaning beyond the raw string type in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'lists' builtin packages without an id and 'returns every file of that package' with an id. It identifies the resource (Perch packages) and the conditional behavior, distinguishing it from sibling tools like perch_guide or perch_docs by framing these as 'complete worked examples of the vocabulary.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use it to see the builtin examples, with or without an id. However, it does not explicitly contrast with sibling tools (e.g., when to use perch_examples vs perch_docs or perch_vocabulary), nor does it state any prerequisites or exclusions. Usage context is clear but not fully articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perch_guidePerch modding guideA
The short authoring guide for Perch mods: package shape, the Lua declarations (settings/widgets), handlers, scopes, style. Read this first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It implies the tool is informational (a guide), but does not explicitly state that it is read-only, returns text, or has no side effects. For a non-mutating guide, this is acceptable but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose ('short authoring guide for Perch mods') and then lists the covered topics. The instruction 'Read this first' is terse and actionable. There is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a guide tool with no parameters and no output schema, the description covers the main aspects an agent needs: what it is, what topics it covers, and its role as an entry point. It does not mention the return format, but for a text guide this is implied and not a critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description does not need to add parameter semantics, and it correctly avoids mentioning any. This is appropriate given the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it is a short authoring guide for Perch mods, and enumerates the specific topics it covers (package shape, Lua declarations, handlers, scopes, style). This is distinct from sibling tools like perch_vocabulary or perch_examples, and the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Read this first' gives an explicit usage instruction, indicating this should be the starting point before consulting other Perch-related tools. However, it does not explicitly name alternatives or conditions when not to use this tool, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perch_runRun a package in PerchA
Launches Perch with PERCH_MOD_DEV pointed at the folder that contains this package, so the widget appears in Settings → Layout → Widgets and on the notch. Windows only. Set PERCH_EXE if Perch is not installed through Steam.
| Name | Required | Description | Default |
|---|---|---|---|
| package_dir | Yes | Absolute path of the package folder |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It explains the side effect (launches an external application) and the effect on the widget, but does not describe what happens after launch (e.g., blocking vs. async, return values, error behavior). It also doesn't mention any required prerequisites beyond the environment variable. This is a moderate disclosure—adequate for a launcher but missing potential status/output details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundant words. The main action is front-loaded ('Launches Perch...'), followed by the effect, platform constraint, and environment variable tip. Every sentence carries meaningful information, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple launcher with one param and no output schema, the description covers the essential details: what it does, platform, environment setup, and expected effect. It lacks explicit mention of return behavior or post-launch outcomes, but given the simplicity and the absence of annotations, it is reasonably complete. Siblings are clearly different, so no additional disambiguation is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the single parameter (package_dir: 'Absolute path of the package folder') with 100% coverage, so the description adds little semantics beyond rephrasing it as 'folder that contains this package.' Since the schema fully documents the parameter, the description doesn't need to add more; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Launches Perch with PERCH_MOD_DEV pointed at the folder...' and names the specific resource (the package folder). It distinguishes the tool from siblings by focusing on execution (run) versus documentation/validation (perch_guide, perch_validate, etc.), and even describes the observable effect (widget appears in Settings → Layout → Widgets and on the notch). Purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to run a package) and includes important platform constraints ('Windows only') and environment setup ('Set PERCH_EXE if Perch is not installed through Steam'). It does not explicitly state when not to use it or mention alternatives (like perch_validate), but the sibling tools are clearly different in nature, so the usage intent is inferable without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perch_validateValidate a Perch packageA
Checks a package folder: mod.json against the manifest schema (id = folder name, no legacy widgets/settings keys, known scopes), the entry exists, every .lua parses, the entry declares a widget, and display types exist in the vocabulary. The definitive check is Perch's own loader — run the package (perch_run) and read Settings → Installed mods for the loader's verdict.
| Name | Required | Description | Default |
|---|---|---|---|
| package_dir | Yes | Absolute path of the package folder (the one holding mod.json) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the scope of validation (static checks only) and, importantly, its limitation (not authoritative), steering the agent to the definitive check. It does not explicitly state it is non-destructive, but 'checks' implies read-only, and the absence of any side-effect warning is acceptable for a validation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, with each sentence earning its place. It front-loads the core checks and ends with a practical routing note. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description does not mention what the tool returns (whether a boolean, list of errors, or some other verdict). An agent needs to interpret the result, and that gap makes the description not fully self-sufficient. However, the list of checks is thorough, so it partially covers the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the single parameter is fully documented with 'Absolute path of the package folder (the one holding mod.json)'. The description adds no extra semantics beyond that, so the baseline of 3 applies—adequate but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('checks'), a specific resource ('package folder'), and enumerates the exact validation dimensions (mod.json schema, entry existence, lua parsing, widget declaration, display types). It is also clearly distinguished from sibling perch_run, which the description explicitly contrasts as the definitive check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool versus the alternative: 'The definitive check is Perch's own loader — run the package (perch_run) and read Settings → Installed mods for the loader's verdict.' This tells the agent that this validation is preliminary and gives a concrete condition for preferring the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
perch_vocabularyPerch display vocabularyA
The canonical vocabulary (api-spec.json): display components and their props, shared props, color roles, host functions, handlers, scopes, contexts. Pass part to fetch one section.
| Name | Required | Description | Default |
|---|---|---|---|
| part | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the disclosure burden. It implies a read-only fetch operation and lists the sections, but it does not explicitly state that it is non-destructive, nor does it mention default behavior when 'part' is omitted, error handling, or return format. The description covers the basic behavior but leaves some details unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence. It front-loads the core purpose and then explains the parameter. No wasted words, and it covers the essential information needed to invoke the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fetch tool with one optional parameter, the description provides the main content areas and the parameter role. However, it does not specify what happens when 'part' is not provided (e.g., returns all sections) or the structure of the returned data. Given the absence of annotations and output schema, a bit more detail would round out the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only an enum for 'part' with no property description (0% coverage). The description adds meaning by explaining that passing 'part' fetches one section, clarifying the parameter's role. This goes beyond the raw schema, though it does not list the possible values (already in the enum) or elaborate on the default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it is the canonical vocabulary (api-spec.json) covering display components, props, colors, host functions, handlers, scopes, and contexts. It names the specific resource and the content types, and it stands apart from sibling tools like perch_guide or perch_docs, which serve different reference needs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when you need vocabulary definitions) and mentions the 'part' parameter for fetching a section. However, it does not explicitly state when not to use it or how it relates to alternatives such as perch_docs or perch_guide, leaving the choice somewhat implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
perch_docs - First observed
perch_examples - First observed
perch_guide - First observed
perch_run - First observed
perch_validate - First observed
perch_vocabulary
TDQS
Each tool addresses a distinctly different aspect of mod development: learning (guide), reference (vocabulary), documentation (docs), examples (examples), verification (validate), and execution (run). No two tools have overlapping purposes, eliminating ambiguity.
All tools follow the same lower_snake_case pattern with the 'perch_' prefix, and the second part is a clear noun or verb. The style is uniform, making the toolset predictable and easy to navigate.
With six tools, the set is compact and every tool has a clear role in the development workflow. This is within the ideal range and each tool earns its place without redundancy.
The tools cover the complete mod authoring loop: guidance, API reference, documentation, examples, validation, and runtime testing. No critical gaps are apparent for the stated purpose of developing Perch mods.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Access and maintain design system docs, tokens, components, skills, and contexts across any project.
Build, deploy, and operate hosted web apps on VibeKit (vibekit.bot) from any MCP client.
Manage brainCloud apps, cloud code, hooks and servers; API lookups to help generate client code.
- NebllaOAuthcom.neblla
Build and publish multiplayer apps and games on Neblla: scaffold, edit files, ship to the gallery.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides comprehensive access to MCP documentation through structured guides, full-text search, and interactive development workflows for building servers and clients.337MIT
- AlicenseCqualityDmaintenanceEnables access to Hanzo APIs and Platform capabilities via MCP, along with development tools for managing and improving projects.71MIT
- AlicenseAqualityBmaintenanceAn MCP server that scaffolds runnable Roku channels from a validated AppSpec, zips them, and optionally sideloads to a Roku device.511MIT
- AlicenseNot gradedqualityCmaintenanceSwiss-Army developer toolkit, stdio inspector, scaffolding CLI & built-in suite of developer tools for Model Context Protocol (MCP) servers.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hlpdev/perch-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server