Skip to main content
Concierge is a framework for building production agentic apps. Using protocols like MCP as the transport layer, Concierge adds the missing primitives: stages, transitions, and state. Define invocation order and guardrails so agents reliably navigate, interact, and transact with your services.

Quick Start

pip install concierge-sdk
concierge init my-store
cd my-store
python main.py
Or convert an existing MCP server:
# Before
from mcp.server.fastmcp import FastMCP
app = FastMCP("my-server")

# After
from concierge import Concierge
app = Concierge("my-server")

Core Concepts

Stages — Group tools, expose only what’s relevant:
app.stages = {
    "browse": ["search_products"],
    "cart": ["add_to_cart"],
    "checkout": ["checkout"],
}
Transitions — Define legal paths between stages:
app.transitions = {
    "browse": ["cart"],
    "cart": ["browse", "checkout"],
    "checkout": [],
}
State — Per-session storage:
app.set_state("cart", ["item1", "item2"])
cart = app.get_state("cart", [])

Example

from concierge import Concierge

app = Concierge("shopping")

@app.tool()
def search_products(query: str) -> dict:
    return {"products": [{"id": "p1", "name": "Laptop"}]}

@app.tool()
def add_to_cart(product_id: str) -> dict:
    cart = app.get_state("cart", [])
    cart.append(product_id)
    app.set_state("cart", cart)
    return {"cart": cart}

@app.tool()
def checkout(payment_method: str) -> dict:
    return {"order_id": "ORD-123"}

app.stages = {
    "browse": ["search_products"],
    "cart": ["add_to_cart"],
    "checkout": ["checkout"],
}

app.transitions = {
    "browse": ["cart"],
    "cart": ["browse", "checkout"],
    "checkout": [],
}