English · Русский
Настройка
Настраивать в уроборосе почти нечего: два места — подключение сервера MCP и две переменные среды. Всё ниже проверено прогоном.
Подключение сервера MCP
Нужно, только если инструментом будет пользоваться ИИ-агент. Для работы руками хватает команды ouroboros.
После установки (uv, Homebrew, asdf) команда ouroboros-mcp лежит на PATH:
{ "mcpServers": { "ouroboros": { "type": "stdio", "command": "ouroboros-mcp" } } }Если работаете из клона хранилища и ставить ничего не хотите:
{ "mcpServers": { "ouroboros": {
"type": "stdio", "command": "uv",
"args": ["run", "--directory", "<путь к хранилищу>", "ouroboros-mcp"] } } }| поле | что значит |
|---|---|
mcpServers | список внешних инструментов, которые агент вправе звать |
ouroboros | имя, под которым сервер будет виден агенту |
"type": "stdio" | разговор идёт через обычный ввод-вывод запущенного процесса |
"command" | что запускать: сам ouroboros-mcp либо uv |
"args" | нужны только для uv: где лежит хранилище и что в нём запустить |
Куда положить этот кусок — Установка.
Ровно такая настройка лежит в хранилище в файле .mcp.json — Claude Code подхватывает её из корня проекта сам.
Проверить без агента
Сервер разговаривает обычным JSON-RPC через ввод-вывод, поэтому его можно опросить руками:
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}' \
| ouroboros-mcp{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05", … ,"serverInfo":{"name":"ouroboros-logger","version":"1.29.1"}}}
1.29.1— версия библиотеки MCP, а не уробороса. Так её проставляет сама библиотека; версия инструмента лежит вpyproject.toml.
Список средств, который сервер объявляет в ответ на tools/list, — семнадцать имён:
wrap_code_snippet wrap_file wrap_functions
read_trace trace_stats
create_project write_file read_file list_files execute finish
lint_file symbol_search document_symbols
references call_hierarchy describe_symbolЧто каждое делает — Чтобы ИИ понимал, как код исполняется.
Переменные среды
Их две, обе читаются в исходнике, и других нет.
| переменная | что делает |
|---|---|
OUROBOROS_DEBUG_INFO | путь к файлу записей. Не задана — записи идут в ./debug.info в рабочем каталоге процесса. ouroboros execute подставляет её сам, указывая на <draft>/debug.info |
OUROBOROS_MCP_TRANSPORT | как сервер MCP разговаривает: stdio (по умолчанию), sse или streamable-http. Другое значение — сервер откажется запускаться и назовёт допустимые |
Где они читаются: ouroboros/runtime.py:62 и ouroboros/mcp/server.py:942.
Пример: положить записи не рядом с программой, а в отдельный файл.
OUROBOROS_DEBUG_INFO=/путь/разбор.jsonl python3 stats.pyЧто нужно поставить
| нужно | когда |
|---|---|
| Python 3.12 или новее | всегда |
gcc или clang | обмазать и собрать C |
g++ или clang++ | обмазать и собрать C++ |
| Node | обмазать и запустить JavaScript и TypeScript |
elixir | собрать и запустить Elixir |
go | обмазать, собрать и запустить Go |
JDK (javac, java) | обмазать и собрать Java |
.NET SDK (dotnet) | обмазать и собрать C# |
clang-tidy, clangd | только для lint, symbols, refs, callers, describe |
libclang и @babel/parser уложены внутрь пакета: доставлять их отдельно не надо. Отдельной службы, базы данных или внешнего ключа не требуется.
Что настраивается в самой обмазке
Почти ничего — и это осознанно. Настройка обмазки — это выбор, что обмазывать, и делается он доводами команд, а не файлом настроек:
| нужно | как |
|---|---|
| обмазать не весь файл | wrap-functions <файл> <имя>… |
| посмотреть результат, не трогая файл | wrap-file <файл> --stdout |
| облегчённая запись для горячих функций (только C) | --minimal |
Файла настроек у инструмента нет.