Comet-ML/Opik-MCP

Comet-ML/Opik-MCP

от comet-ml
MCP сервер для Opik – подключает AI-ассистентов (Claude Code, Cursor, VS Code) к вашему рабочему пространству: читайте трейсы, логируйте оценки, сохраняйте версии промптов и задавайте вопросы ассис...

opik-mcp

Migrating from the old npx opik-mcp? The TypeScript server is deprecated and sunsets on 2026-11-15. Swap npx -y opik-mcp for uvx opik-mcp@latest in your MCP client config. Full guide: legacy/typescript/MIGRATION.md.

Model Context Protocol server for Opik + Ollie. Plug your AI host (Claude Code, Cursor, VS Code Copilot, MCP Inspector) directly into your Opik workspace — read traces, log scores, save prompt versions, and ask Ollie investigative questions, all from the chat.

Built for LLM engineers who already run Opik and want to drive it from the same AI assistant they code with.

You:    "Why did the experiment 'gpt-4o-rerank-v3' regress on factuality?"
Claude: → ask_ollie → reads experiment + traces → "Three traces failed because…"

You:    "Score trace 7f2e… 0.9 on helpfulness with reason 'great recovery'."
Claude: → write(score.create) → done

Install

opik-mcp is a Python package (requires Python 3.13+). The recommended way to run it is uvx, which fetches and runs the latest published version on demand — no global install, no virtualenv juggling.

Инструменты были проиндексированы:
list

List Opik entities with optional filters and pagination. Output is a pipe-delimited table with id, name, and a few entity-specific columns, plus a pagination footer when more pages exist. When filters apply, the first line echoes what was applied. Use read() to get full details on any specific item. Project-scoped types require their parent: - trace: project_id or project_name - span: project_id or project_name (searches spans across the project) - thread: project_id or project_name - agent_insights_issue: project_id or project_name (Diagnostics issues, open ones by default; columns: severity, status, total_occurrences, latest_count, last_seen) - test_suite_item: test_suite_id - prompt_version: prompt_id Workspace-wide types (project, experiment, prompt, test_suite) accept an optional name substring filter. trace, span, thread, experiment accept an OQL filters string and a sort; trace, span, thread also take a since/until window and free-text search.

Параметры
  • entity_typeenumобязательный

    One of: agent_insights_issue, experiment, project, prompt, prompt_version, span, test_suite, test_suite_item, thread, trace.

  • filtersstring | null

    OQL filter for trace, span, thread, experiment: <field>[.<key>] <op> <value> [AND ...]; ops = != > >= < <= contains not_contains starts_with ends_with is_empty is_not_empty in not_in; strings quoted, numbers bare (duration in ms). E.g. 'error_info is_not_empty AND duration > 5000', 'feedback_scores.accuracy < 0.5 AND start_time >= "2026-09-08T00:00:00Z"'. trace/span/thread default to source = "sdk". Reference: schema("list.trace").

  • namestring | null

    Optional substring filter on entity name. Supported for project, experiment, prompt, test_suite; ignored for sub-collections.

  • pageinteger

    Page number (1-indexed).

  • project_idstring | null

    Parent project UUID for project-scoped lists (trace, span, thread, agent_insights_issue). Pass this OR project_name.

  • project_namestring | null

    Parent project name — alternative to project_id for project-scoped lists, so you don't need to resolve the UUID first.

  • prompt_idstring | null

    Required when listing prompt_versions. UUID of the prompt.

  • searchstring | null

    Free text for trace, span, thread: matches anywhere in id, name, input, output, metadata, tags, thread_id (spans: model, provider too). Expensive on large projects; narrow with since first.

  • sincestring | null

    Start of the time window for trace, span, thread, agent_insights_issue: a relative span ('30m', '1h', '24h', '7d') or an ISO-8601 instant with timezone. Trace/span/thread windows are by record creation time (for an exact start_time bound use filters); Diagnostics issues aggregate per report day, so their window is the UTC days it spans and defaults to all-time, matching the Diagnostics page.

  • sizeinteger

    Items per page. Capped at 100.

  • sortstring | null

    Sort for trace, span, thread, experiment: '<field> [asc|desc]', desc by default. E.g. 'duration desc', 'total_estimated_cost', 'feedback_scores.accuracy asc', 'usage.total_tokens'. One field only.

  • statusenum | null

    agent_insights_issue only: which Diagnostics issues to list. Defaults to 'open' (what is broken now); 'resolved' and 'closed' show issues already dealt with. Ignored for other entity types.

  • test_suite_idstring | null

    Required when listing test_suite_items. UUID of the suite.

  • untilstring | null

    End of the time window, same forms as since.

read

Read any Opik entity by ID, name, or opik:// URI, with adaptive compression. Prefer a UUID for id — it's faster (single API call) and unambiguous. Name lookup is available for: project, experiment, prompt, test_suite — name lookup is slower (two API calls) and may return multiple matches, in which case the tool lists the candidates so you can retry with the correct ID. Special shapes: - trace: returns {trace, spans, spansTruncated} with up to 200 spans inlined. - prompt: returns {prompt, versions, versionsTruncated} with up to 100 versions. - thread: returns {thread, messages, messagesTruncated} — each message is one turn's trace input/output + a trace_id to read('trace', id). Needs project scope: pass a thread link/URI, or project_id/project_name. - agent_insights_issue: returns {issue, example_trace_ids, details, url, trace_url_template} — the Diagnostics issue with cause and suggested fix, the deduped ids of traces that exhibit it (open one with read('trace', id)), the per-day breakdown, the issue's Diagnostics page link, and a template for linking any example trace (both links omitted when the Opik URL or the session's workspace is unknown). Needs project scope like thread. - All others: the flat record from /v1/private/{entity}/{id}. Output is a one-line [read: …] header (entity_type, id, compression tier, returned tokens, full tokens) followed by compact JSON.

Параметры
  • entity_typeenumобязательный

    One of: agent_insights_issue, experiment, project, prompt, span, test_suite, thread, trace.

  • idstringобязательный

    UUID, entity name (for nameable types), full opik:// URI (e.g. opik://traces/<uuid>), or a pasted Opik link — a thread link or a Diagnostics page link (…/projects/<pid>/diagnostics?issue=<id>). When a URI/link is passed, entity_type (and, for project-scoped entities, the project) is overridden from it.

  • max_tokensinteger | null

    Optional token budget. If the entity is under the budget, it's returned in full; otherwise compressed to MEDIUM (long strings truncated with path hints) or SKELETON (structure only). Default ~8k tokens.

  • project_idstring | null

    Project UUID. Required for entity_type='thread' and 'agent_insights_issue' unless the id is a full Opik URL/URI (which carries the project). Ignored for globally-unique entities like trace/span.

  • project_namestring | null

    Project name — alternative to project_id for project-scoped reads (thread, agent_insights_issue).

  • sincestring | null

    agent_insights_issue only: start of the window for the per-day details — a relative span ('7d', '24h') or an ISO-8601 instant with timezone, truncated to UTC report days. Omit both bounds for all-time, matching the Diagnostics page. Rejected for other entity types.

  • untilstring | null

    End of the window, same forms as since.

read_skill

Загружает один агентный навык Opik - те же навыки, которые Opik публикует для кодинг-агентов. Используй его, когда нужного навыка ещё нет в контексте. КОГДА ВЫЗЫВАТЬ: перед тем как инструментировать, оценивать или отлаживать с Opik, когда соответствующий навык из списка ниже ещё НЕ загружен: в проекте нет локальной копии, и ничего не загружалось ранее в этой сессии. Если он уже есть, читай то, что есть, а не загружай заново. Сопоставь задачу пользователя с навыком: - opik: «почему мои трейсы не отображаются», «как добавить метаданные в спан», «как версионировать промпт» - любые запросы по SDK. Чтобы проинструментировать код, используй opik-instrument. - opik-diagnose: «что сломано в проде», «какие трейсы требуют внимания», «найди падающие или медленные трейсы», «проведи триаж моего агента». - opik-evaluate: пользователь хочет измерить или улучшить качество AI-продукта либо спрашивает про эвалы, джуджи или метрики оценки. - opik-explain: «почему этот трейс упал», «объясни этот трейс», «найди проблему в этом трейсе», «почему мой агент медленный или ошибается». - opik-instrument: «проинструментируй мой код», «добавь трейсинг Opik», «добавь наблюдаемость», «добавь трейсинг моему агенту». skill_name принимает любую из этих форм: - opik - сам навык - opik/references/tracing-python.md - один документ внутри навыка - opik://skills/opik/SKILL.md - тот же документ по его resource URI, как перечислено в resources/list Читаемые пути, с префиксом из имени навыка, как указано выше: - opik: SKILL.md, references/agent-patterns.md, references/best-practices.md, references/evaluation-datasets.md, references/evaluation-test-suites.md, references/integrations.md, references/observability.md, references/production.md, references/tracing-python.md, references/tracing-rest-api.md, references/tracing-typescript.md - opik-diagnose: SKILL.md - opik-evaluate: SKILL.md, references/error-analysis.md, references/eval-audit.md, references/evaluate-rag.md, references/generate-synthetic-data.md, references/validate-evaluator.md, references/write-judge-prompt.md - opik-explain: SKILL.md - opik-instrument:…

Параметры
  • skill_namestringобязательный

    A skill name ('opik-instrument'), a path inside a skill ('opik/references/tracing-python.md'), or a resource URI ('opik://skills/opik/SKILL.md'). The tool description lists every skill and every readable path.

schema

Return the JSON Schema, OAuth scope, and one validated example for a write operation's data payload, or — for list.trace / list.span / list.thread / list.experiment — the list tool's filterable fields with their operators and its sortable fields. Pure lookup — no backend call.

Параметры
  • operationenumобязательный

    Write operation whose schema to return, or list.<entity> (list.trace, list.span, list.thread, list.experiment) for the filter and sort reference of the list tool.

write

Создаёт, обновляет или аннотирует сущности Opik. Поле operation выбирает, какую пару сущность/действие вызвать; data содержит полезную нагрузку для этой операции (один объект или массив до 1000 для пакетной обработки). Операции: - trace.create: Регистрирует один trace (или пакет). Устанавливает родителя для spans/scores/comments. (пакет разрешён) - trace.update: Завершает или изменяет существующий trace по id. (пакет разрешён) - span.create: Регистрирует один span на существующем trace (или пакет); обязательно: trace_id (пакет разрешён) - score.create: Прикрепляет числовую оценку обратной связи к trace, span или thread; обязательно: target, target_id (пакет разрешён) - comment.create: Прикрепляет текстовый комментарий к trace, span или thread; обязательно: target, target_id - prompt_version.save: Сохраняет новую версию prompt. Создаёт prompt по имени, ели отсутствует; BE автоматически назначает commit, если он опущен. - test_suite.create: Создаёт тестовый набор Opik 2.0 (набор для оценки). Путь BE остаётся /v1/private/datasets для обратной совместимости; диспетчер вставляет type='evaluation_suite' в запрос. - test_suite_item.upsert: Выполняет upsert элементов в тестовый набор. Всегда передавайте конверт {test_suite_name|test_suite_id, items: [...]}; обязательно: test_suite_name, test_suite_id - experiment.create: Создаёт эксперимент в рамках тестового набора; обязательно: test_suite_name, test_suite_id - experiment_item.create: Прикрепляет строки trace и dataset_item к експерименту. Всегда конверт-массив; обязательно: experiment_id, test_suite_item_id, trace_id (пакет разрешён) - thread.close: Закрывает thread (помечает как неактивный/завершённый). Передайте thread_id + project (project_name или project_id). - thread.open: Открывает ранее закрытый thread (помечает как активный). Передайте thread_id + project (project_name или project_id). Примечания: - Форма data: объект для одиночного, массив для пакетной обраотки (где подерживается). Операции, всегда требующие конверта (test_suite_item.upsert, experiment_item.create), принимают свой список внутри конверта, а не на верхнем уровне. - dry_run=true: проверяет корректность и авторизацию, не вызывая бэкенд.

Параметры
  • dataobject | any[]обязательный

    Payload for the operation. Object for a single write, or array (max 1000 elements) for batch. Always-envelope operations (test_suite_item.upsert, experiment_item.create) take their list inside the envelope, not at the top level.

  • dry_runboolean

    Validate against the operation's schema and OAuth scope without calling the backend. Returns {dry_run: true, would_call: ...}.

  • idempotency_keystring | null

    Optional client-supplied UUID. Re-running with the same key is a no-op on the backend. Takes precedence over data.id when both are set.

  • operationenumобязательный

    The entity/verb pair to invoke. See tool description for the list. Call schema(operation) for the JSON Schema, example, and required scope.

Похожие MCP-сервера

last9/last9-mcp-server

last9/last9-mcp-server

официальный

Last9 MCP-сервер подключает AI-агентов (Claude, Cursor, Windsurf) к вашим производственным данным observability — логам, метрикам, трейсам, алертам. Без установки бинарников, через OAuth. Полезен S...

Go60
Sentry MCP

Sentry MCP

официальный

Официальный MCP-сервер Sentry для доступа к ошибкам, issues и трейсам приложения прямо из AI-агента. Отладка, анализ производительности и root-cause через Seer.

TypeScript846
us-all/mlflow-mcp-server

us-all/mlflow-mcp-server

Полнофункциональный MCP-сервер для MLflow с 82 инструментами - от экспериментов до трейсов и оптимизации. Агрегация данных и токен-экономия ускоряют отладку AI-пайплайнов.

TypeScript1
mshegolev/jaeger-mcp

mshegolev/jaeger-mcp

MCP-сервер для read-only доступа к Jaeger: поиск трейсов, анализ спанов, сравнение трасс, карта зависимостей сервисов и прогнозирование деградации — всё через Claude без покидания диалога.

Python1
iris-eval/mcp-server

iris-eval/mcp-server

Iris - open-source MCP сервер для оценки безопасности и качества AI-агентов. Проверяет вывод на PII, инъекции, галлюцинации, контролирует стоимость. Логирует трассировки, имеет веб-дашборд. Работает с любым MCP-клиентом без SDK.

TypeScript9
VictoriaMetrics-Community/mcp-victorialogs

VictoriaMetrics-Community/mcp-victorialogs

официальный

MCP-сервер для VictoriaLogs. Предоставляет AI-агентам доступ к чтению логов, метрик, полей и встроенной документации через LogsQL-запросы. Упрощает отладку и мониторинг для инженеров.

Go97
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин