Advance MCP Scanner
The Advance MCP Scanner orchestrates a complex multi-component system that:
- Uploads and processes MCP configuration files
- Discovers and executes MCP tools dynamically
- Uses AI for sequence generation and success analysis
- Provides comprehensive logging and retry mechanisms
- Stores scan results and metadata in SQLite database for persistence and retrieval
Complete Data Flow
graph TB
subgraph "Client Layer"
Client[Client Request]
Client --> |POST /adv_mcp_scan| API
Client --> |GET /scan/scan_id| APIGet["Scan Retrieval API"]
end
subgraph "FastAPI Layer"
API["FastAPI Endpoint
api.py:831-914"] APIGet["Scan Retrieval
api.py:793-829"] API --> |File Upload| TempFile["temp.json"] API --> |Call| AdvScan["adv_scan()"] APIGet --> |Query DB| Database[("SQLite Database
adv_scan.db")] end subgraph "Advanced Scanner Layer" AdvScan --> |UUID Generation| OutputFile["Output File
mcp_scan_output_*.txt"] AdvScan --> |Retry Loop| ProcessRunner["run_scanner_process()"] ProcessRunner --> |Subprocess| SequenceRunner["sequence_runner.py"] ProcessRunner --> |Log Analysis| AnthropicAnalysis1["Anthropic API
Success Analysis"] end subgraph "Sequence Runner Layer" SequenceRunner --> |Initialize| MCPInit["MCP Client Init"] MCPInit --> |Connect| MCPServers["MCP Servers"] MCPServers --> |Discovery| ToolsDiscovery["Tools Discovery"] ToolsDiscovery --> |AI Generation| AnthropicGen["Anthropic API
Sequence Generation"] AnthropicGen --> |Execute| ToolExecution["Tool Execution Loop"] end subgraph "Tool Execution Layer" ToolExecution --> |Safety Check| SafetyFilter["Safety Filter"] SafetyFilter --> |Call Tools| MCPToolCall["MCP Tool Calls"] MCPToolCall --> |Results| ExecutionLogs["Execution Logs"] end subgraph "Database Layer" Database[("SQLite Database
adv_scan.db")] DBInit["Database Initialization
init_db()"] DBInsert["Insert Scan Results"] DBQuery["Query Scan Results"] end subgraph "Response Layer" ExecutionLogs --> |Analysis| AnthropicAnalysis1 AnthropicAnalysis1 --> |Success Check| RetryLogic["Retry Logic"] RetryLogic --> |Parse Output| ParseOutput["parse_mcp_scanner_output()"] ParseOutput --> |Store Results| DBInsert DBInsert --> |Store in DB| Database ParseOutput --> |Response| APIResponse["API Response"] DBQuery --> |Retrieve from DB| Database DBQuery --> |Return Results| ScanResponse["Scan Retrieval Response"] end subgraph "External Systems" AnthropicAPI["Anthropic API"] MCPServers end AnthropicAnalysis1 -.-> AnthropicAPI AnthropicGen -.-> AnthropicAPI MCPServers -.-> ExternalMCP["External MCP Servers"] DBInit --> |Initialize on Startup| Database
api.py:831-914"] APIGet["Scan Retrieval
api.py:793-829"] API --> |File Upload| TempFile["temp.json"] API --> |Call| AdvScan["adv_scan()"] APIGet --> |Query DB| Database[("SQLite Database
adv_scan.db")] end subgraph "Advanced Scanner Layer" AdvScan --> |UUID Generation| OutputFile["Output File
mcp_scan_output_*.txt"] AdvScan --> |Retry Loop| ProcessRunner["run_scanner_process()"] ProcessRunner --> |Subprocess| SequenceRunner["sequence_runner.py"] ProcessRunner --> |Log Analysis| AnthropicAnalysis1["Anthropic API
Success Analysis"] end subgraph "Sequence Runner Layer" SequenceRunner --> |Initialize| MCPInit["MCP Client Init"] MCPInit --> |Connect| MCPServers["MCP Servers"] MCPServers --> |Discovery| ToolsDiscovery["Tools Discovery"] ToolsDiscovery --> |AI Generation| AnthropicGen["Anthropic API
Sequence Generation"] AnthropicGen --> |Execute| ToolExecution["Tool Execution Loop"] end subgraph "Tool Execution Layer" ToolExecution --> |Safety Check| SafetyFilter["Safety Filter"] SafetyFilter --> |Call Tools| MCPToolCall["MCP Tool Calls"] MCPToolCall --> |Results| ExecutionLogs["Execution Logs"] end subgraph "Database Layer" Database[("SQLite Database
adv_scan.db")] DBInit["Database Initialization
init_db()"] DBInsert["Insert Scan Results"] DBQuery["Query Scan Results"] end subgraph "Response Layer" ExecutionLogs --> |Analysis| AnthropicAnalysis1 AnthropicAnalysis1 --> |Success Check| RetryLogic["Retry Logic"] RetryLogic --> |Parse Output| ParseOutput["parse_mcp_scanner_output()"] ParseOutput --> |Store Results| DBInsert DBInsert --> |Store in DB| Database ParseOutput --> |Response| APIResponse["API Response"] DBQuery --> |Retrieve from DB| Database DBQuery --> |Return Results| ScanResponse["Scan Retrieval Response"] end subgraph "External Systems" AnthropicAPI["Anthropic API"] MCPServers end AnthropicAnalysis1 -.-> AnthropicAPI AnthropicGen -.-> AnthropicAPI MCPServers -.-> ExternalMCP["External MCP Servers"] DBInit --> |Initialize on Startup| Database
📚 How to Cite This Post
BibTeX
@article{yadav{{ page.date | date: "%Y" }}{{ page.title | slugify | replace: '-', '' }},
title = {Advance MCP Scanner},
author = {Sumit Yadav},
journal = {Tatva},
year = {{{ page.date | date: "%Y" }}},
month = {{{ page.date | date: "%B" }}},
day = {{{ page.date | date: "%d" }}},
url = {https://tatva.sumityadav.com.np/posts/2025/09/22/advance_scanner/},
note = {Accessed: {{ site.time | date: "%B %d, %Y" }}}
}
APA Style
Yadav, S. ({{ page.date | date: "%Y, %B %d" }}). Advance MCP Scanner. ." Tatva, {{ page.date | date: "%d %b %Y" }}, https://tatva.sumityadav.com.np." Tatva. {{ page.date | date: "%B %d, %Y" }}. https://tatva.sumityadav.com.np/posts/2025/09/22/advance_scanner/.
Note: This citation format is automatically generated. Please verify and adjust according to your institution's specific requirements.