bernstein — Claude Code MCP server: what it does, how to install
Enforces policy as code for AI agents and maintains verifiable execution records. Useful when autonomous CLI tools require strict auditing and human approvals.
claude mcp add bernstein -- uvx bernsteinWhat bernstein does
The server adds a governance layer to agent workflows through policy as code. You define permissions, required approvals, and audit rules. Scheduling runs on deterministic Python code rather than an LLM coordination loop. Because of this design, repeating an execution plan yields the exact same task graph.
Every run writes to an offline replay journal. The server supports hardware key verification via FIDO2 and PIV tokens for sensitive approvals. It also includes an air-gap install profile for restricted network environments.
The project is in beta and maintained by a single developer. Minor releases can change internal interfaces, so pinning the package version in your setup prevents unexpected breaks.
What it helps with
- Enforce policy-as-code approval gates on CLI agents
- Replay task graphs without LLM scheduling drift
- Authorize agent actions with FIDO2 or PIV hardware keys
- Verify agent operations offline using replay journals
Example prompts for the agent
- Run the task graph under bernstein policies and log all changes
- Verify the offline execution receipt for the latest git diff
How to install bernstein
Platform CLI
claude mcp add bernstein -- uvx bernsteinuvx runs the command named after the package; if the README names another one, use uvx --from bernstein <command>
Platform CLI
codex mcp add bernstein -- uvx bernsteinuvx runs the command named after the package; if the README names another one, use uvx --from bernstein <command>
Config file
{
"mcpServers": {
"bernstein": {
"command": "uvx",
"args": [
"bernstein"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from bernstein <command>
Config file
{
"servers": {
"bernstein": {
"type": "stdio",
"command": "uvx",
"args": [
"bernstein"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from bernstein <command>
Platform CLI
gemini mcp add bernstein uvx bernsteinuvx runs the command named after the package; if the README names another one, use uvx --from bernstein <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about bernstein
How to install bernstein in Claude Code?
Run claude mcp add bernstein -- uvx bernstein in your terminal. This requires uvx and Python 3.12 or newer.
What makes bernstein coordination deterministic?
Coordination uses standard Python code instead of an LLM loop. Replaying the same plan produces identical scheduling and task graphs every time.
Why should you pin the version of bernstein?
The software is currently in beta under solo maintenance. Minor releases may introduce breaking interface changes, making version pinning essential.