Skip to main content
Glama

OrangePro maps every public behavior in your codebase, scores each one by real test evidence, and shows you the structural blind spots before your users find them. Runs locally. Your code never leaves your machine.

npx -y @orangepro/mcp-server@latest start .

Table of Contents


Related MCP server: Pinion

What you get

One command produces an interactive HTML report:

npx -y @orangepro/mcp-server@latest start .
open .orangepro/behavior-coverage.html

The report has two modes: Simple (integration-level blind spots, plain English) and Expert (full behavior list, evidence tiers, flows, system map). Toggle with the pill switch at the top.

β†’ Live example: Twenty CRM (5,237 behaviors mapped)

System map β€” entry lanes (GraphQL, HTTP, Jobs) flowing into services, sized by traffic, colored by evidence tier, red-ringed by risk.

Priority gaps of another open source Project HONO β€” top 20 unproven behaviors ranked by blast radius, with generated test drafts.


Evidence tiers

Every behavior gets exactly one tier. Nothing is labeled "tested" on faith.

Tier

Color

What it means

Dynamically Proven

🟒

A real test kills a targeted mutation of this behavior

Runtime-covered

🟒

Coverage tool executed this code

Statically Linked

🟑

A test imports and calls this code β€” structural link, not proof

Unconfirmed Candidate

βšͺ

A similar test file exists β€” a lead, not evidence

No Signal

πŸ”΄

Nothing tests this behavior

"Dynamically Proven 0" is normal on first run. Proof requires running tests against targeted mutations. That's the trust model.


Quick start

cd /path/to/your/repo
npm install          # install the repo's own dependencies first

npx -y @orangepro/mcp-server@latest start .
open .orangepro/behavior-coverage.html

No API key needed. The report shows your system map, evidence tiers, priority gaps, and delta since last run.

Want test generation? Add a model key (BYOK):

export ANTHROPIC_API_KEY="..."   # or OPENAI_API_KEY / OLLAMA_BASE_URL
npx -y @orangepro/mcp-server@latest start .

AI output never changes evidence tiers. Only the mutation-kill oracle can mint Dynamically Proven.

Output:

.orangepro/
β”œβ”€β”€ behavior-coverage.html   ← open this
β”œβ”€β”€ graph.json               ← deterministic evidence graph
β”œβ”€β”€ COVERAGE_REPORT.md       ← coverage and gap summary
└── ai/                      ← candidate flows (when a key is configured)

orangepro_generated/         ← generated tests; your source files are never touched

Each rerun shows a delta banner: what entered the codebase, what moved up in risk, what got resolved.


Use with your coding agent

OrangePro runs as an MCP server. Add to your client's config:

{
  "mcpServers": {
    "orangepro-local": {
      "command": "npx",
      "args": ["-y", "@orangepro/mcp-server@latest", "mcp"]
    }
  }
}

Client

Where to put it

Claude Code

.mcp.json or ~/.claude.json

Cursor

~/.cursor/mcp.json or Settings β†’ MCP

VS Code / Copilot

MCP settings

Codex / OpenCode

Run npx -y @orangepro/mcp-server@latest agent --client codex

The workflow: Tell your agent:

"Use orangepro_start, then orangepro_generate_tests with base_ref=main. Write each test to its suggested_path, run it, and report pass/fail."

The agent writes the test, runs it, calls orangepro_prove, and the behavior turns Dynamically Proven. One prompt, full loop.


Works with

Any MCP-compatible agent can drive OrangePro. No vendor lock-in.


How it works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Your Code  β”‚ ──► β”‚  Knowledge   β”‚ ──► β”‚  Evidence   β”‚
β”‚  (any lang) β”‚     β”‚    Graph     β”‚     β”‚   Tiers     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”
                    β–Ό             β–Ό
             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
             β”‚ Gap Reportβ”‚  β”‚ Generate β”‚
             β”‚ + Risks   β”‚  β”‚  Tests   β”‚
             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Phase

What happens

Needs a model key?

Analyze

AST walk β†’ behaviors, flows, evidence tiers

No

Score

Graph readiness score (0–100)

No

Generate

Grounded tests for top gaps

Yes (BYOK)

Prove

Mutation-kill oracle confirms test breaks if behavior changes

No

Same code = same score. Deterministic. Always.


Language support

Language

Static mapping

Generated tests

Dynamic proof

TypeScript / JavaScript

βœ“

βœ“ Jest / Vitest / Mocha

βœ“

Python

βœ“

βœ“ pytest

βœ“

Go

βœ“

βœ“ *_test.go

βœ“

Java

βœ“

βœ“ JUnit 4/5

βœ“

Kotlin, Rust, PHP, C#, Ruby, Swift, C, C++

βœ“

planned

planned

Static mapping works across many languages via tree-sitter. Dynamic proof is deliberately narrower β€” each language needs a runner, mutation locator, and sandbox profile.


Privacy

  • No stored source. Reads code in-process. Never uploads to an OrangePro server.

  • No existing-source mutation. Never edits your source or test files.

  • Your keys stay yours. Read from env at call time, never persisted.

  • BYOK is direct. Code context goes to the model provider you configure. OrangePro is not in that path.


opro                          # analyze + report + agent next actions
opro start --base main        # same, scoped to a branch diff
opro analyze                  # build the evidence graph
opro score                    # graph readiness (0–100)
opro gaps --limit 10          # top 10 untested behaviors
opro generate --base main     # tests for PR diff
opro generate --single        # top gap, whole repo
opro prove                    # mutation-kill oracle
opro rtm                      # traceability matrix
opro export                   # metadata-only evidence pack
opro mcp                      # run as MCP server (stdio)
opro doctor                   # what evidence to add next
opro coverage                 # ingest runtime coverage

Add --json to any read command for machine output. Run opro help for the full reference.

Tool

What it does

orangepro_start

One-command setup: analyze + report + next actions

orangepro_analyze_sources

Build/refresh the evidence graph

orangepro_generate_tests

Generate grounded tests for gaps

orangepro_prove

Run mutation-kill oracle on a behavior

orangepro_prove_loop

Setup + dynamic proof + report refresh for one behavior

orangepro_find_test_gaps

List behaviors with weak/missing tests, ranked by risk

orangepro_graph_score

Graph readiness score (0–100)

orangepro_status

Workspace state without generating anything

orangepro_doctor

Recommend next evidence to improve quality

orangepro_rtm

Requirements traceability matrix

orangepro_stats

Aggregate statistics

orangepro_changed_impact

What a diff touches (requires git + base ref)

orangepro_record_run

Record a test run result

orangepro_explain_test

Explain why a test was generated

orangepro_export_evidence_pack

Export metadata-only evidence pack

orangepro_update_graph

Incremental graph update

orangepro_ai_links

Weak behavior→symbol suggestions (optional AI)

orangepro_ai_flows

Candidate flow discovery (optional AI)

opro generate --base main              # tests for what this branch changed
opro generate --pr 1234                # checks out PR #1234
opro generate --changed                # current branch diff vs main

Each generated test includes:

  • Grounding β€” the real files, symbols, and existing tests it cites

  • Run hints β€” where to write it, how to run it

  • Scenario bucket β€” what failure mode it targets

If dependencies aren't installed, tests are kept as Manual tests (Given/When/Then steps with the blocker named). Install dependencies and re-run to convert them to runnable tests.

Generation is evidence-gated. A category is produced only when the graph has supporting evidence.

Category

What it targets

Happy path

Primary expected behavior

Validation error

Bad/invalid input handling

Edge case

Boundaries, empty/null, concurrency, retries

Integration flow

Multi-step behavior across services

Security / privacy

Auth, injection, data leakage

Regression

Pinning a previously-broken behavior

Analysis, scoring, and proof need no model key. Generation does.

Provider

Environment variable

OpenAI-compatible

OPENAI_API_KEY (optional: OPENAI_BASE_URL, OPENAI_MODEL)

Anthropic

ANTHROPIC_API_KEY (optional: ANTHROPIC_MODEL)

Ollama (local, no key)

OLLAMA_BASE_URL (optional: OLLAMA_MODEL)

Auto-detect order: OpenAI β†’ Ollama β†’ Anthropic. Override with --provider and --model.

Run opro setup to configure interactively. Keys stay in your environment β€” never written to graph, config, or artifacts.

With a provider key, OrangePro stages weak AI behavior→symbol links and AI-suggested candidate flows. These are review/generation worklists, not evidence:

  • AI links appear as AI-linked suggestions.

  • AI flows are stored separately from deterministic flows.

  • Neither lane changes evidence tiers or denominator counts.

Use them when you want the agent to find likely service-boundary flows faster; ignore them for a deterministic-only report.


What's on the hosted platform

This repo is the free local tool. The OrangePro platform adds:

  • Persistent knowledge graph across PRs and repos

  • PR/CI policy gates over evidence tiers and risk deltas

  • Jira / Confluence / TestRail / OpenAPI enrichment

  • Cross-repo intelligence and recurring-flow memory

  • Production incident correlation and regression targeting

  • Team dashboards and test lifecycle management


Contributing

git clone https://github.com/OrangeproAI/orangepro-mcp.git
cd orangepro-mcp && npm ci && npm run build
npm test

PRs welcome. Please open an issue first for large changes.


Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

–Maintainers
–Response time
1dRelease cycle
9Releases (12mo)
Commit activity

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Deterministic context layer for your codebase: change impact, blast radius, answers with receipts.

  • AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).

  • Screens public GitHub repos and PRs to generate risk maps, findings, and merge-readiness signals.

View all MCP Connectors

Latest Blog Posts

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/OrangeproAI/orangepro-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server