Indiana Code

Official registry Developer tools

Search unofficial Indiana Code, IGA companions, and appellate cases. Not legal advice.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

Remote (streamable-http)
Claude Code
claude mcp add --transport http indiana-code 'https://mcp.openindianalaw.org/mcp'
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "indiana-code": {
            "type": "http",
            "url": "https://mcp.openindianalaw.org/mcp"
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. Indiana Code MCP
  2. Tools
  3. Setup
  4. Run the MCP server (stdio)
  5. Streamable HTTP (local)
  6. Usage counts (optional, off by default)
  7. Source

Indiana Code MCP

Public home: Open Indiana Law (open-indiana-law/indiana-code). Unofficial MCP: mcp.openindianalaw.org (/mcp). This copy is unofficial and is not legal advice.

Dated, unofficial copies of Indiana legal text as a local MCP server. Structured Indiana Code for 2017–2026; official IGA companions as far back as IGA publishes them; current court-rules PDFs; Indiana appellate clusters with opinion bodies when Harvard CAP or official court PDFs supplied them.

This is an access layer, not an official publication, and not legal advice. Verify every citation at iga.in.gov.

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

ToolWhat it does
ic_searchFull-text search (optional year / title)
ic_resolve_citationPull IC citations out of free text
ic_get_sectionSection text as of a date
ic_get_versionsEvery loaded version of a section
ic_browseTitles → articles → chapters → sections
ic_get_actCode targets of a public law (P.L.98-2026)
ic_list_companionConstitution, Non-code, Acts, archive titles, historical tables, court rules (when loaded)
ic_search_companionFull-text search of those companion PDFs
ic_get_companionOne page of a companion PDF
case_searchIndiana appellate clusters (Harvard CAP / official court PDFs when present); optional form filter
case_getOne cluster, with opinion text only when a body was ingested; includes text-classified decision form when indexed
ic_cases_citingOpinions whose text mentions a Code section (not a citator; not treatment)
cases_citing_caseOpinions whose text cites a case (reporter or Rule 22 number; federal/sister-state cites stay unresolved; not a citator)
cases_cited_inCases cited in one opinion (resolved Indiana clusters plus unresolved outbound mentions)
cases_citing_courtIndiana opinions with a (court year) parenthetical such as (7th Cir. 2021) or (N.D. Ind. 2019)

Every answer includes unofficial, snapshot, dates, flags, and a disclaimer.

Setup

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. Coverage limits: NOT_COVERED.md.

python -m pytest tests
INDIANA_LAW_DB=data/store/indiana-code.db python scripts/smoke_mcp.py

Run the MCP server (stdio)

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):

{
  "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
{
  "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)

INDIANA_LAW_TRANSPORT=streamable-http INDIANA_LAW_PORT=8765 \
  python -m indiana_law.mcp_server

Hosted streamable HTTP (unofficial; not legal advice): https://mcp.openindianalaw.org/mcp. Landing, terms, and privacy are on /, /terms, and /privacy. Directory listing packet (not submitted): docs/LISTING.md. See docs/DEPLOY.md.

Usage counts (optional, off by default)

A host can count how often each tool is used. Set INDIANA_LAW_USAGE_DB to a file path and the server records, per UTC day and per tool, only the number of calls and errors. It never sees or stores IP addresses, queries, arguments, results or session ids, so the totals cannot identify anyone, and a failure to write a count never breaks a tool. Read the totals with python -m indiana_law.usage /path/to/usage.sqlite.

Source

Annual HTML zips from the Indiana General Assembly. This project does not use the IGA API. Schema: docs/DESIGN-schema-v1.md.

Frequently asked questions

What is Indiana Code?

Search unofficial Indiana Code, IGA companions, and appellate cases. Not legal advice.

How do I install Indiana Code?

It runs as a remote server. In Claude Code: claude mcp add --transport http indiana-code 'https://mcp.openindianalaw.org/mcp'. For other clients, paste the JSON configuration from this page into their MCP settings.

Does Indiana Code need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is Indiana Code open source?

Its code is public on GitHub, but the repository does not declare a standard license.

Who maintains Indiana Code?

It is published by open-indiana-law. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.