surfline-mcp
# surfline-mcp
Minimal Python MCP server with one tool: `get_surf_forecast`.
It fetches both Surfline forecast endpoints:
- `conditions`
- `rating`
The spot is fixed by environment variable (`SURFLINE_SPOT_ID`) so this server is effectively single-spot.
## Setup
```bash
cd surfline-mcp
uv sync
```
## Run (stdio MCP server)
```bash
cd surfline-mcp
export SURFLINE_SPOT_ID=5842041f4e65fad6a7708852
uv run surfline-mcp
```
## Run via uvx (from GitHub)
```bash
export SURFLINE_SPOT_ID=5842041f4e65fad6a7708852
uvx --from git+https://github.com/ivoytov/surfline-mcp surfline-mcp
```
## Nanobot MCP config (uvx)
```json
{
"tools": {
"mcpServers": {
"surfline": {
"command": "uvx",
"args": ["--from", "git+https://github.com/ivoytov/surfline-mcp", "surfline-mcp"],
"env": {
"SURFLINE_SPOT_ID": "5842041f4e65fad6a7708852"
}
}
}
}
}
```
## Tool
`get_surf_forecast(days=3)`
Returns:
- `spot_id`
- `days`
- `daily_forecast[]` with:
- `forecastDay`
- `dayToWatch`
- `headline`
- `observation`
- `rating_summary.dominant_key`
- `rating_summary.min_value`
- `rating_summary.max_value`
- `rating_summary.avg_value`
- `rating_windows[]` as compact 3-hour snapshots:
- `local_hour`
- `key`
- `value`
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools. The single tool's purpose is clearly defined and distinct by default.
The single tool name 'get_surf_forecast' follows a clear verb_noun pattern. With only one tool, consistency is inherently perfect as there are no other tools to compare against.
A single tool is too few for a surf forecast server's apparent scope, which typically involves multiple operations like listing spots, getting forecasts for different locations, or accessing different data types. This minimal set limits functionality.
The tool surface is severely incomplete for a surf forecasting domain. It only fetches forecast data for one pre-configured spot, lacking operations to list spots, get forecasts for multiple locations, or access other surf-related data like tides or reports.