Skip to main content
Glama
README.md
# MCP Servers over Streamable HTTP β€” Step-by-Step Guide

πŸ“ **Read the full article here**: [MCP Servers over Streamable HTTP (Step-by-Step)](https://aibootcamp.dev/blog/remote-mcp-servers)


---

This repository contains a complete, working example of how to build and run an **MCP (Model Context Protocol) server** using Python, `mcp`, and `FastAPI`. You’ll learn how to:

- Expose tools and functions over HTTP using the MCP protocol
- Connect those tools to AI assistants like [Cursor](https://cursor.com/)
- Use streamable HTTP as the transport
- Mount multiple MCP servers in a FastAPI app

---

## πŸ“ Folder Structure

```bash
.
β”œβ”€β”€ docs/                        # Diagrams and assets (e.g., mcp-client-server.png)
β”œβ”€β”€ fastapi_example/            # Example mounting multiple MCP servers in FastAPI
β”‚   β”œβ”€β”€ echo_server.py          # A server exposing a simple echo tool
β”‚   β”œβ”€β”€ math_server.py          # A server exposing a math tool
β”‚   └── server.py               # FastAPI app that mounts both echo and math servers
β”œβ”€β”€ .gitignore
β”œβ”€β”€ .python-version             # Python version (for tools like pyenv or uv)
β”œβ”€β”€ pyproject.toml              # Project config and dependencies
β”œβ”€β”€ readme.md                   # You're here!
β”œβ”€β”€ runtime.txt                 # Python runtime for platforms like Render
β”œβ”€β”€ server.py                   # Basic standalone MCP server using Tavily search
β”œβ”€β”€ uv.lock                     # Lockfile for uv dependency manager
```

βΈ»

πŸ›  Quickstart
1.	Install uv (recommended Python package manager)

```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

2.	Install dependencies and set up environment

```
uv venv && source .venv/bin/activate
uv pip install -r pyproject.toml
```

3.	Run the basic MCP server
This uses the Tavily API to expose a simple web_search tool.

```
uv run server.py
```

4.	Run the FastAPI app with multiple MCP servers

```
uv run fastapi_example/server.py
```

This will mount:
- http://localhost:8000/echo/mcp/
- http://localhost:8000/math/mcp/

βΈ»

πŸ§ͺ Debug with MCP Inspector
1.	Install CLI support

```bash
uv add 'mcp[cli]'
```

2.	Launch the inspector

```
uv run mcp dev server.py
```

Then go to: `http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=...`



βΈ»

πŸ”Œ Connect to Cursor

In Cursor, add your MCP server under Chat Settings > MCP Servers:
```json
{
  "mcpServers": {
    "tavily": {
      "url": "http://localhost:8000/mcp/"
    }
  }
}
```

βœ… Note: You must include the trailing / in the URL.

βΈ»