MCP server for LeaseClear lease Q&A.
A Model Context Protocol server that exposes LeaseClear lease Q&A.
Listed in the official MCP Registry as io.github.amadeuserras/leaseclear-mcp.
lease_qa — ask one question about lease terms; returns an answer grounded in the lease, or states that the lease is silentAdd 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.
| 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 usageArgument
question (string, required) — one question about the lease_meta
document_ids (string[], optional) — UUIDs of the documents to query. Omitted means all.Security: The _meta field is used to pass metadata to the tool call that the model doesn't see. Having document_ids there is intentional: it prevents cross-document prompt injection because the model is never able to choose which documents it has access to. See a real-world example in LeaseOps: prompt injection and the tenants table.
Tool call:
result = await session.call_tool(
name="lease_qa",
arguments={
"question": "How much is the security deposit for Yuna Kim?"
},
meta={
"document_ids": [
"a1b2c3d4-e5f..."
]
}
)
Output:
{
"answer": "The security deposit is $6,400.00. This deposit is held in Owner's Broker's trust account [california-johnson-kim §4]."
}
mcp[cli]) over stdiohttpx for LeaseClear API callspydantic-settings for schemas and configuv and uv_build for running and packagingleaseclear-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
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
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.
MIT
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx leaseclear-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-amadeuserras-leaseclear-mcp": {
"command": "uvx",
"args": [
"leaseclear-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceleaseclear-mcppypiio.github.amadeuserras/leaseclear-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.