Indiana Code MCP
README.md
# Indiana Code MCP
**Public home:** [Open Indiana Law](https://github.com/open-indiana-law) ([open-indiana-law/indiana-code](https://github.com/open-indiana-law/indiana-code)).
Preferred site will be [openindianalaw.org](https://openindianalaw.org) (not live yet).
Live unofficial MCP: [mcp.indianacle.com](https://mcp.indianacle.com).
This copy is unofficial and is not legal advice.
Dated, unofficial copies of the Indiana Code (2017–2026) as a local MCP
server. Search, citation resolve, as-of text, version history, outline
browse, and public-law clause lookup.
This is an access layer, not an official publication, and not legal advice.
Verify every citation at [iga.in.gov](https://iga.in.gov/laws/ic/downloads).
The older IGA-API / opinions server in `src/mcp_server.py` is historical and
is not wired to any database. Use `python -m indiana_law.mcp_server`.
## Tools
| Tool | What it does |
| --- | --- |
| `ic_search` | Full-text search (optional year / title) |
| `ic_resolve_citation` | Pull IC citations out of free text |
| `ic_get_section` | Section text as of a date |
| `ic_get_versions` | Every loaded version of a section |
| `ic_browse` | Titles → articles → chapters → sections |
| `ic_get_act` | Code targets of a public law (`P.L.98-2026`) |
| `ic_list_companion` | Constitution / Non-code / Acts / archive PDFs (when loaded) |
| `ic_search_companion` | Full-text search of those companion PDFs |
| `ic_get_companion` | One page of a companion PDF |
Every answer includes `unofficial`, snapshot, dates, flags, and a disclaimer.
## Setup
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# Point at a built store (this checkout already has one):
export INDIANA_LAW_DB="$PWD/data/store/indiana-code.db"
```
Rebuild from the official JSONL already on disk: [docs/REBUILD.md](docs/REBUILD.md).
Coverage limits: [NOT_COVERED.md](NOT_COVERED.md).
```bash
python -m pytest tests
INDIANA_LAW_DB=data/store/indiana-code.db python scripts/smoke_mcp.py
```
## Run the MCP server (stdio)
```bash
export INDIANA_LAW_DB=/absolute/path/to/indiana-code.db
python -m indiana_law.mcp_server
```
### Cursor
Add to `~/.cursor/mcp.json` (or the project MCP config):
```json
{
"mcpServers": {
"indiana-code": {
"command": "python",
"args": ["-m", "indiana_law.mcp_server"],
"env": {
"INDIANA_LAW_DB": "/absolute/path/to/indiana-code.db",
"PYTHONPATH": "/absolute/path/to/indiana-law/src"
}
}
}
}
```
If you installed the package into a venv, use that venv's `python` and you can
drop `PYTHONPATH`.
### Claude Desktop / Claude Code
```json
{
"mcpServers": {
"indiana-code": {
"command": "python",
"args": ["-m", "indiana_law.mcp_server"],
"env": {
"INDIANA_LAW_DB": "/absolute/path/to/indiana-code.db",
"PYTHONPATH": "/absolute/path/to/indiana-law/src"
}
}
}
}
```
## Streamable HTTP (local)
```bash
INDIANA_LAW_TRANSPORT=streamable-http INDIANA_LAW_PORT=8765 \
python -m indiana_law.mcp_server
```
## Hosted prototype
A hosted, unofficial instance of this server runs at **https://mcp.indianacle.com**
(Streamable HTTP endpoint `https://mcp.indianacle.com/mcp`, with a landing page at
the root and the terms at `/terms`). It is an early prototype with known gaps; see
[NOT_COVERED.md](NOT_COVERED.md) and the terms page, and verify every citation at
[iga.in.gov](https://iga.in.gov/laws/ic/downloads). It is not legal advice.
Opening `/mcp` in a browser shows a JSON 406 error: that is the machine protocol,
not a broken site. For how it is hosted, see [docs/DEPLOY.md](docs/DEPLOY.md).
## Source
Annual HTML zips from the Indiana General Assembly. This project does not use
the IGA API. Schema: [docs/DESIGN-schema-v1.md](docs/DESIGN-schema-v1.md).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues