Подключение Value Stream к Codex и Claude Desktop¶
Эта инструкция помогает подключить MCP-сервер Value Stream локально или по HTTP, получить метрики из подготовленного workspace и проверить построение графиков. Основные примеры рассчитаны на macOS; особенности Windows приведены ниже.
По умолчанию Value Stream использует stdio: клиент запускает дочерний процесс
valuestream serve-mcp и общается с ним через стандартные потоки.
Отдельно запускать сервер, открывать порт или указывать HTTP URL не нужно.
serve-api — другой интерфейс, его адрес нельзя использовать как MCP endpoint.
Для удалённого подключения используйте Streamable HTTP с обязательным
Bearer-токеном; запуск и проверка описаны в разделе 5 ниже.
1. Подготовьте окружение и данные¶
Нужны Python 3.11+, установленный uv, локальная копия проекта и workspace
с загруженными агрегатами. Установка описана в
Deployment, а создание
тестовых данных и загрузка — в Getting started.
Для MCP требуется extra ai; если остальные дополнительные зависимости не
нужны, достаточно выполнить в корне репозитория:
uv sync --extra ai
Синхронизация без других extras может удалить их из окружения. Если нужны также
API, PNG и инструменты разработки, используйте установку с --all-extras
из руководства Deployment.
Для примеров ниже замените оба абсолютных пути:
| Что | Пример для macOS |
|---|---|
| Исполняемый файл из окружения проекта | /Users/yourname/projects/value_stream_public/.venv/bin/valuestream |
| Workspace с каталогом и агрегатами | /Users/yourname/projects/value_stream_public/examples/fat |
examples/fat подходит, если вы уже загрузили в него данные. На чистой копии
репозитория готовых агрегатов нет: сначала выполните учебный сценарий для
examples/demo, затем подставьте его путь. Имена метрик в этих каталогах различаются.
Проверьте установленную команду:
/Users/yourname/projects/value_stream_public/.venv/bin/valuestream serve-mcp --help
В конфигурациях используйте абсолютные пути без ~, $HOME или переменных
оболочки. command содержит только путь к программе, каждый аргумент задаётся
отдельной строкой в args. Активация виртуального окружения не требуется.
MCP-инструменты не требуют отдельного API-ключа модели или настройки LLM
в workspace. Свободный вопрос разбирает AI-клиент: он выбирает метрику,
параметры и вызывает инструменты аналитики. Встроенного инструмента chat
в MCP нет; графики выдаются через metric_chart_query или tile_query.
2. Подключите Codex¶
Выберите один способ: CLI или ручное редактирование конфигурации.
Через CLI¶
Если codex доступен в терминале:
codex mcp add valuestream \
-- /Users/yourname/projects/value_stream_public/.venv/bin/valuestream \
serve-mcp /Users/yourname/projects/value_stream_public/examples/fat
Проверьте сохранённую запись:
codex mcp list
Через файл конфигурации¶
Добавьте в ~/.codex/config.toml следующий блок. Если valuestream уже
существует, измените его, не создавая повторную секцию:
[mcp_servers.valuestream]
command = "/Users/yourname/projects/value_stream_public/.venv/bin/valuestream"
args = ["serve-mcp", "/Users/yourname/projects/value_stream_public/examples/fat"]
startup_timeout_sec = 60
Глобальная конфигурация используется desktop-приложением, CLI и IDE extension.
Для настройки только одного доверенного проекта можно использовать его
.codex/config.toml.
Проверьте соединение¶
Перезапустите клиент после изменения настроек. В Codex CLI откройте /mcp:
сервер valuestream должен подключиться и показать инструменты.
В desktop-приложении проверьте его в настройках MCP Servers.
Запись в codex mcp list подтверждает настройку, но сама по себе не доказывает
успешное соединение — выполните сценарии из раздела 4.
Формат и команды: официальная документация OpenAI.
3. Подключите Claude Desktop¶
Откройте настройки приложения Claude Desktop → Developer → Edit Config. Файл конфигурации:
| Система | Путь |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
Добавьте valuestream внутрь существующего объекта mcpServers, сохранив
остальные серверы и настройки. Для нового файла используйте:
{
"mcpServers": {
"valuestream": {
"command": "/Users/yourname/projects/value_stream_public/.venv/bin/valuestream",
"args": [
"serve-mcp",
"/Users/yourname/projects/value_stream_public/examples/fat"
]
}
}
}
JSON не допускает комментариев и запятых после последнего элемента.
Полностью завершите Claude Desktop и откройте его снова.
В Developer проверьте статус; в новом диалоге откройте + → Connectors
и найдите valuestream и его инструменты. Названия пунктов зависят от версии.
Инструкция MCP
описывает ручную конфигурацию и диагностику.
Это локальная интеграция Claude Desktop, а не удалённый Custom Connector: такой сервер не становится доступен в claude.ai или Cowork. Различия локальных и удалённых подключений.
Если используется Windows¶
Укажите установленный executable из .venv\Scripts\valuestream.exe.
В JSON обратный слеш удваивается, например:
{
"command": "C:\\projects\\value_stream_public\\.venv\\Scripts\\valuestream.exe",
"args": ["serve-mcp", "C:\\projects\\value_stream_public\\examples\\fat"]
}
Это фрагмент записи сервера, а не полный файл Claude. В секции TOML Codex используйте строки в одинарных кавычках, где слеши не нужно экранировать:
command = 'C:\projects\value_stream_public\.venv\Scripts\valuestream.exe'
args = ['serve-mcp', 'C:\projects\value_stream_public\examples\fat']
Windows-конфигурация здесь приведена как шаблон, её выполнение в рамках этой проверки не тестировалось.
4. Выполните тестовые сценарии¶
Одинаковые запросы подходят обоим клиентам. Попросите использовать именно
MCP-инструменты valuestream, чтобы ответ не был получен из файлов или догадок.
Ожидаются 9 инструментов, два ресурса и два шаблона запросов;
с --enable-sql инструментов будет 11. Полный список — в
API & MCP reference.
Проверка каталога и готовности¶
Через MCP valuestream вызови workspace_status_tool и metric_list с limit=5. Покажи доступные метрики и сообщи, готовы ли агрегаты для запросов.
Успех: возвращается каталог, а необходимые процессоры имеют статус ready.
Наличие списка метрик без готовых агрегатов подтверждает связь, но ещё не
готовность данных. Если есть next_offset, следующую страницу запрашивают
с этим значением offset.
Метрика и пагинация¶
Для загруженного examples/fat:
Вызови metric_query для CTR, group_by=["Channel"], limit=2. Если next_offset не null, получи следующую страницу с теми же параметрами. Покажи CTR по всем каналам и сведения о происхождении данных.
Ожидаемый результат содержит строки, row_count, returned_rows,
next_offset и provenance. Для examples/demo используйте
VS_Engagement_Rate вместо CTR; сначала подтвердите имя через metric_list.
График¶
Вызови metric_chart_query для CTR с chart_kind="bar", x="Channel", y="CTR", group_by=["Channel"], color=null, facet_col=null, value_format="percent", render="html". Дай путь к готовому HTML.
Успех: render.path указывает на созданный локальный файл. Откройте его
в браузере. HTML содержит Plotly и работает без CDN; встраивание графика
непосредственно в диалог зависит от клиента. Для demo замените и metric,
и y на VS_Engagement_Rate.
KPI и обработка ошибки¶
Через dashboard_list найди KPI-плитку. Вызови kpi_query с её dashboard_id, page_id и tile_id. Покажи значение, период, изменение и freshness.
Вызови metric_query с metric="missing_metric_smoke_test". Сообщи полученную ошибку, не подставляя другую метрику.
KPI должен возвращать период и доступные данные сравнения. Несуществующая
метрика должна дать isError: true и сообщение unknown metric.
5. Подключение по HTTP¶
Один процесс обслуживает один workspace, выбранный при запуске. На машине
с данными подготовьте окружение с extra ai и загрузите агрегаты, как в
разделе 1. Для HTTP не требуется extra api: сервер использует MCP SDK и
Uvicorn из extra ai.
Задайте секрет через VALUESTREAM_MCP_TOKEN в окружении сервиса. Для локальной
проверки ниже используется учебное значение; при развёртывании замените его
своим секретом.
export VALUESTREAM_MCP_TOKEN=replace-with-your-secret
uv run valuestream serve-mcp examples/demo --transport http --port 8001
Endpoint: http://127.0.0.1:8001/mcp. Клиент должен поддерживать Streamable HTTP
и передавать Authorization: Bearer <token> в каждом запросе. Этот сервер
не запускает OAuth-вход. Используйте клиент, который позволяет задать токен
или заголовок вручную. Настройки command/args из разделов 2–3 относятся
к stdio; для HTTP задаётся URL.
Codex по IP в локальной сети¶
Домен и HTTPS не обязательны для прямого подключения внутри доверенной
локальной сети. Допустим, IP машины с workspace — 192.168.1.50.
Замените этот адрес своим IP во всех примерах ниже.
На сервере, из каталога проекта:
uv sync --extra ai
export VALUESTREAM_MCP_TOKEN='replace-with-your-secret'
uv run valuestream serve-mcp /absolute/path/to/workspace --transport http \
--host 0.0.0.0 --port 8001 --allowed-host 192.168.1.50:8001
Workspace должен уже содержать загруженные агрегаты. 0.0.0.0 означает
прослушивание всех сетевых интерфейсов и требует явного --allowed-host.
Клиент подключается к http://192.168.1.50:8001/mcp; 0.0.0.0 не является
адресом для подключения. Разрешите входящий TCP-порт 8001 в firewall сервера
для нужных машин локальной сети. Bearer-токен и ответы при HTTP передаются
без шифрования; для доступа через интернет используйте HTTPS.
На машине с Codex desktop добавьте в ~/.codex/config.toml:
[mcp_servers.valuestream_remote]
url = "http://192.168.1.50:8001/mcp"
http_headers = { Authorization = "Bearer replace-with-your-secret" }
Подставьте тот же секрет, что в VALUESTREAM_MCP_TOKEN на сервере. Здесь он
хранится непосредственно в конфигурационном файле. Если секция
valuestream_remote уже существует, измените её вместо добавления повторной.
Перезапустите Codex и откройте новый чат.
Для Codex CLI можно хранить токен в окружении процесса клиента:
export VALUESTREAM_MCP_TOKEN='replace-with-your-secret'
codex mcp add valuestream_remote --url http://192.168.1.50:8001/mcp \
--bearer-token-env-var VALUESTREAM_MCP_TOKEN
codex
Эквивалентный блок конфигурации (выберите его вместо http_headers):
[mcp_servers.valuestream_remote]
url = "http://192.168.1.50:8001/mcp"
bearer_token_env_var = "VALUESTREAM_MCP_TOKEN"
Переменная должна быть доступна процессу Codex на клиентской машине.
export в отдельном терминале не передаёт её уже запущенному desktop-приложению.
Формат настроек описан в
официальной документации OpenAI.
Для проверки соединения попросите Codex: «Используй valuestream_remote:
вызови metric_list и покажи доступные метрики». Затем можно запросить:
«Построй график выбранной метрики и верни его в PNG». Если нужны
SQL-инструменты, добавьте --enable-sql при запуске сервера; для PNG нужны
extra viz и Chrome/Chromium на сервере.
HTTPS и удалённый адрес¶
Для доступа через интернет поставьте перед сервером HTTPS reverse proxy.
Например, если публичный адрес — https://metrics.example.com/mcp, добавьте
hostname в allowlist и оставьте backend на loopback:
uv run valuestream serve-mcp examples/demo --transport http \
--host 127.0.0.1 --port 8001 --allowed-host metrics.example.com
Прокси должен направлять /mcp на http://127.0.0.1:8001/mcp, сохранять
Authorization и передавать Host metrics.example.com. Если Host содержит
порт, добавьте соответствующее значение, например
--allowed-host metrics.example.com:443. Origin обычно отсутствует у desktop
клиентов; если клиент передаёт его, добавьте точное значение через
--allowed-origin https://client.example.com. Это не включает поддержку CORS.
Проверка настоящим MCP-клиентом¶
Запустите этот скрипт в другом терминале через uv run python, пока сервер
работает. Для удалённой проверки установите VALUESTREAM_MCP_URL в LAN URL
из примера выше либо публичный HTTPS URL, а VALUESTREAM_MCP_TOKEN — в тот
же секрет, что у сервера.
import asyncio
import os
import httpx2
from mcp.client.session import ClientSession
from mcp.client.streamable_http import streamable_http_client
async def main():
url = os.environ.get("VALUESTREAM_MCP_URL", "http://127.0.0.1:8001/mcp")
token = os.environ["VALUESTREAM_MCP_TOKEN"]
async with httpx2.AsyncClient(
headers={"Authorization": f"Bearer {token}"}
) as http:
async with streamable_http_client(url, http_client=http) as (read, write):
async with ClientSession(read, write) as client:
await client.initialize()
print([tool.name for tool in (await client.list_tools()).tools])
result = await client.call_tool("metric_list", {"limit": 5})
print(result.model_dump(by_alias=True))
asyncio.run(main())
Ожидаются 9 инструментов, либо 11 с --enable-sql, и успешный ответ
metric_list. Без токена или с неверным токеном сервер возвращает HTTP 401;
недопустимые Host/Origin дают 421/403. Проверка установления MCP-соединения
и вызова инструмента надёжнее простого открытия URL в браузере.
Для удалённого графика используйте render="spec" либо render="png"
(для PNG на сервере нужен extra viz и Chrome/Chromium). HTML-режимы
возвращают путь к файлу на сервере; HTTP MCP не публикует такие файлы.
Права всех обладателей токена одинаковы. Для смены workspace перезапустите
сервер с другим путём; для нескольких workspace нужны отдельные процессы,
адреса и токены. Подробности — в Security.
После ручной проверки завершите сервер через Ctrl+C. В рабочем развёртывании жизненным циклом HTTP-сервера управляет supervisor.
6. Если подключение не работает¶
| Симптом | Что проверить |
|---|---|
ENOENT, программа не найдена |
Абсолютный command, наличие executable, установка extra ai именно в этом окружении |
| Сервер есть в настройках, но инструментов нет | Перезапуск клиента, включён ли сервер, журнал запуска; в управляемом Claude локальные MCP могут быть запрещены администратором |
| Таймаут запуска | Запуск executable напрямую; для Codex параметр startup_timeout_sec в примере |
| Ошибка JSON/TOML | Синтаксис, кавычки, повторные секции; не переносите JSON Claude в TOML Codex |
| Метрики видны, но запрос не выполняется | workspace_status_tool; загрузите или пересчитайте агрегаты по runbook |
unknown metric |
Имена из metric_list текущего workspace, включая регистр |
| HTML создан, но не виден в диалоге | Откройте локальный файл из render.path в браузере |
Ошибка render="png" |
Extra viz и Chrome/Chromium; подробности в справке рендеринга; для проверки используйте HTML |
Логи Claude: ~/Library/Logs/Claude/ на macOS или %APPDATA%\Claude\logs
на Windows. Проверяйте mcp.log и mcp-server-valuestream.log.
Справка по журналам.
Если вручную запустить serve-mcp без клиента, процесс будет ждать MCP-сообщений;
это нормально, но не является проверкой соединения. Завершайте такой пробный
запуск через Ctrl+C. Обычным жизненным циклом сервера управляет клиент.
Это описание относится к stdio; HTTP-сервер запускается отдельно и слушает порт.
Смена workspace и дополнительные возможности¶
Для смены workspace измените второй элемент args и перезапустите клиент.
Для нескольких workspace создайте записи с разными именами и путями.
Изменения YAML-каталога подхватываются сервером автоматически, но новые
определения вычислений могут требовать пересчёта агрегатов.
SQL выключен по умолчанию. Если он нужен, добавьте "--enable-sql" в args.
Это включает только ограниченные запросы к агрегатам; см.
правила SQL.
Сервер не изменяет каталог и агрегаты. Экспорт графиков создаёт локальные файлы; выданный путь не является постоянным хранилищем — нужные результаты сохраните отдельно. Результаты MCP передаются выбранному AI-клиенту для ответа; локальный транспорт сам по себе не означает локальное выполнение модели. Подробнее — Security.
Что проверено¶
22 сентября 2026 года на macOS выполнена проверка через Codex app-server
0.155.1 с workspace examples/fat: обнаружены 10 инструментов и 2 ресурса,
успешно вызваны каталог метрик, запрос CTR, KPI, HTML-рендеринг и ошибочный запрос.
В том наборе данных KPI CTR за сентябрь 2024 года составил около 2,4004%; это
пример результата конкретного набора, а не обязательное значение проверки.
Шаги Claude Desktop сверены с официальной документацией; запуск именно в Claude Desktop в этой проверке не выполнялся.
7. Создайте каталог по семплу¶
Для создания каталога агрегаты заранее не нужны. Включите авторинг при запуске сервера; аргумент workspace может указывать на ещё не существующий каталог:
uv run valuestream serve-mcp /absolute/path/new-workspace --enable-authoring
Добавьте --enable-authoring в args записи MCP-клиента и переподключите его.
Для HTTP тот же флаг добавляется к команде запуска из раздела 5; все обладатели
токена получают доступ к применению конфигурации. Без флага набор инструментов
остаётся прежним. REST API не получает операций записи.
Разместите CSV или Parquet в new-workspace/data/, например data/events.csv.
MCP не загружает и не копирует исходные файлы. Затем попросите клиента:
Создай каталог по data/events.csv. Нужно считать объём событий по региону. Покажи предложенные источники, процессоры, метрики и отчёт до применения.
Клиент выполняет следующую последовательность:
sample_profile(sample_path="data/events.csv", limit=1000)возвращает схему и статистику.approved_fieldsограничивает доступные поля; значения не возвращаются, если не указатьexample_fieldsотдельно.catalog_draft_create(sample_path="data/events.csv", source_id="events", user_goals="Объём событий по региону")создаёт черновик всех четырёх файлов. Минимальный вариант считает все строки. Ответ содержит общий со Studio промпт и словари; модель клиента уточняет бизнес-смысл и предлагает аналитику.catalog_draft_updateпринимаетdraft_id, текущийexpected_revisionи полные секцииsections. Можно добавить преобразования источника, процессоры, метрики, графики; исходный reader менять нельзя. Неоднозначные исходы и форматы дат клиент уточняет у пользователя.catalog_draft_validate(draft_id=...)проверяет ссылки, выражения, поля семпла и выполнение на ограниченном числе строк. Ошибки исправляются новым обновлением черновика; конфигурация на диске ещё не меняется.catalog_draft_preview(draft_id=...)показывает полный каталог, diff и списки объектов. Только валидный вариант получаетreview_token.- После разрешения пользователя
catalog_draft_apply(draft_id=..., review_token=...)записывает каталог. Повторный вызов с тем же токеном возвращает квитанцию. Изменение черновика, семпла или файлов конфигурации блокирует применение старой ревизии.
После применения проверьте valuestream://catalog и metric_list. Квитанция
содержит requires_data_run и список источников. Запустите обработку через
обычный процесс загрузки,
затем проверьте workspace_status_tool и выполните metric_query.
Применение само по себе не создаёт агрегаты и не запускает ingestion.
Черновики хранятся в памяти час и теряются при перезапуске сервера. Одновременно
допускается 32 черновика; catalog_draft_discard освобождает ненужный.
CSV/Parquet читаются с ограничением строк, образцы не сохраняются в черновике.
JSON и архивы остаются доступны через Studio, но в MCP-авторинге пока не
поддерживаются. Проверка семпла не гарантирует одинаковую схему всех будущих
файлов. При наличии каталога новые источники добавляются без изменения
несэмплированных источников и их зависимостей.