OWASP Pentest Guide Knowledge Base
This is a read-only knowledge retrieval server for OWASP security testing guides (WSTG, MASTG, ISTG, AITG), enabling AI agents and IDEs to query test cases with full provenance on every result. It does not execute scanning/exploitation tools or mutate data.
guide_search: Search across guides by query using exact, full-text, semantic, or hybrid modes — filterable by guide, version, platform, and category.guide_get_test: Fetch a single test case by versioned ID (e.g.WSTG-v42-ATHN-01), canonical ID, alias, or slug, optionally including relationships and full content.guide_list_tests: List test cases in a specific guide/version with optional category filter and cursor-based pagination.guide_browse_category: List all test cases within a specific guide, version, and category combination.guide_get_related_tests: Traverse curated relationships from a test case, with configurable depth and optional inclusion of LLM-inferred edges.guide_compare_versions: Diff a test case's title, objectives, sections, and source metadata across two compiled guide versions.guide_find_by_feature: Find test cases matching feature keywords (e.g.oauth,webview) with OR semantics.guide_recommend_candidates: Generate unverified candidate tests for a target system profile (components + features) — not a completed pentest plan.guide_get_source_excerpt: Fetch raw text for a specific section (summary, how_to_test, remediation, etc.) of a test case with full provenance.guide_validate_reference: Verify a test ID/version exists and optionally confirm a cached content hash still matches, ensuring citation integrity.guide_explain_relationship: Inspect a relationship edge between two tests, including type, rationale, confidence, review status, and provenance.
Every result includes full provenance (repository, commit, path, content hash, license) traceable to the exact upstream source, and all versioned IDs are explicit — ambiguous latest identifiers are rejected.
Provides read-only access to OWASP testing guides (WSTG, MASTG, ISTG, AITG), enabling precise lookup, natural-language search, and browsing of test procedures with full provenance.
Click on "Deploy 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., "@OWASP Pentest Guide Knowledge Base find WSTG tests for SQL injection"
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.
pentest-guide-kb
A read-only, versioned knowledge base for OWASP testing guides, served over the Model Context Protocol (MCP) so AI agents and IDEs can query them precisely instead of relying on training-data memory.
This project is not an official OWASP project and is not endorsed by OWASP. It compiles and re-serves content from independent OWASP testing guides under their own licenses -- see Licensing. No content from this project's retrieval or recommendation logic is official OWASP guidance; always cite the guide name, version, and source commit a result traces back to.
What it does
Precise lookup of a specific OWASP test by id (versioned or canonical).
Natural-language search across test procedures (full-text + semantic).
Browsing a guide by version, category, platform, or feature keyword.
Cross-guide relationship traversal, with provenance on every edge.
Version comparison for a test across two compiled guide releases.
Candidate-test generation for a target profile -- explicitly labeled unverified candidates, never a completed test plan.
Every result carries full provenance (repository, commit, path, content hash, license), so a citation always traces back to the exact upstream source.
It is a knowledge retrieval service, not an offensive security execution
platform. It does not — and will not — execute scanning/exploitation tools,
expose a shell, reach a caller-specified target, act as an autonomous pentest
agent, or mutate data over MCP (source sync and ingestion are offline CLI-only
steps). See SECURITY.md for the full threat model.
Related MCP server: turva-mcp
Architecture
Official OWASP Git Repositories (wstg, mastg, owasp-istg, www-project-ai-testing-guide)
|
v
Source Mirror and Version Lock sources/sources.lock.yaml, sources/.cache/
|
v
Deterministic Guide Compilers src/pentest_guide_kb/ingestion/*
|
v
Canonical Registry (PostgreSQL) src/pentest_guide_kb/storage/*
|
+-- metadata + JSONB (test_cases, test_case_sections, ...)
+-- full-text search (tsvector + GIN)
+-- pgvector semantic search (embeddings)
+-- Generated Markdown Wiki src/pentest_guide_kb/wiki/*
+-- Optional Neo4j projection src/pentest_guide_kb/graph/* (--profile graph)
|
v
Read-only MCP Server src/pentest_guide_kb/mcp/*
|
v
AI Agents and IDE ClientsThe PostgreSQL registry is the single source of truth. The Wiki, the
vector index, and the Neo4j graph are derived views compiled from it --
none independently store content that could drift out of sync. See
docs/architecture.md and
docs/data-model.md.
Supported guides
Guide | Short name | Upstream repository | Pinned |
OWASP Web Security Testing Guide | WSTG |
| tag |
OWASP Mobile App Security Testing Guide | MASTG |
| tag |
OWASP IoT Security Testing Guide | ISTG |
| tag |
OWASP AI Testing Guide | AITG |
|
|
Exact pins live in sources/sources.lock.yaml (see
docs/versioning.md). latest is never a valid version
anywhere -- it's rejected by a validator.
Quickstart
Requires Python 3.12+, uv, and Docker.
uv sync --all-extras
cp .env.example .env # local-dev defaults, no real secrets
docker compose up -d postgres # PostgreSQL + pgvector
uv run alembic upgrade head # apply the schema
uv run pentest-guide source sync --guide wstg # fetch a pinned source
uv run pentest-guide ingest --all # compile into the registry
uv run pentest-guide index embeddings # build the semantic index
uv run pentest-guide query search "credentials over http" --mode hybrid
uv run pentest-guide mcp serve # stdio; --transport streamable-http for HTTPPrefer a container? Pull the prebuilt multi-arch image instead of building:
docker pull ghcr.io/sunick2009/mcp-owasp-pentesting-guide:latest -- full
run/serve and MCP-client wiring in docs/deployment.md.
Documentation
Topic | Doc |
Deploy & connect a client (Compose, GHCR image, MCP config) | |
Local dev loop (setup, sync, ingest, tests, adding a guide) | |
MCP API — 11 tools, 10 resource templates, 5 prompts | |
Architecture & the single-source-of-truth model | |
Data model & schema | |
Ingestion — per-guide parsers & determinism | |
Retrieval — classify → exact → FTS/vector → RRF → rerank | |
Versioning — canonical vs versioned ids, pinning | |
Licensing & attribution chain | |
Source pinning workflow | |
Security threat model | |
What's implemented vs. known limitations | |
Glossary |
Licensing
This project's own code: Apache-2.0 (
LICENSE).Each upstream guide's content: CC BY-SA 4.0, per
sources/licenses/-- carried through on every compiledTestCase.source.license.
This repository does not bulk-copy OWASP guide text: source sync + local
compilation + provenance reference is the model; committed fixtures under
tests/fixtures/ are short, attributed excerpts. See NOTICE and
docs/licensing.md for the full attribution chain.
Key file paths
What | Where |
Domain models |
|
Guide parsers |
|
Storage / repositories |
|
Retrieval pipeline |
|
MCP server |
|
CLI |
|
Wiki generator + Error Book |
|
Neo4j projection (optional) |
|
Source lock |
|
Curated relationships |
|
Agent Skill |
|
Tests |
|
Available Tools
11 toolsguide_browse_categoryC
List every test case in one guide/version/category.
Inputs: input (required). Returns: result
guide_compare_versionsC
Compare a test case's title/objectives/sections/source across two compiled guide versions.
Inputs: input (required). Returns: object
guide_explain_relationshipC
Explain one relationship edge: source test, target test, type, and full provenance (source_type, rationale, confidence, review_status).
Inputs: input (required). Returns: object
guide_find_by_featureB
Find test cases matching ANY of one or more feature keywords (OR semantics; e.g. oauth, webview, agent-tools). Each result lists which terms matched in matched_terms.
Inputs: input (required). Returns: result
guide_get_source_excerptB
Fetch a single section's raw text (or all sections) for a test case, with full provenance.
Inputs: input (required). Returns: object
guide_get_testA
Fetch one test case by versioned id, canonical id, alias, or slug.
Inputs: input (required). Returns: object
guide_list_testsB
List test cases in a guide/version, optionally filtered by category. Cursor is the offset as a string.
Inputs: input (required). Returns: object
guide_recommend_candidatesA
Produce CANDIDATE tests for a target system profile. This is not a verified pentest plan and nothing in the output has been executed -- see the uncertainty field.
Inputs: input (required). Returns: object
guide_searchB
Search across OWASP testing guides (exact id, full-text, semantic, or hybrid).
Inputs: input (required). Returns: result
guide_validate_referenceA
Check whether a test id/version exists and whether a given content hash still matches the compiled registry -- use before trusting a previously-cached citation.
Inputs: input (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Each tool has a clearly distinct purpose: browsing categories, comparing versions, explaining relationships, finding by features, traversing relationships, fetching source excerpts, retrieving tests, listing tests, recommending candidates, searching, and validating references. No two tools have ambiguous boundaries.
All tool names follow a consistent 'guide_' prefix followed by a verb_noun pattern (e.g., browse_category, compare_versions, get_test). The naming is uniform and predictable, making it easy for agents to infer functionality.
With 11 tools, the set is well-scoped for a knowledge base of OWASP pentesting guides. Each tool addresses a specific access or exploration need without redundancy or excess, earning its place in the surface.
The tool set covers browsing, searching, retrieval, comparison, relationship exploration, and reference validation. A minor gap is the lack of a tool to list available guides/versions themselves, but the core query and navigation workflows are well-represented.
Maintenance
Related MCP Connectors
Read-only MCP server for the OrchestKit docs: full-text search + Markdown fetch. No auth.
Read-only MCP server for the WebAssembly spec: instructions, types, sections, search, proposals.
Read-only MCP server over the developer docs for the portfolio's JSON API, MCP, A2A and NLWeb.
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Related MCP Servers
- AlicenseAqualityFmaintenanceRead-only MCP server for public Guild Wars 1 sources (wiki, builds, YouTube, Reddit) and optional local install inventory.142MIT
- AlicenseNot gradedqualityBmaintenanceRead-only MCP server that answers questions about turva.dev from its published data. Five tools return JSON: the service catalog with prices, contact and operator details, engagement principles and dated agent-readiness and security evidence with verification links. Connect over Streamable HTTP. You need no API key. The server does not scan other websites or run audits.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server exposing the OWASP Web Security Testing Guide via semantic search and knowledge graph traversal.CC BY-SA 4.0
- FlicenseAqualityCmaintenanceLocal-first, read-only MCP server for retrieving and searching authorised CCSDS and ECSS standards, enabling citation-rich passage-level search and document access.3-