Skip to main content
Glama
bracesproul

LSD MCP Template

by bracesproul
README.md
# LSD MCP Template

Template for exposing one or more FastMCP servers from a LangGraph Server custom HTTP route. It is set up for LangSmith Deployments and serves MCP over Streamable HTTP.

The default MCP endpoint is:

```text
/mcp
```

This template intentionally does not include custom auth. Add auth separately if your deployment needs it.

## What's Included

- Minimal LangGraph health graph so LangGraph Server boots normally.
- Custom Starlette app mounted through `langgraph.json`.
- Lazy MCP app construction so importing the graph server does not build your MCP server.
- Configurable MCP server registry in `src/lsd_mcp_template/mcp_config.py`.
- One example tool: `math_add(x: int, y: int)`.

## Local Development

```bash
uv sync --group dev
make dev
```

The local MCP endpoint will be available at:

```text
http://127.0.0.1:1424/mcp
```

Run tests with:

```bash
make test
```

## Defining Your MCP Server

Edit `src/lsd_mcp_template/server.py` and replace the example tool with your own tools:

```python
from fastmcp import FastMCP


def build_server() -> FastMCP:
    mcp = FastMCP("My MCP Server")

    @mcp.tool(name="my_tool")
    def my_tool(value: str) -> str:
        return value

    return mcp
```

To expose multiple MCP servers, add more specs in `src/lsd_mcp_template/mcp_config.py`:

```python
MCP_SERVER_SPECS = (
    MCPServerSpec(
        name="default",
        path="/mcp",
        factory="lsd_mcp_template.server:build_server",
    ),
    MCPServerSpec(
        name="other",
        path="/other-mcp",
        factory="lsd_mcp_template.other_server:build_server",
    ),
)
```

Each factory must return a `fastmcp.FastMCP` instance.

## Deploy

Use this directory as the repository root for the LangSmith Deployment. The deployment entrypoints are already declared in `langgraph.json`:

- Graph: `./src/lsd_mcp_template/graph.py:graph`
- Custom HTTP app: `./src/lsd_mcp_template/webapp.py:app`

Set any environment variables your custom tools need in the deployment configuration. The example `math_add` tool does not require environment variables.

Optional:

```bash
export MCP_STATELESS_HTTP=true
```

When set, the custom route creates the FastMCP Streamable HTTP app in stateless mode.