Skip to main content

mcbp-core

Async HTTP client and shared tool registry for the BAS / 1C MCBP_AI service (/ai/v1).

This is the engine shared by two front-ends: the mcbp MCP server and a FastAPI web chat. It holds everything that knows about BAS — routes, filters, response shapes, typed errors — so those front-ends hold none of it.

Requires a server-side component. mcbp-core talks to the MCBP_AI HTTP service, a BSL module installed into a BAS/1C configuration through Конфігуратор. That module is licensed separately and is not part of this package. Without it there is nothing to connect to.

The MCBP+ configuration and the MCBP_AI service module are proprietary works of MCBP.PLUS and are distributed separately. This MIT licence covers the Python package only.

What it gives you

  • MCBPClient — one pooled httpx.AsyncClient over the BAS publication: HTTP Basic auth, retries on 503, an in-memory metadata cache, and an offline mock mode for tests.
  • Typed errors — the {"error": {"code", "message"}} envelope BAS returns is mapped to exception classes (ParameterError, NotFoundError, KeyMismatchError, PlusRequiredError, …), so callers branch on type instead of re-parsing text.
  • A tool registry — 14 ToolSpecs (JSON Schema + async executor) covering catalogs, documents, registers, metadata introspection and the gated write routes. Both front-ends register from this one list, so their surfaces cannot drift apart.

Usage

from mcbp_core.client import ConnectionConfig, MCBPClient
from mcbp_core.tools import tool_specs

client = MCBPClient(ConnectionConfig(
    base_url="http://host/base/hs/mcbp_ai",   # without the /ai/v1 suffix — the client adds it
    user="ai_service", password="***", mock=False,
))
await client.startup()
try:
    rows = await client.list_catalog(type_="Номенклатура", cursor=None, limit=50, q="кабель")
finally:
    await client.shutdown()

Selecting the tools a front-end should expose:

read_only = tool_specs(surface="mcp")                        # 10 specs
everything = tool_specs(surface="mcp", include_write=True)   # 14 specs

Tool descriptions are Ukrainian by default; ToolSpec.description_en carries the English variant used by the MCP surface.

Requirements

Python 3.11+.

License

MIT — see LICENSE.

Metadata

Release files for mcbp-core 0.1.18

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

Source distribution (sdist)

Source distribution for mcbp-core 0.1.18
File Size Uploaded Provenance
mcbp_core-0.1.18.tar.gz 92.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mcbp-core 0.1.18
File Interpreter ABI Platform
mcbp_core-0.1.18-py3-none-any.whl Python 3 none any Details

Total release size: 154.2 kB

Release files / mcbp_core-0.1.18.tar.gz

Download URL mcbp_core-0.1.18.tar.gz
Size 92.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4daceab7109f2de482f76c27c1ef9223cf41937ad174809aefbfa69b37920049
BLAKE2b-256 checksum
How to use checksums
0e211151e656303a5407f6c215caf19bf29fe56ac03f71c4fa1e96c9b82b10fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.5

Release files / mcbp_core-0.1.18-py3-none-any.whl

Download URL mcbp_core-0.1.18-py3-none-any.whl
Size 61.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3d4592d025f754a48f2c9251c80d886219c6e5058f9cef5ee36e6f6db720c539
BLAKE2b-256 checksum
How to use checksums
ddf9c15b7e7aacd9aededd87db7f9a62c6cd5eda6c411e0a09690ed62eb097e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.5

Security for mcbp-core 0.1.18

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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