Skip to main content

Thin, dependency-free Python client for the lean-ctx HTTP /v1 contract

Project description

lean-ctx-client (Python SDK)

Thin, dependency-free Python client for the lean-ctx HTTP /v1 contract. Standard library only (urllib) — installs and runs anywhere, no transitive dependencies. It speaks the wire protocol only; it never links the engine or re-implements compression. Mirrors the TypeScript and Rust lean-ctx-client SDKs.

Install

pip install lean-ctx-client
# from this repo:
pip install ./clients/python

Usage

from leanctx import LeanCtxClient, run_conformance

client = LeanCtxClient("http://127.0.0.1:8080")

# Discovery
caps = client.capabilities()   # GET /v1/capabilities
api = client.openapi()         # GET /v1/openapi.json

# Tools
listing = client.list_tools(limit=10)
text = client.call_tool_text("ctx_read", {"path": "README.md"})

# Live events (SSE)
for event in client.subscribe_events():
    print(event["kind"], event["payload"])

Methods

Method Endpoint
health() GET /health
manifest() GET /v1/manifest
capabilities() GET /v1/capabilities
openapi() GET /v1/openapi.json
list_tools(offset=, limit=) GET /v1/tools
call_tool(name, arguments, ...) POST /v1/tools/call
call_tool_text(name, arguments, ...) POST /v1/tools/call + text extraction
subscribe_events(...) GET /v1/events (SSE)
context_summary(...) GET /v1/context/summary
search_events(q, ...) GET /v1/events/search
event_lineage(event_id, ...) GET /v1/events/lineage
metrics() GET /v1/metrics

Shared conformance kit

run_conformance(client) runs the language-agnostic SDK conformance checks against a live server and returns a scorecard. It mirrors the TypeScript SDK's runConformance and the server-side lean-ctx conformance, keeping all clients in lockstep on the same contract.

card = run_conformance(client)
assert card.all_passed, [c for c in card.checks if not c.passed]

The kit covers every /v1 route (COVERED_ROUTES): its route_coverage check fails when the server advertises a route this SDK does not cover, and engine_compat fails when the server speaks an http_mcp contract version outside SUPPORTED_HTTP_CONTRACT_VERSIONS. The published matrix lives at docs/reference/sdk-conformance-matrix.md (regenerated by scripts/sdk-conformance.sh against a real server in the sdk-conformance CI job).

SemVer coupling

The SDK's major version follows the engine's http_mcp contract major (CONTRACTS.md § Versioning rules): a v2 contract ships as SDK 2.x, and 1.x keeps speaking v1.

Framework adapters

Expose the lean-ctx tool surface to popular agent frameworks. Each framework is an optional dependency, imported lazily — installing lean-ctx-client pulls in none of them. The OpenAI adapter is a pure transformation and needs no extra package.

from leanctx import LeanCtxClient
from leanctx.adapters import (
    to_openai_tools, run_openai_tool_call,   # no extra dep
    to_langchain_tools,                       # pip install "lean-ctx-client[langchain]"
    to_llamaindex_tools,                      # pip install "lean-ctx-client[llamaindex]"
    to_crewai_tools,                          # pip install "lean-ctx-client[crewai]"
)

client = LeanCtxClient("http://127.0.0.1:8080")

# OpenAI function calling
tools = to_openai_tools(client)
# ... pass tools to client.chat.completions.create(...), then:
text = run_openai_tool_call(client, tool_call)

# LangChain / LlamaIndex / CrewAI
lc_tools = to_langchain_tools(client)

Errors

  • LeanCtxConfigError — invalid arguments / configuration (no I/O performed).
  • LeanCtxTransportError — request never produced a response (network/DNS/TLS).
  • LeanCtxHTTPError — non-2xx response, with status, method, url, error_code, and parsed body.

Non-goals

  • No engine linkage and no re-implemented compression/indexing logic.
  • Stability over surface: only the documented /v1 contract is exposed.

Development

cd clients/python
python -m pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lean_ctx_client-0.1.0.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lean_ctx_client-0.1.0-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file lean_ctx_client-0.1.0.tar.gz.

File metadata

  • Download URL: lean_ctx_client-0.1.0.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for lean_ctx_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8cecf2a8306bfd31c106d53cd402f6dd35c5d95e96a072827378c33f50f2cbd2
MD5 ee18acb6fb9f209d7e858b792bc5b581
BLAKE2b-256 55859bee630aad562373eed2fcf275ba10e4b654144e13d3d0b5ce5e1135df88

See more details on using hashes here.

File details

Details for the file lean_ctx_client-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for lean_ctx_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5da83fea12b8747f0ff6ee3a248933f031005f850d9b7ea9705e7a1340cc54aa
MD5 ff4f41958b4ed67f89653310666a2df5
BLAKE2b-256 7ffbe5a7cc1d779d9e146ad2da888c93d3ddaadbe365c353931688cc1c33ead9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page