coding

Concierge: Stateful Workflows for MCP Tool Agents

Concierge provides a stateful workflow framework for Model Context Protocol tool agents, enabling complex multi-step task automation with state management and

Someone built a fix for MCP agents calling tools in the wrong order (like trying to checkout before adding items to cart).

The problem: When you load 50+ MCP tools, agents see everything at once and make dumb mistakes. Adding “please do X before Y” to system prompts barely helps.

Concierge turns MCPs into stateful workflows where agents only see relevant tools for each stage:


app = Concierge(FastMCP("my-server"))

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

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

Now the agent literally can’t call pay() until it’s in the checkout stage. Works with existing MCPs, handles thousands of tools with semantic search.

Check it out: https://github.com/concierge-hq/concierge

Free hosting option included in the repo.