Skip to main content

leaseclear-mcp

A Model Context Protocol server that exposes LeaseClear lease Q&A.

Tools

  • lease_qa — ask one question about lease terms; returns an answer grounded in the lease, or states that the lease is silent

Usage

Add this to your MCP client config (e.g. claude_desktop_config.json or Cursor mcp.json):

{
  "mcpServers": {
    "lease-qa": {
      "command": "uvx",
      "args": ["leaseclear-mcp"]
    }
  }
}

The package is on PyPI. uvx fetches and runs it as a local subprocess, communicating over stdio. uv required.

Optional environment variables

Variable Description Default
LEASECLEAR_API_KEY Use the server with your own LeaseClear account LeaseClear demo mode
LEASECLEAR_API_URL Override the API endpoint (local or private instances) LeaseClear production backend
{
  "mcpServers": {
    "lease-qa": {
      "command": "uvx",
      "args": ["leaseclear-mcp"],
      "env": {
        "LEASECLEAR_API_KEY": "lc_...",
        "LEASECLEAR_API_URL": "https://..."
      }
    }
  }
}

lease_qa

Argument

  • question (string, required) — one question about the lease

_meta (client / server only)

  • document_ids (string[], optional) — UUIDs of the documents to query. Omitted means all.

_meta is MCP's reserved field for additional metadata on a request that the model can't see or set. That's a deliberate anti-prompt injection choice: the host app decides which lease(s) are in scope, and the model can only ask the question.

[!WARNING] Without document_ids, a model can query any document the LeaseClear account can access. See a real-world example in LeaseOps: prompt injection and the tenants table.

Python ClientSession.call_tool example:

result = await session.call_tool(
    name="lease_qa",
    arguments={
        "question": "How much is the security deposit for Yuna Kim?"
    },
    meta={
        "document_ids": [
            "a1b2c3d4-e5f..."
        ]
    }
)

Example output:

{
  "answer": "The security deposit is $6,400.00. This deposit is held in Owner's Broker's trust account [california-johnson-kim §4]."
}

Project structure

leaseclear-mcp/
├── src/leaseclear_mcp/
│   ├── server.py        # MCP server + lease_qa
│   ├── leaseclear.py    # LeaseClear HTTP client
│   ├── schemas.py
│   └── config.py
├── tests/
├── pyproject.toml
├── .env.example
└── README.md

Local Development

git clone https://github.com/you/leaseclear-mcp.git
cd leaseclear-mcp
uv sync
cp .env.example .env
uv run pytest
uv run ruff check .
uv run pyright

Debugging

Use the MCP Inspector to test the server interactively:

npx @modelcontextprotocol/inspector uvx leaseclear-mcp

From a checkout, use uv run leaseclear-mcp instead of uvx leaseclear-mcp.

License

MIT

Metadata

Release files for leaseclear-mcp 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for leaseclear-mcp 0.1.2
File Size Uploaded
leaseclear_mcp-0.1.2.tar.gz 5.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for leaseclear-mcp 0.1.2
File Interpreter ABI Platform
leaseclear_mcp-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 12.6 kB

Release files / leaseclear_mcp-0.1.2.tar.gz

Download URL leaseclear_mcp-0.1.2.tar.gz
Size 5.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b3212c7b913e29ab24423fb25514d4ed7011a0d93a5c549581e0f3bc7020ee01
BLAKE2b-256 checksum
How to use checksums
2afd6d04c678ca58b9cb76b2105984cf014c35d3635692f04af407bd7d116c81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / leaseclear_mcp-0.1.2-py3-none-any.whl

Download URL leaseclear_mcp-0.1.2-py3-none-any.whl
Size 7.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d50ddc2be836cb805878a9194b6b786b080689db3d722616774d5c9af7f40132
BLAKE2b-256 checksum
How to use checksums
d256e5fd133bc4fda99dabc7eedd29d5f7477e61ae87372beb61177af470daaf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.1.3

2 release files

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page