Quick Start
1
Build an agent recipe
support-reply so the bridge can find it by name.2
Serve the recipe as an MCP server
3
Point your MCP client at it
How It Works
A recipe maps to MCP primitives: agent tools become MCP tools, agent instructions become MCP prompts, and the recipe config becomes MCP resources — all behind a deny-list gate.CLI Commands
Five commands work with recipes over MCP — one to discover, four to serve. Each works aspraisonai mcp <command> inside the full stack, or praisonai-mcp <command> standalone.
list-recipes
List every recipe the discovery layer can see — custom (~/.praison, ~/.config), project (./.praison), and bundled (agent_recipes). You need a recipe name before you can serve-recipe.
--source used to advertise local and all — neither ever worked, and the command itself raised TypeError on every invocation before PraisonAI PR #4962. custom, project, and package are the only accepted values.
Expected output (default, non-JSON):
--json):
Which recipe do I serve?
Pairlist-recipes with serve-recipe — discover first, then serve.
serve-recipe
Turn a recipe into a scoped MCP server.validate-recipe
Check a recipe is safe to host before serving it.
Warnings flag recipes with no tools or with shell/exec tools.
inspect-recipe
Show the tools, resources, and prompts a recipe would expose.
With no flags, it shows everything.
config-generate-recipe
Emit a client config block that points at this recipe.Since v4.6.154, recipe configs auto-pick the right entry point —
praisonai-mcp serve-recipe when the standalone binary is on your PATH, and praisonai mcp serve-recipe otherwise.Which Serve Command
Three commands serve MCP — pick the one that matches your scope.Allow / Deny Lists and Safe Mode
Safe mode is on by default and filters every tool through a deny-list before it reaches a client. Default denied tools (fromDEFAULT_DENIED_TOOLS in the adapter):
A tool is blocked when a denied name matches part of the tool name in either direction. Set an allow-list and only those tools pass; leave it empty and the deny-list applies.
Setting
tool_denylist replaces the defaults — copy in the entries you still want to block.Python API
Load a recipe and run it as an MCP server in three lines.RecipeMCPAdapter
RecipeMCPConfig
End-to-End Example
Go from an agent recipe to a working Claude Desktop tool in three steps.1
Write the recipe
2
Serve it
3
Generate the client config
- Standalone (praisonai-mcp)
- Umbrella (praisonai)
support-reply recipe appears as a tool.
Best Practices
Validate before you serve
Validate before you serve
Run
praisonai mcp validate-recipe <name> to catch missing tools or shell/exec warnings before a client connects.Inspect what you expose
Inspect what you expose
praisonai mcp inspect-recipe <name> shows the exact tools, resources, and prompts a client will see.Keep safe mode on
Keep safe mode on
Safe mode blocks destructive tools like
shell.exec and file.delete. Only use --no-safe-mode for recipes you fully trust.Prefer an allow-list for production
Prefer an allow-list for production
An allow-list exposes only the tools you name, which is tighter than extending the deny-list.
Related
PraisonAI MCP Server
Heavy MCP host reference and client setup.
praisonai-mcp Package
Package install and CLI guide.
The Three MCP Layers
Client vs light server vs heavy host.
Package Tiers
Where praisonai-mcp sits in the stack.

