Skip to main content
Glama
melanieawilson

Rec-MCP

README.md
# Rec-MCP: Recreation & Campground Search

A Model Context Protocol (MCP) server that provides tools for finding camping facilities and recreational areas using Recreation.gov's Recreation Information Database (RIDB) API and Google Maps Geocoding API.

## Features

- 🏕️ **Find Camping Facilities**: Search for campgrounds and recreational facilities near any location
- 🌍 **Geocoding Support**: Convert city names to coordinates using Google Maps API
- 🔍 **Flexible Search**: Customize search radius, result limits, and activity types. Change your prompts to locate reservable vs. first-come, first-serve campgrounds, etc.
- 📊 **Rich Data**: Get detailed facility information including contact details, amenities, and image URLs
- 🛠️ **MCP Integration**: Works seamlessly with MCP clients


### Prerequisites

- Python 3.12 or higher
- API keys for:
  - [Recreation.gov API](https://ridb.recreation.gov/) (RIDB)
  - [Google Maps Geocoding API](https://developers.google.com/maps/documentation/geocoding/start)

### Setup

1. Clone the repository
2. Install dependencies
  - `uv add requests python-dotenv mcp`
3. Create a `.env` file in the project root:
   - env RIDB_API_KEY=your_recreation_gov_api_key_here 
   - GOOGLE_GEOCODE_KEY=your_google_maps_api_key_here
4. Run the server
   - `uv --directory /your_file_path/rec_mcp/ run ridb_mcp_server.py`

### Testing the MCP Server
Use the MCP Inspector to ensure the MCP Server is working before integrating it into any clients. 

Install MCP inspector globally
`npm install -g @modelcontextprotocol/inspector`

Run the inspector
`mcp-inspector uv run python ridb_mcp_server.py`

### Integrating the MCP Server with Clients
The MCP Server can be integrated into clients such as Claude Desktop and VSCode.

For Claude Desktop, add the server to the claude_desktop_config.json file.

### Credits

JetBrains AI Pro generated 90 % of the code written for this project in PyCharm.


TDQS

B3.1/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The tool 'find_campgrounds' has a clear, distinct purpose focused on locating camping facilities near a specified location, leaving no room for confusion or misselection.

Naming Consistency5/5

Since there is only one tool, naming consistency is inherently perfect. The tool name 'find_campgrounds' follows a clear verb_noun pattern (find + campgrounds), which would be consistent if more tools were added, but as a standalone, it sets a good precedent without any deviations or mixed conventions.

Tool Count2/5

A single tool is too few for a server named 'Rec-MCP', which suggests a broader recreation domain. While the tool is well-defined for finding campgrounds, the server lacks coverage for other recreation activities (e.g., hiking trails, parks, events), making it feel thin and incomplete for its apparent scope, leading to potential agent failures in broader tasks.

Completeness2/5

The tool surface is severely incomplete for a recreation domain. It only provides a 'find' operation for campgrounds, with no CRUD/lifecycle coverage (e.g., no create, update, delete, or get details for campgrounds or other recreation resources). This creates significant gaps that will hinder agents from performing comprehensive recreation-related tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues