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-coretalks to theMCBP_AIHTTP 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 pooledhttpx.AsyncClientover the BAS publication: HTTP Basic auth, retries on503, 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 — 13
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) # 13 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.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mcbp_core-0.1.12.tar.gz | 71.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcbp_core-0.1.12-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 120.4 kB
Release files / mcbp_core-0.1.12.tar.gz
| Download URL | mcbp_core-0.1.12.tar.gz |
|---|---|
| Size | 71.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
31a9c66876251cd74fe8a44c2af1fc45660691a017b2c1512e4fa4f90b850977
|
|
BLAKE2b-256 checksum How to use checksums |
84b91c360453329a4482bf28deeac2cca650b5a740e236a9238c6d71ad0f08ce
|
| 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.12-py3-none-any.whl
| Download URL | mcbp_core-0.1.12-py3-none-any.whl |
|---|---|
| Size | 48.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fe4264ff274b65eccd681325c5aefc49fd20e0e4449145d1d14a55f840d05947
|
|
BLAKE2b-256 checksum How to use checksums |
c6ea786d92e6cc3e18c8148a6f54d98e7960349afb7076bb6789185d7e393cf2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.5
|