Metadata-Version: 2.4
Name: townshipamerica-mcp
Version: 1.0.2
Summary: Model Context Protocol server for Township America — PLSS and Texas TXSS tools for AI agents
Project-URL: Homepage, https://townshipamerica.com/api/mcp
Project-URL: Documentation, https://townshipamerica.com/api/mcp
Project-URL: Repository, https://github.com/townshipamerica/python-mcp
Project-URL: Issues, https://github.com/townshipamerica/python-mcp/issues
Author-email: Township America <hello@townshipamerica.com>
License: MIT
License-File: LICENSE
Keywords: ai,blm,claude,coordinates,geocoding,gis,gps,land-survey,mcp,model-context-protocol,plss,range,section,township
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: GIS
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Requires-Dist: mcp>=1.0.0
Requires-Dist: townshipamerica>=1.0.1
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: respx>=0.21; extra == 'dev'
Description-Content-Type: text/markdown

# townshipamerica-mcp

[![PyPI](https://img.shields.io/pypi/v/townshipamerica-mcp)](https://pypi.org/project/townshipamerica-mcp/)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)

Model Context Protocol (MCP) server that exposes Township America's PLSS and Texas TXSS conversion tools to AI agents — Claude, ChatGPT, Cursor, GitHub Copilot, Windsurf, or any MCP-compatible client.

Also includes a Python client (`TownshipMCPClient`) for scripts and notebooks, backed by the [townshipamerica](https://pypi.org/project/townshipamerica/) SDK.

[API Documentation](https://townshipamerica.com/api) · [GitHub](https://github.com/townshipamerica/python-mcp) · [PyPI](https://pypi.org/project/townshipamerica-mcp/) · [npm (Node)](https://www.npmjs.com/package/townshipamerica-mcp)

Requires a [Pro+ subscription](https://townshipamerica.com/pricing) ($99/mo) for bundled API access.

## Installation

```bash
pip install townshipamerica-mcp
```

Requires Python 3.10+.

## Quick Start

Set your API key (generate at [app.townshipamerica.com/settings/api-keys](https://app.townshipamerica.com/settings/api-keys)):

```bash
export TOWNSHIP_AMERICA_API_KEY="ta_…"
```

### Tools

| Tool                   | Description                                           |
| ---------------------- | ----------------------------------------------------- |
| `plss_to_coordinates`  | Convert a PLSS or Texas TXSS description to GPS       |
| `coordinates_to_plss`  | Reverse-lookup coordinates to a legal description     |
| `plss_to_geojson`      | Return the tract polygon/multipolygon as GeoJSON      |
| `validate_description` | Validate and normalize locally (PLSS + TXSS, no API)  |
| `batch_convert`        | Convert up to 100 descriptions in one request         |
| `autocomplete`         | Suggestions for partial PLSS or TXSS input (max 10)   |
| `land_report`          | Federal Land Report — coming Q3 2025                  |

Coverage: 30 PLSS states, 37 principal meridians, and all 254 Texas counties (TXSS). Powered by BLM CadNSDI V2 and Texas GLO survey data.

### Claude Desktop

Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):

```json
{
  "mcpServers": {
    "townshipamerica": {
      "command": "townshipamerica-mcp",
      "env": {
        "TOWNSHIP_AMERICA_API_KEY": "ta_…"
      }
    }
  }
}
```

Restart Claude Desktop to apply.

### Cursor / VS Code / Continue

```jsonc
{
  "mcpServers": {
    "townshipamerica": {
      "command": "townshipamerica-mcp",
      "env": { "TOWNSHIP_AMERICA_API_KEY": "ta_…" },
    },
  },
}
```

### Stdio (any MCP client)

```bash
TOWNSHIP_AMERICA_API_KEY=ta_… townshipamerica-mcp
```

### Environment variables

| Variable                    | Default                                 | Purpose                                     |
| --------------------------- | --------------------------------------- | ------------------------------------------- |
| `TOWNSHIP_AMERICA_API_KEY`  | _(required)_                            | Your Pro+ API key (preferred)               |
| `TA_API_KEY`                | —                                       | Legacy alias for `TOWNSHIP_AMERICA_API_KEY` |
| `TOWNSHIP_AMERICA_BASE_URL` | `https://developer.townshipamerica.com` | Override the API endpoint                   |
| `MCP_LOG_LEVEL`             | `INFO`                                  | Log level for stderr                        |

## Quota

Pro+ bundled API access: 1,000 search calls/month. If exceeded, tools return a clear quota message with upgrade guidance. Visit [townshipamerica.com/pricing](https://townshipamerica.com/pricing).

## Python client

For programmatic use without an MCP host:

```python
from townshipamerica_mcp import TownshipMCPClient

client = TownshipMCPClient(api_key="ta_…")

result = client.plss_to_coordinates("NW 25 24N 1E 6th Meridian")
print(result.lat, result.lng)

v = client.validate_description("NW 25 24N 1E 6th Meridian")
print(v.valid, v.normalized)

batch = client.batch_convert(["NW 25 24N 1E 6th Meridian", "SE 12 4N 5E Boise Meridian"])
print(batch.converted, batch.failed)
```

For full SDK features (async, GeoPandas-friendly models), use `pip install townshipamerica`.

## Exceptions

| Exception             | Trigger                       |
| --------------------- | ----------------------------- |
| `AuthenticationError` | Invalid or missing API key    |
| `QuotaExceededError`  | Rate limit / quota exceeded   |
| `NotFoundError`       | Location not in PLSS database |
| `ValidationError`     | Malformed request             |
| `TownshipMCPError`    | Base class / other errors     |

## License

MIT — see [LICENSE](LICENSE).
