Skip to main content

logo Tehzor

PyPI - Version

Асинхронный Python-клиент Tehzor Public API

Все 73 метода Tehzor Public API и MCP-сервер для LLM-агентов.

pip install -U tehzor            # библиотека
pip install -U "tehzor[mcp]"     # + MCP-сервер tehzor-mcp

0.2.0 несовместима с 0.1.x (TehzorAPI.create) — см. docs/MIGRATION.md и CHANGELOG.md. Примеры — в examples/.

Принципы

  • Факт важнее спецификации. docs/openapi.json — заявление разработчика API о доступных методах. Модели строятся по фактическим ответам, которые проверяют контрактные тесты (pytest -m contract). Найденные расхождения собраны в docs/API_FACTS.md.
  • Бережно к серверу. Ограничение частоты и параллельности, повторы только для безопасных операций в пределах бюджета времени, circuit breaker. Тяжёлые запросы (502 после ~30 с) не повторяются.
  • Запись под контролем. Режим read_only=True блокирует изменяющие операции до отправки. Создание, изменение и удаление проверяются только на заглушках.

Быстрый старт

import asyncio
from tehzor import TehzorClient
from tehzor.models.problems import ProblemFilters
from tehzor.models.spaces import SpaceEdit


async def main() -> None:
    async with TehzorClient(api_key="...") as thz:   # или переменная окружения TEHZOR_API_KEY
        print(await thz.objects.stages())
        async for p in thz.problems.iter(ProblemFilters(objects=["<id объекта>"])):
            print(p.number, p.status.name if p.status else None)

        # изменения: сначала посмотреть запрос, ничего не отправляя
        req = await thz.spaces.edit("<id помещения>", SpaceEdit(area_bti=55.1), dry_run=True)
        print(req.describe(), req.json)


asyncio.run(main())

MCP-сервер для LLM-агентов

tehzor-mcp публикует все 73 операции API как инструменты MCP, плюс problems_search (поиск нарушений с автопагинацией), space_overview (сводка по помещению) и справочники как ресурсы tehzor://….

Запуск

uvx (без установки):

uvx --from "tehzor[mcp]" tehzor-mcp

Из git (например, ветка до релиза): uvx --from "tehzor[mcp] @ git+https://github.com/gritsyuk/tehzor@<ветка>" tehzor-mcp.

Docker:

docker build -t tehzor-mcp .
docker run -i --rm -e TEHZOR_API_KEY tehzor-mcp

За корпоративным прокси с собственным CA сертификат передаётся только на время сборки: docker build --build-arg HTTPS_PROXY --secret id=pip_ca,src=/path/to/ca.pem -t tehzor-mcp .

HTTP (streamable-http) — для удалённого подключения, только с токеном:

TEHZOR_API_KEY=… TEHZOR_MCP_HTTP_TOKEN=$(openssl rand -hex 32) docker compose up -d

Клиент подключается к http://<host>:8000/mcp с заголовком Authorization: Bearer <TEHZOR_MCP_HTTP_TOKEN>. Наружу публикуйте только за reverse-proxy с TLS.

Подключение

Claude Code:

claude mcp add tehzor --env TEHZOR_API_KEY=… -- uvx --from "tehzor[mcp]" tehzor-mcp

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "tehzor": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "TEHZOR_API_KEY", "tehzor-mcp"],
      "env": {"TEHZOR_API_KEY": "…"}
    }
  }
}

Запись данных и подтверждение человеком

  • По умолчанию запись выключена: изменяющие инструменты видны агенту, но отказывают и ничего не отправляют. Включается TEHZOR_MCP_ALLOW_WRITE=1; TEHZOR_MCP_WRITE_TOOLS=problems_create,comments_create сужает список. TEHZOR_MCP_HIDE_WRITE=1 убирает изменяющие инструменты совсем.
  • Даже при включённой записи каждая изменяющая операция сначала возвращает превью (метод, путь, тело) и одноразовый confirmation_id (живёт 10 минут). Выполнение — только после подтверждения человеком: через диалог клиента (MCP elicitation) или инструмент confirm_operation. Отправляется ровно показанный запрос.
  • Создание никогда не повторяется автоматически (дублей не будет). Для большинства сущностей удаления в API нет.
  • Журнал аудита — TEHZOR_MCP_AUDIT_LOG (по умолчанию ~/.tehzor-mcp/audit.jsonl, в Docker — том /data); ФИО, телефоны и email маскируются, ключ не пишется.
  • Важно: при создании нарушения сервер Tehzor сам назначает исполнителей и наблюдателей по настройкам объекта — они получают уведомления (см. docs/API_FACTS.md).

Переменные окружения

Переменная По умолчанию Назначение
TEHZOR_API_KEY — ключ API (можно не задавать, если заголовок api-key подставляет прокси)
TEHZOR_BASE_URL https://api.tehzor.ru адрес API
TEHZOR_PROXY, TEHZOR_SSL_VERIFY —, 1 прокси и проверка TLS; также учитываются HTTPS_PROXY/NO_PROXY
TEHZOR_RATE_LIMIT, TEHZOR_MAX_CONCURRENCY 5, 5 запросов в секунду и параллельно
TEHZOR_MCP_ALLOW_WRITE 0 разрешить изменяющие операции (с подтверждением)
TEHZOR_MCP_WRITE_TOOLS все список разрешённых изменяющих инструментов
TEHZOR_MCP_HIDE_WRITE 0 не публиковать изменяющие инструменты
TEHZOR_MCP_CONFIRM_TTL 600 срок жизни confirmation_id, с
TEHZOR_MCP_AUDIT_LOG ~/.tehzor-mcp/audit.jsonl журнал аудита
TEHZOR_MCP_TRANSPORT, TEHZOR_MCP_HOST, TEHZOR_MCP_PORT stdio, 127.0.0.1, 8000 транспорт
TEHZOR_MCP_HTTP_TOKEN — обязательный токен для HTTP

Разработка

python -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/ruff check . && .venv/bin/mypy
.venv/bin/pytest                  # unit-тесты, без сети
.venv/bin/pytest -m contract      # живое API, только чтение (нужны ключ и TEHZOR_SEED_OBJECT_ID)

Статус

Этап Состояние
0. Каркас (pyproject, ruff, mypy, CI) готово
1. Ядро: транспорт с защитой сервера, ошибки, реестр операций, пагинация готово
2. Модели (по фактическим ответам) готово
3. Контрактные тесты: 49 читающих операций на живом API готово — 53 из 53
4. Изменяющие операции (24): dry_run, только на заглушках готово — 73 из 73 операций
5. MCP-сервер: 76 инструментов, 18 ресурсов, подтверждение записи; uvx и Docker готово
6. Релиз 0.2.0: CHANGELOG, гайд миграции, примеры, публикация через Trusted Publishing готово к публикации

Metadata

Release files for tehzor 0.2.0

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

Source distribution (sdist)

Source distribution for tehzor 0.2.0
File Size Uploaded Provenance Actions
tehzor-0.2.0.tar.gz 43.5 kB With provenance Details for tehzor-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for tehzor 0.2.0
File Interpreter ABI Platform Actions
tehzor-0.2.0-py3-none-any.whl Python 3 none any Details for tehzor-0.2.0-py3-none-any.whl

Total release size: 105.7 kB

Release files / tehzor-0.2.0.tar.gz

Download URL tehzor-0.2.0.tar.gz
Size 43.5 kB
Tags Source
SHA-256 checksum
How to use checksums
0c3b62396643a1dc53d4588a30e9d9ad72deb2fa9d33bace7bb1844f15959a3a
BLAKE2b-256 checksum
How to use checksums
6b870979627a639374739db85daa674c16c42efc554ce7c1d889656c0516b941
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Release files / tehzor-0.2.0-py3-none-any.whl

Download URL tehzor-0.2.0-py3-none-any.whl
Size 62.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a295fb040c19da8f832dbfd98a709fa70a6de82b7c8850dd3f38199b443b97c6
BLAKE2b-256 checksum
How to use checksums
2cc95823b6c29dddf6b7c31b6c3df46a8cf52b90993c1ff7bbce8264d98ccd3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Security for tehzor 0.2.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for tehzor-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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