Skip to main content
Glama
mickpletcher

TN Trustee MCP

by mickpletcher
README.md
# TN Trustee MCP

Read-only MCP access to public Tennessee property-tax information.

> [!IMPORTANT]
> This project does not submit property-tax payments and does not access the payment
> cart. It retrieves and normalizes public-facing information only. Amounts shown
> exclude interest and are not payoff totals. Confirm any amount owed with the county
> trustee before paying.

The project is in Phase 1. It currently provides configuration, normalized data
contracts, SQLite persistence, a command shell, and an MCP STDIO server shell with
zero registered tools. It does not yet contact TennesseeTrustee.org.

## Requirements

- Python 3.12 or later
- [uv](https://docs.astral.sh/uv/)
- An operator contact string for the descriptive user agent

## Setup

```powershell
uv python install 3.12
uv sync --extra dev
Copy-Item .env.example .env
```

Replace `operator@example.com` in `.env` with a monitored contact address.
The required variable name is `TN_TRUSTEE_USER_AGENT_CONTACT`.

Initialize the local database:

```powershell
uv run tn-trustee-mcp db init
```

List configured entities without contacting the source:

```powershell
uv run tn-trustee-mcp entities list
```

Entity configuration keeps the landing and search URLs separate. `entity_path`
contains the entity query parameter. `search_path` is the query-free `/search.php`
endpoint.

Start the Phase 1 MCP shell:

```powershell
uv run tn-trustee-mcp serve
```

## Development checks

```powershell
uv run ruff check .
uv run ruff format --check .
uv run mypy
uv run pytest
uv run python -m build
```

CLI tests inspect the registered command tree directly so option visibility is
validated consistently on Windows and Linux.

## Project reference

See [assessment.md](assessment.md) for the current phase, implemented components,
open questions, validation baseline, and next action. Contributors and coding agents
maintain it with every delivered repository change.

Every delivered repository change must update [CHANGELOG.md](CHANGELOG.md),
[assessment.md](assessment.md), and this README. The changelog records what changed.
The assessment provides a quick current-state reference. The README must stay aligned
with the current setup, behavior, scope, and operator instructions.

## Current scope

- Cheatham County and Stewart County configuration only
- HTTPS query parameter routes through `tennesseetrustee.org`
- Separate validated entity landing and search paths
- Public, read-only property-tax information
- Local SQLite cache and future snapshot storage
- Visible Phase 1 CLI stubs for search, record, snapshot, and source-status commands

Search behavior and HTML parsing are intentionally absent until the Phase 2 source
inspection is complete.

## Safety

The server must never access cart, checkout, or payment endpoints. It must never
submit payments, bypass authentication or CAPTCHA, disable certificate validation,
or perform bulk owner-name harvesting. See [SECURITY.md](SECURITY.md) and
[docs/COMPLIANCE.md](docs/COMPLIANCE.md).

## License

See [LICENSE](LICENSE).