vibescience-mcp
Planned integration to fetch arXiv paper full text, chunk, embed, and enable semantic recall during the scientific loop.
Allows referencing MLflow runs as external run stores for experiments.
Allows viewing and navigating the experiment vault (markdown files) in Obsidian with graph view, backlinks, and tag panels.
Allows referencing external W&B runs from experiments to avoid storing metric curves directly.
Click on "Install 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., "@vibescience-mcpRecall prior experiments related to learning rate tuning"
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.
vibescience-mcp
A scientific experiment log (MCP server) for an AI coding/research agent working on ML projects.
It is not a lab notebook and not Weights & Biases. It stores reasoning and causal claims, not training curves, and defines "confirmed" as agreement between a prediction committed before the test and the effect observed after, on a fixed diagnostic basis. That makes your log a queryable causal map ("which interventions move which diagnostics, in which direction, how often") plus a calibration signal on your own intuition.
Markdown files are the source of truth → open vault/ in Obsidian for graph view, backlinks and tag panels for free. The SQLite index is disposable and rebuilt from markdown at any time.
Why it's different
lab notebook | W&B / MLflow | vibescience | |
stores | free-text notes | loss curves, metrics | predictions, verdicts, causal claims |
"confirmed" means | you say so | — | predicted direction == observed direction (computed) |
negative results | buried | buried | first-class, ranked to the top of recall |
cross-experiment view | none | per-run dashboards | aggregated causal map + calibration |
Related MCP server: repro-mcp
Install
cd vibescience-mcp
python -m venv .venv && . .venv/bin/activate
pip install -e . # add ".[embeddings]" for optional semantic recall, ".[dev]" for testsConfigure in Claude Code / Cursor / Desktop
The server speaks stdio. Point your MCP client at it and set the vault path:
{
"mcpServers": {
"vibescience": {
"command": "/root/vibescience-mcp/.venv/bin/python",
"args": ["-m", "vibescience_mcp.server"],
"env": {
"VIBESCIENCE_VAULT": "/root/vibescience-vault",
"VIBESCIENCE_EMBEDDINGS": "off"
}
}
}
}Or via the Claude Code CLI:
claude mcp add vibescience -e VIBESCIENCE_VAULT=/root/vibescience-vault \
-- /root/vibescience-mcp/.venv/bin/python -m vibescience_mcp.serverThe scientific loop (enforced by tool descriptions)
recall— always first (pre-mortem gate). Refuted/inconclusive matches rank to the top, each with a one-line failure reason and the diagnostic delta that killed it. Never re-walk a dead end.create_problem— frame the open question / failure mode.register_diagnostic/register_intervention— diagnostics are a fixed, comparable basis, not free text. Adding one is deliberate.propose_hypothesis— requires ≥1predicted_effecton a registered diagnostic before testing. The first is the primary prediction the verdict keys off. No prediction → rejected.start_experiment— auto-capturesbranch@shortshafrom git HEAD if you omitgit_ref. References an external W&B/MLflow run; never stores curves.record_diagnostics— before/after per diagnostic; deltas/directions derived.close_experiment— computesobserved_effects,prediction_match(per-diagnostic + overall) and theverdict, propagates status to the hypothesis, and suggests (never performs) a commit on a positive match. Record artifacts, headline numbers and dead ends inartifacts/key_numbers/do_not_retryrather than compressing them intonotes.
Verdicts. supports · refutes · inconclusive · directional_only (direction matched but a preregistered blocking gate failed) · null · crashed.
null is a powered null: the direction nominally matched, a blocking gate carrying a preregistered mde failed, and |delta| came in under that MDE. It is treated as a refutation of the lever at the committed scale — not a near-miss — and ranks with refutes. Without it, a sign-only test reports delta=+0.0003 at permutation p=0.65 as "the direction matched" and ranks it above inconclusive, i.e. the strongest evidence against a lever outranks "we don't know". Set mde on a gate to get this; omit it and the old two-level behaviour is preserved exactly.
Housekeeping:
doctor— reports records whose status no longer matches reality: answered problems stillopen, hypotheses rotting inproposed/testing, experiments left open, near-duplicate experiments started minutes apart (the fingerprint of a doublestart_experiment), runbooks queued on resolved problems, orphan and probable-duplicate tags. Advisory only; every finding names the tool that fixes it.merge_tags— fold a duplicate tag into its canonical form across the whole vault. The source survives as an alias, so historical spellings still resolve.update_problem(add_update=...)/update_runbook(note=...)— dated log entries instead of banners glued onto a description.
Then query your own work:
causal_map(problem_id | tag)— aggregatedintervention → Δdiagnosticsubgraph. Optional Obsidian.canvasoutput.calibration(diagnostic_id | tag | intervention_id)— fraction of predictions that matched observation. Where is your intuition wrong?reindex()— rebuild the SQLite index from markdown (idempotent).
A vibescience://guide resource ships the same workflow to any agent.
Storage layout
vault/
problems/ hypotheses/ experiments/
diagnostics/ interventions/ papers/
_canvas/ # generated Obsidian canvases
.index.sqlite # disposable — rebuilt from markdown by reindex()Each entity is one markdown file: YAML frontmatter for structured fields, body for prose + [[wikilinks]]. Fully Obsidian-compatible.
Env vars
var | default | meaning |
|
| vault path (source of truth) |
| unset |
|
|
|
|
VAULT_DIR and VIBESCIENCE_VAULT_DIR are accepted as aliases (with a warning
on stderr); --vault PATH overrides everything. If two of them disagree the
server exits rather than guessing. The resolved vault path is printed to
stderr at startup and embedded in the MCP instructions, so the agent can
always see which vault it is writing to.
Running several vaults
One project per vault. Register one server entry per project:
"vibescience": { "env": { "VIBESCIENCE_VAULT": "/root/vibescience-vault" } },
"vibescience-lightsem": { "env": { "VIBESCIENCE_VAULT": "/root/lightsem-vault" } }Verify isolation before trusting it — list_problems on each server must return
different records. A silently shared vault interleaves records from unrelated
projects, which corrupts the experiment log's role as the system of record.
Bundled workflow skill
skills/vibescience-mcp-workflow/SKILL.md ships the battle-tested procedure for
running the full loop: pair deep research (perplexity_research) + the
arxiv MCP with a real, verdict-computed experiment cycle, then dogfood it
into the vault. It encodes the hard-won pitfalls (research timeouts, making an
experiment able to refute, semi-synthetic precision protocols on unlabeled
prod data, the opt-in-vs-blanket deployment guardrail). Load it into any
Hermes/Claude session with skill_view(name='vibescience-mcp-workflow'), or read
it directly — it is plain markdown.
Record IDs
IDs are read by humans — in ls, in [[wikilinks]], in error messages. Auto-generated ids are capped at 48 characters on a word boundary plus a short hash of the full text, so a shared prefix can never collide; experiments get exp-NNN-<stem>, which keeps ls experiments/ usable as an overview. start_experiment is idempotent within a 5-minute window: a retried call returns the existing open experiment instead of minting a second record.
Migrating an older vault
python migrate_ids.py <vault_path> # dry run — shows the plan
python migrate_ids.py <vault_path> --apply # back the vault up firstRenames every over-long id, rewrites all cross-references (problem_id, hypothesis_id, parent_experiment_id, supersedes, paper_refs) and every wikilink, records the old id in former_ids so external references stay traceable, and writes id_migration.json as the redirect map. Store.resolve_id still finds a record by its old name. Nothing is deleted and no prose is edited — only identifiers change.
Tests
./run_tests.sh -q # 203 tests: verdict math (incl. powered nulls + weak_signal),
# prediction gate, full loop, negative-result ranking,
# causal_map, calibration, index rebuild, id scheme +
# idempotency, doctor, merge_tags, interpretation layer
# (lessons, stale negatives, plateau, portfolio,
# research_brief), markdown round-trip, MCP stdio smokeThe interpretation layer (2026-08)
Distilled from Prime Intellect's Measuring Autonomous AI Research (the gap
between models is experiment hygiene under noise, not idea quality) plus an
autopsy of a real vault: 61 experiments, 39 negative verdicts, zero recorded
lessons, 16/17 problems eternally open, 30/30 papers never linked to a
hypothesis. A log that records verdicts but never analysis is a junk pile.
interpret_experiment(id, lesson, failure_mode)— the act of analysis. Negative verdicts require afailure_mode(claim_false / mechanism_wrong / test_invalid / noise / execution_bug / recipe_conditional): a refute from a broken capture and a refute of the idea are different objects.recallsurfaces the authored lesson instead of a machine string;doctorreports closed-but-uninterpreted runs as debt.reopen_hypothesis(id, reason)— a negative result is a fact about (claim × recipe), not the claim.close_experimentsnapshots arecipe_fingerprint(interventions + provenance hashes); when the recipe drifts, a refute flips tostale_negative— flagged re-testable, history untouched, the re-test still goes throughsupersedes+ a fresh prediction.progress(problem_id)+synthesize_problem— the compiled trajectory (primary-diagnostic movement, verdict counts, plateau, interpretation debt) and the authored current-state-of-knowledge that turns a chronology into a knowledge base.Noise floors —
register_diagnostic(..., noise_sigma, noise_source= 'measured')makes the verdict engine demote a directionally-correct delta insidek*sigmatoweak_signal: a candidate to re-draw, neither a win to deploy nor a loss to discard. The top autonomous-research runs measured their own noise; the weak ones shipped draw luck.Ambition economics — hypotheses declare
ambition_class(tuning / mechanism / reframe) andgap_closure_estimateagainst the problem's declaredtarget; experiments carrygpu_hours.portfolio()shows where the compute went per class, and a plateaued problem (last 5 closed runs, nosupports) rejects furthertuningwithout anoverride_reason— the crumb trap made expensive.research_brief(problem_id)— compiles state + gap + dead ideas (with lessons) + rule-outs + the already-read paper exclusion list into a ready deep-research query, so every literature sweep is incremental by construction. The literature is the edge a sandboxed harness doesn't have.
Phasing
Phase 1 (this): schema + lifecycle +
recall+causal_map+calibrationover markdown, SQLite index, Obsidian compatibility.Phase 2 (scaffolded, not built): hold papers in context — fetch arXiv full text, chunk, embed, and let
recallpull relevant passages in. ThePaperschema is ready.
Non-goals: custom graph visualization (Obsidian does it), web UI, autonomous experiment execution, raw metric-curve storage (reference W&B/MLflow), auto-committing to git.
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI agents to observe and interact with trackio experiment tracking, providing tools for managing ML experiments through natural language.3MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that logs AI-assisted scientific computing sessions, capturing prompts, responses, decisions, and environment snapshots to human-readable markdown files for reproducibility.MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server enabling AI agents to record, query, and share structured problem-solving experiences with human review and confidence decay.10MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that enforces a scientific-method loop for AI-driven machine learning experiments, with hypothesis gating, diagnostics, and data forensics.Apache 2.0
Related MCP Connectors
Person-owned, portable AI memory as a remote MCP server, readable and writable by any MCP client.
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Shared, peer-validated knowledge archive for AI agents — search, contribute, and validate via MCP
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AntonIXO/vibescience-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server