graph-mcp-java-gen
graph-mcp-java-gen
Graph-gestützter MCP-Server, der natürlichsprachliche Anfragen in validierte, kompilierbare Java-Testmethoden umwandelt – keine halluzinierten Importe, keine unverankerten Symbole, keine lautlosen Fehler.
Eine natürlichsprachliche oder strukturierte Anfrage gelangt in einen offiziellen Model Context Protocol (MCP)-Stdio-Server. Ein versionierter Graph-Katalog (Neo4j oder JSON-Fixture) liefert die einzigen Symbole, die der Generator zitieren darf. Ein mehrschichtiger Validator prüft Syntax, Framework-Vertrag, Grounding und Regeln für verbotene APIs, bevor irgendein Quellcode zurückgegeben wird. Zwei optionale LLM-Agenten – ein Intent-Normalisator und ein Post-Generierungs-Reviewer – erweitern die Pipeline um frei formulierte Eingaben, ohne die deterministische Sicherheitshülle zu beeinträchtigen.
Architektur
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#1e3a5f", "primaryTextColor": "#ffffff", "primaryBorderColor": "#0d2137", "lineColor": "#4a9eca", "secondaryColor": "#2d6a4f", "tertiaryColor": "#7b2d8b"}}}%%
flowchart TD
classDef input fill:#7b2d8b,stroke:#4a1a54,color:#fff,font-size:13px
classDef mcp fill:#e07b00,stroke:#9a5700,color:#fff,font-size:13px
classDef agent fill:#1a6b8a,stroke:#0d3f52,color:#fff,font-size:13px
classDef core fill:#2d6a4f,stroke:#1b4332,color:#fff,font-size:13px
classDef graph fill:#1e3a5f,stroke:#0d1f3c,color:#fff,font-size:13px
classDef validate fill:#4a6741,stroke:#2d4026,color:#fff,font-size:13px
classDef ok fill:#155724,stroke:#0a3015,color:#fff,font-size:13px
classDef reject fill:#721c24,stroke:#3d0a0e,color:#fff,font-size:13px
NL["🌎 Free-form NL\n(generate_java_test_nlp)"]:::input
SF["📄 Structured fields\n(generate_java_test)"]:::input
TX["💬 Intent text\n(generate_java_test_from_intent)"]:::input
MCP["🔌 FastMCP stdio Server\n7 tools · zero raw Cypher"]:::mcp
A1["🤖 LLMIntentParser\nAgent 1 · gpt-4o-mini\nfield extraction"]:::agent
INT["✅ GenerationIntent\nclass · package · module\nconfig · version"]:::core
GDB["📊 Graph Catalog\nNeo4j 5.26 / JSON fixture\n8 symbols · 12 methods"]:::graph
GEN["⚙️ Template Generator\ndeterministic render"]:::core
VAL["🛡️ JavaValidator\nTree-sitter AST\ncontract · grounding\nsource-safety"]:::validate
A2["🤖 ReviewAgent\nAgent 2 · gpt-4o-mini\n6-item checklist"]:::agent
OK["✅ Accepted Java\nsource + citations\n+ review verdict"]:::ok
REJ["❌ Typed Rejection\nerror code + message\nno source returned"]:::reject
NL --> MCP
SF --> MCP
TX --> MCP
MCP -->|"NLP path"| A1
MCP -->|"direct path"| INT
A1 -->|"extracted fields"| INT
INT -->|"invalid"| REJ
INT -->|"valid"| GDB
GDB -->|"cited symbols"| GEN
GEN --> VAL
VAL -->|"any gate fails"| REJ
VAL -->|"all gates pass"| A2
A2 -->|"issues found"| REJ
A2 -->|"approved"| OKRelated MCP server: MCP Universal Test Suite Generator
Multi-Agenten-Pipeline
%%{init: {"theme": "base", "themeVariables": {"actorBkg": "#1e3a5f", "actorTextColor": "#ffffff", "actorBorderColor": "#4a9eca", "activationBkgColor": "#2d6a4f", "activationBorderColor": "#155724", "noteBkgColor": "#fff8e1", "noteTextColor": "#333", "signalColor": "#4a9eca", "signalTextColor": "#1e3a5f"}}}%%
sequenceDiagram
autonumber
actor User
participant MCP as FastMCP Server
participant A1 as LLMIntentParser<br/>(Agent 1)
participant GDB as Graph Catalog<br/>(Neo4j / Fixture)
participant GEN as Generator +<br/>JavaValidator
participant A2 as ReviewAgent<br/>(Agent 2)
User->>MCP: generate_java_test_nlp(free-form NL)
MCP->>A1: extract intent fields
Note over A1: gpt-4o-mini · temp=0<br/>strict JSON schema
A1-->>MCP: {class, package, module, config, version}
MCP->>GDB: get versioned symbols
GDB-->>MCP: 7 cited GraphSymbol objects
MCP->>GEN: render Java + validate
Note over GEN: Tree-sitter AST<br/>contract · grounding · safety
GEN-->>MCP: validated Java source
MCP->>A2: review(source, class, package)
Note over A2: gpt-4o-mini · temp=0<br/>6-item checklist
A2-->>MCP: {approved, checklist, issues}
MCP-->>User: {status, source, citations, review}Evidenz-Dashboard
Alle Messungen verwenden unabhängig generierte, CC0-lizenzierte synthetische Fixtures. Die Ergebnisse stammen aus der akzeptierten strict_graph_v2-Policy auf dem zurückgehaltenen Bestätigungs-Split.
Messgröße | Ergebnis | Artefakt |
Benchmark-Umfang | 96 CC0-Intents — 32 Dev / 32 Val / 32 Bestätigung | |
Erfolg der Bestätigungsaufgaben | 32 / 32 begrenzte Aufgaben | |
Validierung generierter Quellen | 24 / 24 unterstützte Intents — Syntax + Vertrag + Grounding + Sicherheit | |
Sichere adversarial-Ablehnung | 8 / 8 — keine falsch akzeptierten Fälle | |
Zitat-Präzision | 100 % — nur aus dem Graph zitierte Symbole werden importiert | |
Trefferquote erforderlicher Symbole | 100 % — jedes erforderliche Symbol ist vorhanden | |
Live-Neo4j-Integration | Neo4j 5.26.29 — 8 Symbole, 12 Methoden materialisiert | |
Offizieller MCP-Benchmark | 120 / 120 erwartete Ergebnisse — keine Protokollfehler | |
MCP-Arm-Latenz (p50 / p95 / p99) | 29,13 / 48,61 / 54,23 ms bei Nebenläufigkeit 1 | |
Java-Kompilierung | 8 / 8 Klassendateien über Eclipse ECJ 3.21 | |
Externe Modellaufrufe (deterministischer Pfad) | 0 Aufrufe · $0,00 |
Die Latenzwerte sind Messungen eines einzelnen lokalen Windows-Prozesses und keine Produktions-SLOs.
Policy-Auswahl
Es wurden vier Generierungs-Policys evaluiert. Das Auswahlziel wurde vor dem Öffnen des Bestätigungs-Splits bekannt gegeben: den Validierungserfolg unter den Kandidaten maximieren, die alle Sicherheitsgates bestehen. Der Bestätigungs-Split wurde genau einmal für den ausgewählt Kandidaten geöffnet.
%%{init: {"theme": "base", "themeVariables": {"quadrant1Fill": "#155724", "quadrant2Fill": "#856404", "quadrant3Fill": "#721c24", "quadrant4Fill": "#856404"}}}%%
xychart-beta
title "Validation: task success vs safe-rejection recall (%)"
x-axis ["no_graph_v0", "lenient_repair_v1", "strict_graph_v2 ✓", "wide_context_v3"]
y-axis "Task success (%)" 0 --> 105
bar [21.9, 75.0, 100.0, 96.9]
line [87.5, 0.0, 100.0, 87.5]Kandidat | Aufgabe-Erfolg | Gen valideiert | Sicherhe Ablehnung | Zitat-Präzision | Entscheidung |
| 21, 9% | 0% | 8%,5% | 0% | Ko-Abonierung - Keine Verankerung |
| 75,0% | 100% | 0% | 100% | Abgelehnt – 8 falsch akzeptierte Fälle |
| 100% | 100% | 100% | 100% | Ausgewählt |
| 96, 9% | 100% | 6,2 / 5 % | 87,5% | Abgelehnt – irrelevant e Kontexte + 1 falsch akzeptiert |
MCP-Tools
Tool | Typ | Verhalten |
| Lesen | Gibt Fixture-Identität, Herkunft, Lizenz, Backend und Symbolanzahl terug |
| Lesen | Parametrisierte Nam-en-/Methodensuche; maximal 20 Entscheidungen |
| Erzeugen | Typisierte Felder → Graph-Suche → Java → alle Valiergates |
| Erzeugen | Eingeschrenkte 3-Orme-Grammatik → dieselbe strenge Rchtlinie |
| Valisierung | Prüft bis zu 20.000 Zeichen; schreib und fürt nie Quellcode |
| Multi-Agent | LLM-Intent-Parser → Gen-ator → LLM-Review; erfordert |
Der Ne4j-Adapt verendet fester parametrisierte Cypher, weiget Zugan in daten in URIs zurück und weut Auye-Identitäkollisionen bestätigt.
Schnellstart
python -m venv .venv
# Windows
.\.venv\Scripts\Activate.ps1
# Linux / macOS
source .venv/bin/activate
pip install -r requirements-dev.txt
pip install --no-deps -e .
# Run the offline smoke test (no database needed)
python scripts/container_smoke.py python -m graph_mcp.serverMCP-Client-Konfiguration (VS Code / Claude Desktop)
{
"mcpServers": {
"graph-java-gen": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["-m", "graph_mcp.server"],
"cwd": "/absolute/path/to/repo"
}
}
}Das Multi-Agenten-NLP-Tool aktivier
# Add to your environment or .env file
OPENAI_API_KEY=sk-...
GRAPH_BACKEND=neo4j # optional; defaults to local JSON fixtureEvidenz reproduktion
# Build the CC0 benchmark fixture
python scripts/build_evaluation_fixture.py
# Run all four candidate policies and select strict_graph_v2
python scripts/evaluate_workflow.py
# Validate the claims ledger and evidence privacy rules
python scripts/validate_evidence.py
# Full test suite
pytest --cov=src --cov-report=term-missing --cov-fail-under=75
# Lint and security
ruff check src tests scripts
bandit -r src scripts -q -ll
pip-audit -r requirements.txt --progress-spinner offLive-Ne4j-Pfad
# Start a local Neo4j Community instance (Docker)
docker compose up -d neo4j
python scripts/wait_for_neo4j.py
# Seed the synthetic graph fixture and verify retrieval
python scripts/seed_graph.py
python scripts/verify_neo4j.py # writes evidence/neo4j_integration.json
# Full MCP benchmark over stdio with live graph
python scripts/benchmark_mcp.py # writes evidence/mcp_benchmark.jsonJa-Kompilierung
# Requires JDK 21 on PATH
python scripts/compile_generated.py --require-compiler
# Writes evidence/java_compile.jsonSicherheitsdesign
Kein Roh-Cypher auf der MCP-Oberfläche – alle Graph-Abfragen sind parametrisiert.
Strenge Feld-Allowlists – Klassen-, Paket-, Modulname, Versionen und Config-Pfade werden vor jeder Graphen-Abfrage gegen kompilierte Regex-Muster geprüft.
Quellcode-Sicherheitsscanner – generierter Java-Code wird abgelehnt, wenn er
Runtime.getRuntime,ProcessBuilder,System.exit,java.io,java.nio.fileoderjava.netreferenziert.Schutz vor Path-Traversal – absolute Pfade und
..-Segmente werden in Config-Pfadfelden abgelehnt.Grounding-Erzwingung – jeder Import im generierten Code muss einem für genau diese Version aus dem Graph abgerufenen Sympoln entsprechen.
LLM-Ausgabe neu validiert – die vom LLM-Intent-Paser extrahierten Felder durchaufe dieselbe
GenerationIntent.from_mapping()-Validierung wie direkte API-Aufrufe.Neo4j-Anmeldedaten – werden ausschließlich aus Umgebungsvariablen geladen, nie protokollier und nie in Evidenz-Artefakten zurückgegeben.
XML-Preflight –
defusedxmlverhindert Entity-Expansion-Angriffe beim Scannen der Projektsruktur.Container – gepinntes Chainguard-Linux-Image, nicht-Root-UID/GID 65532, CI führt einen MCP-über-Container-Stdio-Smoke-Test aus.
Siehe SECURITY.md für die vollständige Bedrohungsgrenze.
Repository-Übersicht
src/graph_mcp/
workflow.py intent parsing · graph lookup · Java generation · validation
graph_store.py Neo4j catalog adapter (parameterised Cypher)
llm_intent_parser.py Agent 1 — LLM free-form NL → GenerationIntent
review_agent.py Agent 2 — LLM post-generation checklist reviewer
server.py FastMCP stdio server (7 tools)
evaluation.py candidate scoring and selection harness
fixtures/
synthetic_graph.json CC0 versioned framework symbol catalog (SHA-256 bound)
evaluation_cases.json 96 CC0 natural-language intents (32/32/32 split)
java_framework/ 7 independently generated Java stub classes
evidence/
claims.json machine-readable claims ledger (14 public claims)
evaluation_protocol.json pre-declared selection rules and safety gates
task_evaluation.json per-candidate, per-split, per-case results
evaluation_trace.json confirmation case-level trace
neo4j_integration.json live Neo4j integration result
mcp_benchmark.json MCP protocol benchmark (120 calls)
java_compile.json ECJ compilation result
scripts/
build_evaluation_fixture.py generate benchmark from seed
evaluate_workflow.py run and score all four candidates
validate_evidence.py verify claims ledger and privacy rules
benchmark_mcp.py official MCP stdio latency benchmark
verify_neo4j.py live graph integration check
compile_generated.py ECJ compile gate
seed_graph.py materialise fixture into Neo4j
tests/
test_generation_loop.py generation + validation unit tests
test_graph_store.py Neo4j adapter unit tests
test_mcp_protocol.py official MCP protocol conformance
test_evaluation.py evaluation harness tests
test_evidence.py claims ledger integrity tests
test_neo4j_live.py opt-in live graph tests (NEO4J_* env required)
docs/
ARCHITECTURE.md component design and data flow
POLICY_CARD.md candidate selection details
DATA_CARD.md fixture provenance and license
MCP_INTEGRATION.md client configuration guide
DEPLOYMENT.md Docker and container notes
templates/ MCP prompt templates for VS Code Copilot
examples/ sample project preflight scannerAbgrenzungen
Das folgende wird von diesem Repository nicht beansprucht:
Freie formulierbares, modellversions-unabhängiges Intent-Parsing – die LLM-Pipeline ist opt-in und ihre Ergebnise sind in den eingefroren Evaluktions-Artefakten nicht erfasst.
Kompatibilität mit einem beliebigen proprietären ofiellen Java-Test- Framework.
Produktions-latenz-SLO – alle Enzeler are Ergebnisse lokale sequentielle Benchmarks eines einzigen Prozesses.
Paralleler, verteilter oder Hochverfügbark- Betreib.
Automatische Ausführu ng generierten Java gegen Hardware oder ein Zustest instrument.
Ein Produktivitäts-, Kosten-, Ertrags- oder Testzeit-Vorteil – dieses Reository ensthält nur Gen- und Validierungs-Evidenz.
Die vollständige maschienenlesbare Abgenzung befindet sich in evidence/claims.json.
Lizenz
Rpository-Code: MIT. Graph-Fixture, Test-Intents und Ja-a-Stubs: CC0-1.0 (in der Fixture-Metadaten als solche gekennzeichnet).
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
- AlicenseBqualityCmaintenanceEnables LLM clients to generate standardized test cases, perform quality control with lint scoring, convert to Xray/Jira format, and compose test suites (Smoke/Regression/E2E) with coverage analysis.92MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to analyze Java and Web projects, automatically generate unit tests (JUnit) and end-to-end tests (Selenium), and execute them directly through Maven or NPM commands.
- AlicenseAqualityDmaintenanceEnables AI development environments to call the Diffblue Cover CLI tool to automatically generate unit tests for Java code.32Apache 2.0
- FlicenseNot gradedqualityBmaintenanceParses Java and Xtend source code into a graph database and provides MCP tools for querying classes, methods, control flow graphs, and MC/DC conditions, enabling AI-driven unit test generation for ISO 26262 ASIL-D compliance.
Related MCP Connectors
Deterministic validation for AI-generated artifacts: JSON Schema, OpenAPI response, SQL syntax.
AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).
Deterministic context layer for your codebase: change impact, blast radius, answers with receipts.
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/rajendarmuddasani/02-graph-grounded-genai-test-generation'
If you have feedback or need assistance with the MCP directory API, please join our Discord server