Universal Research MCP
Universal Research MCP is a provenance-first, append-only research operations framework and read-only MCP. It records plans, approvals, observations, claims, failures, amendments, and contributions with traceable sources. Canonical JSONL is authoritative; SQLite search indexes are verified, replaceable derived views.
Supported integration (0.3.1 preview): Codex only. Codex owns model selection, agent sessions, tool execution, approvals, and GUI presentation. Ollama, OpenAI API, Anthropic API, Moonshot/Kimi, Claude Code, OpenCode, and OpenClaw are not supported or invoked by this release.
The repository can contain provider or runtime prototypes for future research. They are not exposed through the default CLI, Codex plugin, MCP tools, or package entry points, and are not a compatibility promise.
Quick start
Python 3.11 or newer is required.
python -m pip install universal-research-mcp
universal-research init ./my-research
universal-research serve --root ./my-research
init creates an independent empty canonical source registry and a verified
FTS5 lexical index. It reports the semantic index as missing; it does not
silently create an empty semantic database or download a model. A lexical
refresh that does not alter canonical JSONL is staged, validated, and atomically
replaced. Select the research root with --root or
UNIVERSAL_RESEARCH_ROOT.
The default universal_research MCP provides only:
- candidate search and event/hash-bound source re-verification;
- an eleven-role governance contract and Codex dispatch-manifest preparation;
- scope/cost preflight, deterministic operation-gate, and failure-tombstone preparation; and
- lexical and semantic derived-index status.
It never approves work for a user, writes a canonical ledger, or invokes a model, API, benchmark, daemon, or remote provider. Query-time search is lexical only in this release. Dense embeddings and provider fallback are future work.
Evidence flow
canonical JSONL → staged/verified SQLite candidate → memory_fetch_evidence
with event_id + expected_sha256 → current-hash check → bounded claim
Search results are candidates, not evidence. For a consequential conclusion,
retain the evidence fetch's event ID, path, line range, expected and current
hashes, and integrity_status. Files not registered in the index cannot be
fetched.
Governed Codex agents
scope_and_cost_governor runs before plan approval in every mode. It assesses
necessity, a bounded time estimate, work units, difficulty, compute/network
cost, and evidence; it does not approve execution or kill a process. The common
operation gate performs a declarative preflight bound to an approved
scope_hash and always returns execution_authorized=false. At the real tool
boundary, the Codex host must compare the gate hash with a closed,
action-specific argument envelope before deciding whether to execute.
The plugin prepares a role-specific task packet, hash-bound scope receipt, and Codex dispatch manifest over one evidence snapshot. A manifest does not start an agent. Codex may create native subagents and decide their sessions, model, parallelism, and GUI surface under host permissions and the user's entitlement. The plugin does not bypass a Codex subscription by routing work to a paid API.
The default failure policy is blocking_only + ask + redacted. A minimum
failure tombstone is always retained, while detail retention is configurable as
full | metadata_only | ask and full | redacted | hashes_only. There is no
unrecorded off mode.
Host visualization is off by default. It requires both explicit user opt-in and a separately approved capability scope/plan reference. Permission to generate a normal data plot does not imply permission to invoke a host visualization skill.
Token accounting uses only exact counts supplied by a provider or host. If the
host does not expose an exact count for commands, code generation, Skills, or
visualization, that category is unavailable, not zero or an estimate. See
usage accounting.
Boundaries and data authority
Reference projects are read-only design inputs. Universal Research does not create, modify, delete, move, or append their files, event logs, databases, results, or session records. Their embedding databases may be read only to understand a schema, metadata, or adapter design. The new project never copies or shares a reference runtime database.
data/events/JSONL is the canonical event ledger.data/index/SQLite and any embedding index are rebuildable derived views.- Original sources and artifacts verify candidate results.
- Embedding similarity alone cannot establish a fact, cause, or performance claim.
TODO.md, WORK_LOG.md, and agents/sessions/ are human-readable projections
of plans, decisions, and contributions. They do not replace the canonical
ledger.
Architecture
universal_research_mcp/
plugin/ Codex plugin and Skills
governance/ fixed-role governance contracts and validators
integrations/ host-specific dispatch adapters
data/events/ independent canonical append-only events
data/index/ independent derived lexical/dense indexes
docs/ specifications and usage documentation
The core schema defines immutable records and typed relations. Study-type and domain packs may add restrictions but may not relax core policy. A project profile selects paths, adapters, and reference boundaries. The read-only MCP returns candidate metadata and exact source evidence; it is not an execution or ledger-write interface.
Current support and next steps
This release supports the Codex plugin, local lexical lifecycle, source-grounded evidence fetch, eleven-role governance, and non-executing Codex dispatch preparation. Installation, MCP startup, and CI do not invoke an API, local model, model download, benchmark, or background watcher.
Next work is deliberately separate: a namespace migration for compatibility packages, stronger Codex host-dispatch installation fixtures, and independently reviewed adapters for local/OpenAI/Anthropic/Moonshot providers or other hosts.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file universal_research_mcp-0.3.1.tar.gz.
File metadata
- Download URL: universal_research_mcp-0.3.1.tar.gz
- Upload date:
- Size: 255.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f758e6d1da7e97f22e64c117244780b0a471059d5fd530b3e6c83860a6e0ee7
|
|
| MD5 |
7b1cd53704d45adf359ef83caaf28027
|
|
| BLAKE2b-256 |
b6f562e4c780ad2bb23c9775bc75388648d5352cc5dd9b8de3bb82b173aae6ba
|
Provenance
The following attestation bundles were made for universal_research_mcp-0.3.1.tar.gz:
Publisher:
publish.yml on mp-juns/universal-research-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
universal_research_mcp-0.3.1.tar.gz -
Subject digest:
5f758e6d1da7e97f22e64c117244780b0a471059d5fd530b3e6c83860a6e0ee7 - Sigstore transparency entry: 2426219589
- Sigstore integration time:
-
Permalink:
mp-juns/universal-research-mcp@6231dfe71a83fc83c3de7d6dfd8c5540ac7e4fe9 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/mp-juns
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6231dfe71a83fc83c3de7d6dfd8c5540ac7e4fe9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file universal_research_mcp-0.3.1-py3-none-any.whl.
File metadata
- Download URL: universal_research_mcp-0.3.1-py3-none-any.whl
- Upload date:
- Size: 249.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9603ef9c245a2b0a74607b00424a8464176325e13f5e868b8aefe4c51cf2ccd7
|
|
| MD5 |
6af9e495eb5446777d5bdb9d2610af1a
|
|
| BLAKE2b-256 |
aa89df2988bd6a0e1ad76a027077dd0946cc054d3a72b1f39135766ceb9fa1ca
|
Provenance
The following attestation bundles were made for universal_research_mcp-0.3.1-py3-none-any.whl:
Publisher:
publish.yml on mp-juns/universal-research-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
universal_research_mcp-0.3.1-py3-none-any.whl -
Subject digest:
9603ef9c245a2b0a74607b00424a8464176325e13f5e868b8aefe4c51cf2ccd7 - Sigstore transparency entry: 2426219634
- Sigstore integration time:
-
Permalink:
mp-juns/universal-research-mcp@6231dfe71a83fc83c3de7d6dfd8c5540ac7e4fe9 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/mp-juns
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6231dfe71a83fc83c3de7d6dfd8c5540ac7e4fe9 -
Trigger Event:
push
-
Statement type: