packkit-mcp
OfficialUse this server to discover, scaffold, preview, and upgrade modern projects via Packkit generators as MCP tools:
List generators (
list_generators): see supported JavaScript/TypeScript, Python, and Go targets, maturity, and capabilities.List presets (
list_presets): browse templates for a generator, optionally including experimental presets.Get schema (
get_generator_schema): inspect options, choices, and defaults for valid project configuration.Generate project (
generate_project): preview file tree, stack, and deployment contract, or write files to disk withwrite: true; supports presets, custom config,forceoverwrite, and output directory.Plan upgrade (
plan_upgrade): three-way diff between baseline, on-disk, and fresh generation to separate template changes from user edits without modifying files.Compose fullstack (
compose_fullstack): combine a static frontend and a service backend into a single fullstack repository.
Provides tools to scaffold and upgrade modern JavaScript projects (libraries, CLIs, services, SPAs, monorepos) using Packkit generators, including previewing file trees and planning upgrades.
Provides tools to scaffold and upgrade Python projects (libraries, CLIs) using Packkit generators, including previewing file trees and planning upgrades.
Provides tools to scaffold and upgrade modern TypeScript projects (libraries, CLIs, services, SPAs, monorepos) using Packkit generators, including previewing file trees and planning upgrades.
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., "@packkit-mcpList the available project generators"
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.
packkit-mcp
The Packkit Model Context Protocol server —
let AI agents (Claude Desktop, Cursor, VS Code, …) scaffold and upgrade modern
projects as a native tool. It fronts every Packkit generator through the
@packkit/core protocol, so the same
tools work across languages:
JavaScript / TypeScript —
create-packkit(libraries, CLIs, services, SPAs, monorepos)Python —
create-packkit-py(library, CLI, worker, HTTP service)Go —
create-packkit-go(library, CLI, worker, HTTP service)
It also exposes a compose_fullstack tool that stitches a static frontend + a service
backend from any generators into one fullstack repo (e.g. React + FastAPI).
Adding a language later is one registry.register(...) line here — the tools don't change.
Install
Point your MCP client at the published package (no install needed — npx fetches it):
{
"mcpServers": {
"packkit": {
"command": "npx",
"args": ["-y", "packkit-mcp"]
}
}
}Related MCP server: Photon MCP Server
Tools
Tool | What it does |
| List every generator (language target) with maturity + capabilities. Start here. |
| List a generator's presets (experimental hidden unless asked). |
| A generator's full option schema (options, choices, defaults). |
| Preview a project (file tree + stack + deployment contract), or |
| Baseline-aware three-way upgrade plan for an existing project — template changes vs your edits, writes nothing. |
The typical flow: list_generators → list_presets / get_generator_schema →
generate_project. All generation is protocol-driven; the server holds no
language-specific logic.
Develop
npm install
npm run smoke # boot the server over MCP stdio and exercise all three generators
npm run check # server.json sync check + smoke (what CI runs)Releases are automated with Changesets — see RELEASING.md.
License
MIT © DanMat
Available Tools
6 toolscompose_fullstackA
Compose two projects — a static frontend and an HTTP service backend, from ANY generators — into one fullstack repo (apps/web + apps/server) with a fullstack deployment contract and a docker-compose. Language-neutral: e.g. a "javascript" react-app frontend + a "python" py-service (or "go" go-service) backend. By default PREVIEWS; pass write: true to scaffold under /.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Repo name (folder when writing; README heading) | |
| force | No | Overwrite colliding existing files when writing | |
| write | No | Write files to disk (default false = preview only) | |
| backend | Yes | The service backend to generate: { generator, name, preset?, config? } | |
| frontend | Yes | The static frontend to generate: { generator, name, preset?, config? } | |
| directory | No | Parent directory to create <name>/ in when writing | |
| backendDir | No | Subdir for the backend (default apps/server) | |
| frontendDir | No | Subdir for the frontend (default apps/web) | |
| dockerCompose | No | Emit a root docker-compose.yml (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the critical default behavior: 'By default PREVIEWS; pass write: true to scaffold under <directory>/<name>.' It also mentions language neutrality and the output contract. It does not detail side effects like error handling, but this is adequate for a generator 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 three sentences with no filler, front-loading the core purpose and then adding practical details (preview default, destination). Every sentence contributes useful information.
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?
Despite having 9 parameters and no output schema, the description gives a comprehensive overview: composition purpose, generator-agnosticism, output structure, and write behavior. It could explain the preview output format more, but it is sufficiently complete for an agent to select and invoke the tool.
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 100%, providing a baseline of 3. The description adds value by clarifying the roles of frontend/backend types (static frontend, HTTP service backend), and by explaining the write/directory/name relationship and default subdirectories (apps/web, apps/server). This goes beyond the schema's individual parameter descriptions.
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 uses a specific verb 'Compose' with clear resources: a static frontend and an HTTP service backend, and specifies the output structure (apps/web + apps/server) along with a deployment contract and docker-compose. This distinguishes it from sibling tools like generate_project which likely handles single projects.
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 the tool: when composing two projects from any generators into a fullstack repo. It also explains the preview vs write mode. However, it does not explicitly name alternatives or state when not to use it, so it does not reach a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_projectA
Generate a project with a generator. By default it PREVIEWS (returns the file tree, stack summary and deployment contract without touching disk); pass write: true to scaffold the files under /. Existing files are never overwritten unless force is set. Call list_presets / get_generator_schema first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project/package name (also the folder name when writing) | |
| force | No | Overwrite colliding existing files when writing (default false) | |
| write | No | Write files to disk (default false = preview only) | |
| config | No | Options from get_generator_schema (overrides the preset) | |
| preset | No | A preset (or alias) from list_presets | |
| directory | No | Parent directory to create <name>/ in when writing (default: cwd) | |
| generator | Yes | Generator id from list_generators |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It clearly reveals that the default is a non-destructive preview, that write touches disk under '<directory>/<name>', and that existing files are never overwritten without force. This provides crucial side-effect information, though it does not cover auth requirements or error states.
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 three sentences, front-loaded with the main action, and covers all key behaviors (preview, write, force, prerequisite) without redundancy. Every sentence earns its place, making it easy to parse and act upon.
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?
The description addresses the main behaviors, including the preview return payload (file tree, stack summary, deployment contract). However, it does not state what the write mode returns or how config/preset interactions work in detail, leaving some gaps for a 7-param tool with no output schema. Overall it is mostly complete but could be slightly more thorough.
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 covers all 7 parameters at 100% coverage, so the baseline is 3. The description adds meaning by linking 'write: true' to the path '<directory>/<name>' and by indicating that preset/config come from list_presets/get_generator_schema. This enriches the schema with contextual usage that helps the agent choose and set parameters correctly.
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 identifies the action: 'Generate a project with a generator,' and distinguishes it from sibling tools that list or inspect (list_generators, get_generator_schema, plan_upgrade). It also states the key modes (preview vs write), leaving no ambiguity about the tool's purpose.
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 advises 'Call list_presets / get_generator_schema first,' establishing a clear sequence. It explains when to use the default preview mode versus write:true, but it does not discuss when to use plan_upgrade or other alternatives, leaving some room for guidance improvement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_generator_schemaA
Return a generator's full option schema — every option, its choices and defaults — as JSON. Read this before passing a config to generate_project so the options you set are valid for that generator.
| Name | Required | Description | Default |
|---|---|---|---|
| generator | Yes | Generator id from list_generators |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well by disclosing the tool returns a full option schema including choices and defaults, which implies a read-only operation. It also explains the intent (validation before generation), adding useful context beyond a simple 'get' statement.
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, front-loaded with the action 'Return', and contains no redundant words. The second sentence adds crucial usage context without bloating the text.
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 read-only tool with no output schema, the description fully covers return content (JSON with every option, choices, defaults), the input (generator), and the usage context (read before generate_project). It is complete within its scope.
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 sole parameter 'generator' is fully documented in the schema as 'Generator id from list_generators', giving 100% schema coverage. The description adds minimal new information about the parameter itself, only pointing to generate_project context, so the baseline of 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 uses the specific verb 'Return' and clearly specifies the resource: 'a generator's full option schema'. It distinguishes itself from siblings like list_generators by focusing on detailed schema retrieval and mentions the output format (JSON) with relevant details (options, choices, defaults).
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?
It explicitly advises reading this before passing a config to generate_project, providing strong when-to-use context. Though it doesn't state exclusions or alternatives, the prerequisite relationship is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_generatorsA
START HERE. Lists every Packkit generator (a language target — e.g. javascript, python, go) with its maturity and protocol capabilities. Pick the generator whose language matches what the user wants, then call list_presets and get_generator_schema for it before generating.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It effectively communicates that the tool returns a list of generators with maturity and protocol capabilities, which is the core output. While it does not explicitly state read-only behavior or mention prerequisites like authentication, the verb 'lists' reasonably implies a non-destructive operation, and the included details give valuable context for the agent.
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 three sentences, each earning its place: 'START HERE' front-loads urgency, the second sentence defines the tool, and the third provides actionable guidance. There is no unnecessary detail or repetition, making it highly concise and well-structured.
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?
Given the tool has no parameters and no output schema, the description fully compensates by stating exactly what will be returned (list of generators with maturity and protocol capabilities) and how to proceed. The workflow guidance to call list_presets and get_generator_schema makes the description complete for correct invocation and integration with sibling tools.
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 input schema has zero parameters, so per the guidelines, the baseline is 4. The description appropriately does not attempt to explain nonexistent parameters but does offer examples of generator languages (javascript, python, go) that hint at the nature of the data returned, slightly enriching the schema information.
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 that the tool lists every Packkit generator with maturity and protocol capabilities, using the specific verb 'lists' and resource 'every Packkit generator.' It also distinguishes itself from sibling tools by explicitly naming follow-up actions (call list_presets and get_generator_schema), which positions its unique role in the workflow.
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 explicit when-to-use guidance with 'START HERE' and instructs the agent to pick a generator based on language match, then call list_presets and get_generator_schema before generating. This clearly implies this is the entry point and directs the flow to sibling tools, offering strong usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presetsA
List the presets a generator offers (e.g. ts-lib, react-lib, node-service for javascript; py-lib, py-cli for python), each with a description and maturity. Experimental presets are hidden unless includeExperimental is true. Choose a preset that matches the shape the user wants instead of guessing.
| Name | Required | Description | Default |
|---|---|---|---|
| generator | Yes | Generator id from list_generators (e.g. "javascript", "python", "go") | |
| includeExperimental | No | Include experimental presets (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that experimental presets are hidden unless includeExperimental is true, and notes each preset comes with a description and maturity. This is useful behavioral context beyond a simple 'list' action.
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, information-dense sentence. It front-loads the core purpose and includes examples, behavioral notes, and usage guidance without unnecessary words.
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 listing tool with two documented parameters and no output schema, the description covers the essential details: what is returned (presets with description and maturity), the experimental filtering behavior, and how to choose a preset. It is complete enough for an agent to use correctly.
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 100%, so baseline is 3. The description adds examples of preset names and clarifies the output, but it does not significantly expand on the parameter meanings beyond what the schema already provides.
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 uses a specific verb and resource ('List the presets a generator offers'), provides concrete examples (e.g., ts-lib, py-cli), and clearly distinguishes from sibling tools like list_generators (which lists generators) and generate_project (which creates projects).
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 clear usage context: choose a preset that matches the user's desired shape instead of guessing. It implies this tool should be used after picking a generator and before generating. It does not explicitly name alternatives or exclusions, but the guidance is strong enough to merit a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_upgradeA
Plan a re-scaffold of an existing project against the current templates: a three-way diff (baseline vs on-disk vs freshly generated) that separates template changes from the user's own edits, so nothing is clobbered. Reports the plan only — it writes nothing. Requires a generator that supports baseline-upgrade.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name (as originally generated) | |
| config | No | The options it was generated with | |
| preset | No | The preset it was generated from (if any) | |
| directory | Yes | Path to the existing scaffolded project | |
| generator | Yes | Generator id from list_generators |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool writes nothing, explains the three-way diff approach, and notes the generator requirement. It does not describe failure modes or return format, but the core behavioral traits are covered.
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, front-loaded with purpose and then behavior and requirement. Every clause adds information without redundancy or filler.
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?
Given there is no output schema, the description should explain what the plan report looks like, but it only says 'Reports the plan only' without specifying the plan's structure or contents. This is a clear gap, though the tool's essential behavior is otherwise well described.
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%, so baseline is 3. The description adds extra meaning by stating the generator must support baseline-upgrade, which is a constraint beyond the schema's 'Generator id from list_generators' description.
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: planning a re-scaffold of an existing project. It distinguishes itself from siblings by specifying a three-way diff and explicitly noting it writes nothing, which separates it from generate_project and the list/schema tools.
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 clear context: use for re-scaffold planning, and it includes a prerequisite ('Requires a generator that supports baseline-upgrade'). However, it does not explicitly name alternatives or state exclusions, such as 'use generate_project to apply the changes'.
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.
2 tool updates
v1.2.0- Added
compose_fullstack - Changed
list_presets1 field changed- changed
Input schema / properties / generator / descriptionPrevious value: -"Generator id from list_generators (e.g. \"javascript\", \"python\")"New value: +"Generator id from list_generators (e.g. \"javascript\", \"python\", \"go\")"
5 tool updates
v0.3.1- First observed
generate_project - First observed
get_generator_schema - First observed
list_generators - First observed
list_presets - First observed
plan_upgrade
TDQS
Each tool targets a distinct phase: discovery (list_generators, list_presets), schema inspection (get_generator_schema), generation (generate_project), and upgrade planning (plan_upgrade). No overlapping purposes; the descriptions reinforce clear boundaries.
All tool names follow the verb_noun pattern consistently: list_generators, list_presets, get_generator_schema, generate_project, plan_upgrade. The naming style is uniform and predictable.
5 tools is well within the typical 3-15 range and perfectly scoped for a project generation/upgrade server. Each tool serves a necessary function, with no redundancy or bloat.
The core workflow (discover generators → inspect presets/schema → generate) is fully covered. A minor gap exists in that plan_upgrade only reports a plan without a corresponding tool to apply the upgrade, but the primary lifecycle is otherwise complete.
Maintenance
Related MCP Connectors
A registry of AI agent tools — MCP servers, APIs, CLIs, SDKs — kept current by automated ingestion.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
MCP-first toolbox for agents: KV storage, auth, queue, and utility tools. Free in early access.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn intelligent tool that automates the setup of new Model Context Protocol (MCP) server projects through a conversational interface. It generates project structures, technical specifications, and context-rich documentation to streamline AI-assisted development in TypeScript or Python.103MIT
- AlicenseNot gradedqualityBmaintenanceAutomatically generates MCP tools, CLI, and web UI from TypeScript methods, enabling AI agents and chat clients to interact with custom capabilities defined once.12098MIT
- AlicenseNot gradedqualityBmaintenanceMulti-project execution, memory, and collaboration platform for humans and AI agents, providing MCP tools for agents to read and write project state.2MIT

packkit-mcpofficial
AlicenseAqualityAmaintenanceLets AI agents scaffold modern npm packages, CLIs, HTTP services, and apps as a native tool. Three tools: inspect the full option/preset schema, preview the generated file tree for a config, and write the project to disk.33841MIT
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/PackkitLabs/packkit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server