Top AI Repos โ open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
๐ Universal SDK for building next-gen MCP servers
| Date | Stars |
|---|---|
| 2026-07-24 | 534 |
| 2026-07-25 | 534 |
| 2026-07-28 | 534 |
| 2026-07-30 | 534 |
| 2026-08-06 | 533 |
Today
-1 stars today
This week
-1 stars this week
This month
โ stars this month
Momentum
0.0
growth rate 0.00%/day
<div align="center">
<!-- omit in toc -->
<picture>
<img width="900" alt="Concierge Banner" src="assets/concierge-banner.png" />
</picture>
# Concierge AI ๐
<strong>The fabric for reliable MCP servers and AI applications.</strong>
[](https://docs.getconcierge.app)
[](https://discord.gg/Y3ayRa33Pg)
[](https://pypi.org/project/concierge-sdk)
[](https://pypi.org/project/concierge-sdk)
</div>
The [Model Context Protocol](https://modelcontextprotocol.io) (MCP) is a standardized way to connect AI agents to tools. Instead of exposing a flat list of every tool on every request, Concierge progressively discloses only what's relevant. Concierge guarantees deterministic results and reliable tool invocation.
## Getting Started
> [!NOTE]
> Concierge requires Python 3.9+. We recommend installing with [uv](https://docs.astral.sh/uv/) for faster dependency resolution, but pip works just as well.
```bash
pip install concierge-sdk
```
**Scaffold a new project:**
```bash
concierge init my-store # Generate a ready to run project
cd my-store # Enter project
python main.py # Start the MCP server
```
**Or wrap an existing MCP server** two lines, nothing else changes:
```python
# Before
from mcp.server.fastmcp import FastMCP
app = FastMCP("my-server")
# After: just wrap it
from concierge import Concierge
app = Concierge(FastMCP("my-server"))
```
> [!TIP]
> Concierge works at the MCP protocol level. It dynamically changes which tools are returned by `tools/list` based on the current workflow step. The agent and client don't need to know Concierge exists, they just see fewer, more relevant tools at each point.
<br />
```python
from concierge import Concierge
from mcp.server.fastmcp import FastMCP
app = Concierge(FastMCP("my-server"))
# Your @app.tool() decorators stay exactly the same.
# You can additionally add app.stages and app.transitions.
```
> [!NOTE]
> The wrap and go gives you progressive tool disclosure immediately. Add `app.stages` and `app.transitions` when you want full workflow control, no code changes required.
<br />
## Usage
### Group tools into steps
Instead of exposing everything at once, group related tools together. Only the current step's tools are visible to the agent:
```python
app.stages = {
"browse": ["search_products", "view_product"],
"cart": ["add_to_cart", "remove_from_cart", "view_cart"],
"checkout": ["apply_coupon", "complete_purchase"],
}
```
### Define transitions
Control which steps can follow which. The agent moves forward (or backward) only along paths you allow:
```python
app.transitions = {
"browse": ["cart"], # Can only move to cart
"cart": ["browse", "checkout"], # Can go back or proceed
"checkout": [], # Terminal step
}
```
<details>
<summary><b>Share state between steps</b></summary>
<br>
Pass data between workflow steps without round-tripping through the LLM. State is session-scoped and works across distributed replicas:
```python
# In the "browse" step - save a selection
app.set_state("selected_product", {"id": "p1", "name": "Laptop"})
# In the "cart" step retrieve it directly
product = app.get_state("selected_product")
```
</details>
<details>
<summary><b>Scale with semantic search</b></summary>
<br>
When you have hundreds of tools, enable semantic search to collapse your entire API behind two meta-tools:
```python
from concierge import Concierge, Config, ProviderType
app = Concierge("large-api", config=Config(
provider_type=ProviderType.SEARCH,
max_results=5,
))
```
No matter how many tools you register, the agent only ever sees:
```
search_tools(query: stExcerpt of 7,472 characters
Read on GitHubArnav Balyan ยท Uber
271
10
3
1
Would you bet a product on this? Bounded 0โ100 and slow moving.
matched fp:8e14f060dbfb566f, topic:agents, topic:agentic-ai, topic:agentic-workflow
matched fp:8e14f060dbfb566f, topic:mcp, topic:mcp-server, readme:model context protocol
matched fp:8e14f060dbfb566f, topic:workflow-automation, topic:automation, readme:no-code