resto-mcp
by aristochatti
README.md
# resto-mcp ๐
MCP server that searches restaurants via **Google Places** and returns an interactive **mcp-ui** carousel. Streamable HTTP transport โ ready for Mistral Le Chat / Alpic.
Python 3.14 ยท [FastMCP](https://github.com/modelcontextprotocol/python-sdk) ยท [uv](https://docs.astral.sh/uv/)
Live demo -> [https://www.youtube.com/watch?v=2k0QMIKgt1g](https://www.youtube.com/watch?v=2r-ixamvtco)
## Run locally
```bash
uv python install 3.14
uv sync --locked
cp .env.example .env # add your GOOGLE_MAPS_API_KEY
uv run main.py # POST http://localhost:3000/mcp
```
Enable **Places API (New)** on your Google Cloud project for the key.
## Test with Mistral Vibe locally
Use ngrok to expose your local server for testing in Mistral Le Chat:
```bash
# One-time setup: authenticate ngrok (requires free account)
ngrok config add-authtoken <YOUR_AUTHTOKEN> # Get it from https://dashboard.ngrok.com/get-started/your-authtoken
# Terminal 1: Start your server
MCP_HTTP_PORT=8001 uv run main.py
# Terminal 2: Expose it via ngrok
ngrok http 8001
# Copy the forwarding URL (e.g., https://abc123.ngrok.io)
```
In Mistral Le Chat:
- Connectors โ Add MCP โ paste `https://abc123.ngrok.io/mcp`
- Ask: *"Where should I eat in Paris?"* โ carousel renders
> Free ngrok accounts get a new random subdomain each time. Use `ngrok http --subdomain=resto-mcp 8001` if you have a paid plan to keep a fixed URL.
---
## Run automated tests
```bash
uv run pytest
```
## Deploy on Alpic
1. Push this repo to GitHub (private is fine).
2. New project on Alpic โ connect the repo โ select the **Python 3.14** runtime.
3. Install: `uv sync --locked` ยท Start: `uv run main.py` (also in `alpic.json`).
4. Env var: `GOOGLE_MAPS_API_KEY`
5. Alpic gives you a public URL โ your MCP endpoint is `https://<that-url>/mcp`
> Note: `MCP_ALLOWED_HOSTS` is left unset on purpose. FastMCP ships with
> DNS-rebinding protection restricted to localhost, which would reject every
> request once the server sits behind a public domain. See `.env.example`.
## Add to Mistral Le Chat
Connectors โ add MCP โ paste the `https://<alpic-url>/mcp` endpoint.
Then ask: *"Where should I eat in Paris 11e?"* โ the carousel renders automatically.
## Team
- Danny Antonelli
- Andrea Gemelli
- Lorenzo Santolini
- Giulia Buzzetti
## Tool
`search_restaurants(location, limit?)` โ mcp-ui carousel + text fallback (up to 3 restaurants).
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues