exp-agent
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@exp-agentWhy did lego_high_lr stop training early and never produce final results?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ExpAgent:读懂训练实验的工具调用 Agent
这是一个小型 LLM Agent,用来回答关于机器学习训练实验的问题,比如:
"lego 场景里哪个实验的 LPIPS 最好?"
"lego_high_lr 为什么没有最终结果?"
"room_short 计划训练多少步?"
Agent 不会自己去猜数字,所有数值都通过工具从实验目录里读出来。同一套工具还有三种用法:作为 MCP 服务接入 Claude Code 等客户端,作为 HTTP API 供后端调用,以及在命令行里直接调用。项目自带评测集和 43 个单元测试,只用 Python 标准库,没有任何第三方依赖。
示例数据说明:
examples/runs/里的 5 个实验是examples/make_sample_runs.py用固定随机种子生成的模拟数据,曲线形状仿照 3D Gaussian Splatting 的训练日志,不是真实训练结果。
架构
┌──────────── 入口 ────────────┐
CLI (ask/call) HTTP API (/ask, /tools) MCP stdio 服务
│ │ │
▼ ▼ │
┌───────────────── Agent 循环 ─────────┐ │
│ 1. 把问题和工具 schema 发给 LLM │ │
│ 2. LLM 返回 tool_calls → 校验并执行 │ │
│ 3. 结果(或错误)作为 tool 消息回传 │ │
│ 4. 重复,直到 LLM 直接给出答案或到步数上限 │ │
└──────────────────┬───────────────────┘ │
▼ ▼
Toolbox:参数校验 + 6 个工具 ◄─────────┘
▼
RunStore:只读访问实验目录(白名单防路径穿越)文件 | 作用 |
6 个工具、JSON Schema 参数校验、NaN 处理 | |
Agent 循环、错误回传、重复调用拦截、步数上限、调用轨迹 | |
OpenAI 兼容接口客户端(标准库 urllib 实现,带重试),以及测试用的 ScriptedLLM | |
手写的 MCP 服务(JSON-RPC 2.0 over stdio) | |
HTTP JSON API | |
评测集、评分逻辑、非 LLM 的关键词路由基线 | |
单元测试 |
Related MCP server: tracker-mcp
快速开始
需要 Python ≥ 3.10。项目没有第三方依赖,用虚拟环境只是为了和系统 Python 隔离:
git clone https://github.com/lfy20040505666/exp-agent.git
cd exp-agent
python3 -m venv .venv
source .venv/bin/activate不需要 API key 就能做的事:
python -m expagent tools # 查看工具及参数 schema
python -m expagent call diagnose_run '{"run": "lego_high_lr"}' # 直接调用工具
python -m unittest discover -s tests # 跑单元测试
python -m evals.run_eval --llm baseline # 跑基线评测diagnose_run 的实际输出:
{
"run": "lego_high_lr",
"healthy": false,
"issues": [
"no final evaluation: eval.json is missing",
"loss became nan at step 7000 (training diverged)",
"loss spiked 5.9x at step 6500 (0.03857 -> 0.2273)",
"training stopped early: last logged step 7500 of 30000"
],
"last_logged_step": 7500,
"planned_iterations": 30000
}接入真实 LLM(任何 OpenAI 兼容接口都可以;默认是 DeepSeek):
export EXPAGENT_API_KEY=你的key
export EXPAGENT_BASE_URL=https://api.deepseek.com # 可选,换成其他兼容服务的地址
export EXPAGENT_MODEL=deepseek-chat # 可选
python -m expagent ask "lego 场景里哪个实验的 LPIPS 最好?"运行时会把每一步工具调用打印到 stderr;加 --json 可以输出完整轨迹(每一步的参数、结果、耗时,以及 token 用量)。
用自己的实验目录:--runs-dir /path/to/runs,或者设置环境变量 EXPAGENT_RUNS_DIR。每个实验一个子文件夹,里面放 config.json(必需)、metrics.jsonl(每行一条日志)和 eval.json(最终指标,可以没有)。
工具
工具 | 作用 |
| 列出所有实验,以及场景、计划步数、是否有最终结果;可按场景过滤 |
| 读取某个实验的训练配置 |
| 读取最终的 PSNR / SSIM / LPIPS;没有结果时明确返回 |
| 按某个指标给多个实验排序(知道 LPIPS 越低越好),跳过没有结果的实验 |
| 训练曲线降采样,保留首尾两个点,并给出最后一个值 |
| 检查缺少 eval、loss 出现 NaN/inf、loss 突增、提前停止、高斯数量异常 |
MCP 服务
python -m expagent mcp 会启动一个 stdio MCP 服务,实现了 initialize(协议版本协商)、ping、tools/list、tools/call。工具出错时返回 isError: true 的结果,让模型能看到错误并重试;未知工具和未知方法返回 JSON-RPC 错误码。stdout 只输出协议消息,日志一律写到 stderr。
接入 Claude Code 的示例(把路径换成你本地的绝对路径):
claude mcp add exp-agent -e PYTHONPATH=/abs/path/exp-agent -- /abs/path/exp-agent/.venv/bin/python -m expagent mcpClaude Desktop 等使用 JSON 配置的客户端:
{
"mcpServers": {
"exp-agent": {
"command": "/abs/path/exp-agent/.venv/bin/python",
"args": ["-m", "expagent", "--runs-dir", "/abs/path/to/runs", "mcp"],
"env": {"PYTHONPATH": "/abs/path/exp-agent"}
}
}
}HTTP API
python -m expagent serve --port 8000
curl localhost:8000/health
curl localhost:8000/runs
curl -X POST localhost:8000/tools/compare_runs -d '{"runs": ["room_baseline", "room_short"], "metric": "ssim"}'
curl -X POST localhost:8000/ask -d '{"question": "lego_high_lr 为什么失败了?"}'状态码:参数错误或请求体不是合法 JSON 返回 400;路由或工具不存在返回 404;请求体超过 1MB 返回 413;没有配置 API key 返回 503;LLM 调用失败返回 502。
评测
evals/cases.jsonl 有 10 个用例,覆盖:单工具查询、需要多步的比较、失败诊断、对不存在的实验不编造结果、拼错实验名、英文提问。
每个用例从两方面打分:
工具:期望的工具是否都调用了(可以写成"几个工具任选其一")。
答案:必须包含 / 至少包含其一 / 不能包含的字符串(不区分大小写)。
此外还会统计 LLM 调用次数、工具报错次数和耗时。
关键词路由基线(evals/baseline.py)不是 LLM:它按关键词选一个工具,把工具的原始输出直接当作答案。实际结果如下:
pass 80% | tools 80% | answers 100% | avg LLM calls 2.0 | tool errors 1
❌ best_lpips_scene 只调用了 list_runs,没有做比较
❌ english_compare 只调用了 list_runs,没有做比较基线的"答案"指标是 100%,这正好暴露了字符串匹配的局限:把整个工具输出原样输出,里面自然包含所有实验名。所以必须结合工具调用一起判断,后续可以改用 LLM 打分或者结构化答案。
评测真实模型:
python -m evals.run_eval --llm api --out evals/results/deepseek.json设计中处理的几个问题
路径穿越:实验名必须在
list_runs列出的名单里,../../etc这类输入会被拒绝。NaN:很多训练日志会直接写出
NaN,而NaN不是合法 JSON,有些 API 会因此拒收整个请求。工具输出里统一把它转成字符串"nan"。模型的参数写错了:JSON 格式错误、缺少参数、参数类型不对、实验名拼错,都会作为错误信息回传给模型,让它自己改正,而不是让程序崩溃。
死循环:用相同参数重复调用同一个工具会被拦截;达到步数上限后,会禁用工具、强制模型给出最终答案。
工具本身有 bug:工具内部的异常会被捕获,变成错误信息回传给模型,不会中断整个对话。
局限
示例数据是模拟的,工具目前只认识类似 3DGS 的日志格式(
loss、num_gaussians、PSNR/SSIM/LPIPS)。评测集只有 10 条,答案靠字符串匹配,比较粗糙。
MCP 只实现了工具相关的部分(没有 resources、prompts,也不支持 HTTP 传输)。
没有流式输出,也没有跨会话记忆。
License
MIT
Available Tools
6 toolscompare_runsA
Rank several runs by one final metric and say which is best. Knows that lower lpips is better.
| Name | Required | Description | Default |
|---|---|---|---|
| runs | Yes | Run names to compare. | |
| metric | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a genuinely useful behavioral fact that lower lpips is better, which an agent could not infer from the schema. However, it never confirms the operation is read-only, and it does not describe the shape of the result (ranking order, how the best run is marked, tie handling).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the one non-obvious domain fact. Nothing is padded or repeated from the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a small read-style tool with two required parameters and no output schema. For that complexity the description covers the action and the key metric-direction nuance, though with no output schema it leaves the agent guessing at the return format. That is the one real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'runs' is documented in the schema and the 'metric' parameter has an enum, but its semantics are undocumented there. The description compensates for the metric parameter by explaining that lower lpips is better, which is meaningful added value, but it says nothing about how multiple runs are supplied or what happens with one run.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: rank runs by a final metric and identify the best. This is clearly distinct from the read-oriented siblings (get_final_metrics, get_metric_curve) because it produces a ranking verdict, though it never explicitly names or contrasts those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: you gather that it is for comparing multiple runs. There is no explicit "use this instead of get_final_metrics when..." guidance, no mention of prerequisites such as needing completed runs, and no exclusion cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_runA
Check one run for problems: missing final eval, NaN/inf loss, loss spikes, stopping early, too many Gaussians. Use it to explain why a run failed or has no results.
| Name | Required | Description | Default |
|---|---|---|---|
| run | Yes | Run name exactly as returned by list_runs, e.g. 'lego_baseline'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral load. It does disclose the concrete diagnostic categories it evaluates, which is useful, but never states that it is read-only, what the report/return shape looks like, or how expensive the check is — meaningful gaps for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the check list is front-loaded and the purpose clause follows. Every phrase carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read diagnostic with no output schema, the description covers what is inspected and why you'd call it. The main remaining gap is what the result actually looks like (issue list? pass/fail summary?), which matters slightly more given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already explains the run name with an example ('lego_baseline'). The description adds no further parameter semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Check') applied to a specific resource ('one run') and enumerates the exact conditions it looks for (missing final eval, NaN/inf loss, loss spikes, early stopping, too many Gaussians). This clearly separates it from list_runs, compare_runs, get_metric_curve and other siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it to explain why a run failed or has no results' gives a concrete triggering condition. It stops short of naming alternatives or exclusions (e.g., when to prefer compare_runs or get_final_metrics), so it is clear context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_final_metricsA
Get the final test metrics (psnr, ssim, lpips) of one run. Returns status 'no_eval' if the run has none.
| Name | Required | Description | Default |
|---|---|---|---|
| run | Yes | Run name exactly as returned by list_runs, e.g. 'lego_baseline'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does useful work: it names the three concrete metrics returned and warns that a run without an evaluation yields status 'no_eval'. This prevents an agent from misreading a sentinel as an error. It does not describe the response shape beyond the metric keys, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action front-loaded and the edge-case behavior second. No redundant restatement of the tool name and nothing extraneous to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers the key return facts: which metrics come back and the 'no_eval' fallback. Slightly incomplete in that it doesn't indicate return structure (flat keys vs nested) or units, which matters when no output schema is published.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter at 100% schema coverage, and the schema already supplies the format and provenance ('exactly as returned by list_runs, e.g. lego_baseline'). The description's 'of one run' only reinforces what the schema documents, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the final test metrics') and enumerates exactly which metrics (psnr, ssim, lpips) for a single run. The word 'final' implicitly contrasts with get_metric_curve, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool returns but never says when to prefer it over get_metric_curve or compare_runs, nor any prerequisite (e.g. that an eval must have been run). The only condition mentioned, 'no_eval', is a return state rather than a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metric_curveA
Get a downsampled training curve of one logged metric (e.g. loss, train_psnr, num_gaussians) plus its last value.
| Name | Required | Description | Default |
|---|---|---|---|
| run | Yes | Run name exactly as returned by list_runs, e.g. 'lego_baseline'. | |
| metric | No | Logged metric name. Default 'loss'. | |
| points | No | Max number of points to return. Default 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden; it does disclose that the curve is downsampled and that the last value is included, which is real behavioral context. It omits what happens for unknown metrics, the downsampling method, and any permission/limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste: verb, resource, qualifier ('downsampled'), examples, and the extra return element ('last value').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only curve lookup with no output schema and full parameter documentation, the description covers what is returned and the key qualifier (downsampling). Minor gap: no guidance on behavior for missing runs/metrics or on how many points to request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaningful examples of metric names (loss, train_psnr, num_gaussians) that the schema does not enumerate, helping the agent understand what 'metric' accepts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get a downsampled training curve of one logged metric plus its last value', with concrete metric examples. It distinguishes itself in spirit from get_final_metrics by emphasizing the curve and downsampling, but never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (fetch a time series for one metric) and the schema defaults ('loss', 10 points) hint at typical calls, but there is no explicit when-to-use guidance such as curve vs. get_final_metrics vs. compare_runs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_run_configB
Get the training config of one run (iterations, learning rates, densification settings...).
| Name | Required | Description | Default |
|---|---|---|---|
| run | Yes | Run name exactly as returned by list_runs, e.g. 'lego_baseline'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The "Get" verb signals a read-only operation and the parenthetical enumerates the returned fields, but nothing is said about behavior when the run name is unknown, or whether the values reflect initial vs. resolved/final settings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted preamble. The trailing ellipsis in the parenthetical is slightly loose but does not obscure meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with full schema coverage this is close to sufficient, and the field list hints at the return shape despite no output schema. However, it is ambiguous about whether the config is the requested or the actually-applied configuration, which matters for a diagnostic tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter's schema description already specifies "run name exactly as returned by list_runs, e.g. 'lego_baseline'". The tool description adds no further meaning beyond what the schema states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get the training config of one run") and names the contents (iterations, learning rates, densification settings). It is naturally distinct from the siblings (list_runs, get_final_metrics, get_metric_curve, compare_runs, diagnose_run), but it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "of one run" implies this is the single-run lookup versus compare_runs for multi-run work, but that routing is left to inference. There is no explicit when-to-use, when-not-to-use, or prerequisite (e.g. that the run must already exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_runsA
List all training runs with scene, planned iterations and status ('finished' has final metrics, 'no_eval' does not). Call this first if you don't know the run names.
| Name | Required | Description | Default |
|---|---|---|---|
| scene | No | Only list runs of this scene, e.g. 'lego'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load, and it does disclose useful semantics: the return fields and the meaning of each status ('finished' has final metrics, 'no_eval' does not). It omits the read-only assumption, ordering, pagination and any permission requirements, so the transitive behavior is only partially covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, each earning its place: the first declares content and field semantics, the second declares the call-order guidance. It is front-loaded with the purpose and wastes nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter list tool with no output schema, the description covers purpose, returned fields, status semantics and call-order advice. Ordering and pagination are unstated, but otherwise an agent has what it needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and the schema describes it fully ('Only list runs of this scene, e.g. lego'), so the baseline is 3. The description adds no filtering syntax or default behavior beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a concrete verb (list) and resource (training runs) and names the fields the listing exposes (scene, planned iterations, status), which an agent can act on without opening the schema. It never names the sibling get_* tools it is meant to precede, so differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this first if you don't know the run names' gives a clear entry-point condition that separates discovery from the follow-up tools like get_run_config or get_final_metrics. It doesn't state when not to use it or name alternatives explicitly, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
compare_runs - First observed
diagnose_run - First observed
get_final_metrics - First observed
get_metric_curve - First observed
get_run_config - First observed
list_runs
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: listing runs, reading config, reading final metrics, comparing runs, reading one metric curve, and diagnosing failures. The only apparent overlap between get_final_metrics and compare_runs is resolved by their descriptions: one reads a single run's metrics, the other ranks multiple runs.
All tools follow a consistent snake_case verb_noun pattern: list_runs, get_run_config, get_final_metrics, compare_runs, get_metric_curve, diagnose_run. There are no mixed conventions or vague names.
Six tools is well-scoped for inspecting and analyzing training runs. Each tool covers a distinct analysis need, and none feels redundant or extraneous.
The set covers the core lifecycle of run inspection: listing, configuration, final metrics, curve inspection, comparison, and diagnosis. Minor gaps remain, such as filtering runs or comparing metric curves across runs, but agents can work around these with the existing tools.
Maintenance
Related MCP Connectors
Read-only MCP server for AIStatusDashboard status, incidents, metrics, and fallback recommendations.
Read-only Google Analytics 4 MCP server for AI assistants.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Read-only AI/LLM cost tools with current MCP discovery and attributable Registry transport.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceExposes TensorBoard experiment data through a standardized MCP API, enabling AI coding agents to query and analyze scalars, tensors, histograms, distributions, and images from ML experiment logs.MIT
- FlicenseNot gradedqualityDmaintenanceEnables querying machine-learning experiments in natural language. Supports listing, inspecting, ranking, and comparing experiment runs.-
- AlicenseNot gradedqualityAmaintenanceEnables external agents to monitor and control ML training runs via 35 MCP tools. Covers training status, checkpoints, experiments, recovery, and dashboard configuration.2MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP-compatible clients to semantically search, retrieve, and list engineering runbooks, providing relevant runbooks in response to natural language queries.MIT