mcblmplss/README.md
Ryan Malloy d8d160efdc Prep for PyPI release: error handling, better docs, MIT license
- Add BLMAPIError exception with user-friendly error messages
- Rename is_public to allows_public_access with correct logic
  (BIA/DOD are federal but restricted, not public access)
- Add MIT license
- Expand pyproject.toml with URLs, keywords, classifiers
- Rewrite README with badges, use cases, coverage map, examples
2026-01-25 12:12:56 -07:00

139 lines
3.6 KiB
Markdown

# mcblmplss
[![PyPI version](https://img.shields.io/pypi/v/mcblmplss.svg)](https://pypi.org/project/mcblmplss/)
[![Python versions](https://img.shields.io/pypi/pyversions/mcblmplss.svg)](https://pypi.org/project/mcblmplss/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
**MCP server for querying U.S. public land data by coordinates.**
Drop a pin anywhere in the western U.S. and instantly get:
- **PLSS location** — Section 12, Township 4N, Range 6E
- **Land manager** — BLM, Forest Service, National Park, Private, etc.
- **Mining claims** — Active lode/placer claims with serial numbers
## When would I use this?
| Use Case | What you get |
|----------|--------------|
| **Dispersed camping** | Check if land is BLM/Forest Service before setting up camp |
| **Land research** | Get legal descriptions for title searches or due diligence |
| **Prospecting** | Find existing mining claims before staking your own |
| **Navigation** | Convert GPS coordinates to the township/range system used on paper maps |
| **GIS workflows** | Programmatic access to BLM cadastral data |
## Installation
```bash
pip install mcblmplss
```
Or run directly without installing:
```bash
uvx mcblmplss
```
### Add to Claude Code
```bash
claude mcp add blm "uvx mcblmplss"
```
## Tools
### `get_plss_location`
Convert coordinates to Section/Township/Range.
```
> get_plss_location(latitude=40.0, longitude=-105.0)
Section 9, Township 1N, Range 68W, 6th Meridian
State: CO
PLSS ID: CO060010S0680W0SN090
```
### `get_land_manager`
Find out who manages the land (and whether you can access it).
```
> get_land_manager(latitude=38.5, longitude=-110.5)
Bureau of Land Management (BLM) - Department of the Interior
Unit: Bureau of Land Management
State: UT
Status: Federal, Public access
```
```
> get_land_manager(latitude=40.0, longitude=-105.0)
Private (PVT)
State: CO
```
### `get_mining_claims`
Find active mining claims at a location.
```
> get_mining_claims(latitude=39.5, longitude=-117.0)
Found 42 mining claim(s):
MAGA #6
Serial: NV105221817
Type: Lode Claim
Status: Active
Acres: 20.66
MS 2
Serial: NV105223666
Type: Lode Claim
Status: Active
Acres: 20.66
...
```
## Coverage
Data is available for **30 states** where the Public Land Survey System was used:
![PLSS Coverage](https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Public_Land_Survey_System.png/800px-Public_Land_Survey_System.png)
**Not covered:** Eastern seaboard states (use metes-and-bounds), Texas (independent surveys), Hawaii.
## Error Handling
The server returns clear error messages when:
- **Outside PLSS coverage**: "No PLSS data found. Location may be outside surveyed areas."
- **API timeout**: "BLM API request timed out. The service may be slow or unavailable."
- **No mining claims**: "No mining claims found at this location."
## Data Sources
All data comes from official BLM ArcGIS REST services:
| Data | Source | Update Frequency |
|------|--------|------------------|
| PLSS | [BLM National PLSS CadNSDI](https://gis.blm.gov/arcgis/rest/services/Cadastral/BLM_Natl_PLSS_CadNSDI/MapServer) | Quarterly |
| Surface Management | [BLM SMA](https://gis.blm.gov/arcgis/rest/services/lands/BLM_Natl_SMA_LimitedScale/MapServer) | Annual |
| Mining Claims | [BLM MLRS](https://gis.blm.gov/nlsdb/rest/services/Mining_Claims/MiningClaims/MapServer) | Weekly |
**Disclaimer:** This data is for informational purposes only. For legal land descriptions, consult official BLM records or a licensed surveyor.
## Development
```bash
git clone https://git.supported.systems/MCP/mcblmplss.git
cd mcblmplss
uv sync
uv run mcblmplss
```
## License
MIT