Intelligent Model Context Protocol (MCP) server for AI-assisted API development. Generate mock servers from OpenAPI specs with advanced logging, performance analytics, and server discovery. Optimized for AI development workflows with comprehensive testing insights and automated analysis.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 30 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
analyze_test_results
-
compare_test_runs
-
create_agent_context
-
create_context_snapshot
-
create_test_session
-
create_test_session_context
-
create_workflow_context
-
deploy_scenario
-
discover_mock_servers
-
end_test_session
-
execute_test_plan
-
generate_mock_api
-
generate_test_report
-
get_context_data
-
get_global_context_data
-
get_performance_metrics
-
list_active_scenarios
-
list_contexts_by_type
-
manage_mock_data
-
monitor_test_progress
-
query_mock_logs
-
restore_context_snapshot
-
run_load_test
-
run_security_test
-
run_test_iteration
-
schedule_test_suite
-
switch_scenario
-
update_context_data
-
update_global_context_data
-
validate_scenario_config
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 30d356b · analyzer v33 · 1d ago
danger signals2
- dynamic code execution __import__() MockLoop-mockloop-mcp-30d356b/scripts/verify_installation.py :308
__import__(package) - committed secret private key MockLoop-mockloop-mcp-30d356b/examples/schemapin/complete_signing_example.py :47
PEM private key block (redacted)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 75
filesystem 41
- fs (weak) MockLoop-mockloop-mcp-30d356b/examples/schemapin/advanced_usage.py :17
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/examples/schemapin/basic_usage.py :12
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/examples/schemapin/complete_signing_example.py :11
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/fix_database.py :12
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/generator.py :7
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/parser.py :8
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/scripts/bump_version.py :24
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/scripts/embed_signatures.py :20
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/scripts/monitor_package.py :19
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/scripts/prepare_release.py :22
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/scripts/sign_all_schemas.py :22
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/scripts/validate_pypi_readiness.py :19
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/scripts/validate_signatures.py :20
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/scripts/verify_installation.py :17
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/community_scenarios.py :34
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/database_migration.py :13
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/generator.py :8
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/mcp_audit_logger.py :18
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/mcp_compliance.py :23
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/mcp_tools.py :55
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/mock_server_manager.py :12
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/parser.py :9
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/proxy/config.py :17
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/proxy/plugin_manager.py :16
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/schemapin/config.py :105
with open(file_path, "w", encoding="utf-8") as f: - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/schemapin/key_management.py :11
from pathlib import Path - fs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/schemapin/signing.py :12
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/generate_test_data.py :39
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/integration/test_comprehensive_integration.py :17
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/integration/test_final_integration.py :17
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/integration/test_manage_mock_data.py :14
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/integration/test_mcp_proxy_integration.py :23
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/integration/test_phase1_integration.py :13
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/integration/test_schemapin_integration.py :16
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/integration/test_structure.py :9
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/unit/test_http_client_extensions.py :15
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/unit/test_mcp_audit_logging.py :22
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/unit/test_mcp_resources.py :57
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/unit/test_schemapin_integration.py :17
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/unit/test_structure.py :9
from pathlib import Path - fs (weak) MockLoop-mockloop-mcp-30d356b/tests/unit/test_webhook_fix.py :14
from pathlib import Path
shell / exec 4
- shell (weak) MockLoop-mockloop-mcp-30d356b/scripts/bump_version.py :26
import subprocess - shell (weak) MockLoop-mockloop-mcp-30d356b/scripts/prepare_release.py :24
import subprocess - shell (weak) MockLoop-mockloop-mcp-30d356b/scripts/validate_pypi_readiness.py :21
import subprocess # nosec B404 - needed for validation commands - shell (weak) MockLoop-mockloop-mcp-30d356b/scripts/verify_installation.py :19
import subprocess
network 10
- net MockLoop-mockloop-mcp-30d356b/parser.py :10
import requests - net (weak) MockLoop-mockloop-mcp-30d356b/scripts/monitor_package.py :24
import requests - net (weak) MockLoop-mockloop-mcp-30d356b/scripts/validate_pypi_readiness.py :23
from urllib.parse import urlparse - net MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/mcp_tools.py :57
from urllib.parse import urlparse - net MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/parser.py :12
import requests - net MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/schemapin/key_management.py :14
import aiohttp - net MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/utils/http_client.py :12
import socket - net (weak) MockLoop-mockloop-mcp-30d356b/tests/integration/test_mcp_proxy_integration.py :869
# We expect _execute_proxy_test (called by execute_test_plan) to use aiohttp.ClientSession - net (weak) MockLoop-mockloop-mcp-30d356b/tests/integration/test_schemapin_integration.py :202
@patch('aiohttp.ClientSession.get') - net (weak) MockLoop-mockloop-mcp-30d356b/tests/unit/test_schemapin_integration.py :395
@patch('aiohttp.ClientSession.get')
secrets 2
- secrets (weak) MockLoop-mockloop-mcp-30d356b/examples/mcp-proxy/authentication-example.py :419
"api_key": os.getenv("API_KEY", "default-key") - secrets (weak) MockLoop-mockloop-mcp-30d356b/examples/mcp-proxy/hybrid-workflow-example.py :243
"credentials": {"token": os.getenv("API_TOKEN", "demo-token")},
database 13
- db MockLoop-mockloop-mcp-30d356b/fix_database.py :13
import sqlite3 - db MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/database_migration.py :14
import sqlite3 - db MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/mcp_audit_logger.py :15
import sqlite3 - db MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/mcp_compliance.py :21
import sqlite3 - db MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/mcp_context.py :25
import sqlite3 - db MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/schemapin/audit.py :9
import sqlite3 - db MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/schemapin/key_management.py :9
import sqlite3 - db (weak) MockLoop-mockloop-mcp-30d356b/tests/generate_test_data.py :35
import sqlite3 - db (weak) MockLoop-mockloop-mcp-30d356b/tests/integration/test_comprehensive_integration.py :19
import sqlite3 - db (weak) MockLoop-mockloop-mcp-30d356b/tests/integration/test_final_integration.py :19
import sqlite3 - db (weak) MockLoop-mockloop-mcp-30d356b/tests/integration/test_schemapin_integration.py :13
import sqlite3 - db (weak) MockLoop-mockloop-mcp-30d356b/tests/unit/test_mcp_audit_logging.py :18
import sqlite3 - db (weak) MockLoop-mockloop-mcp-30d356b/tests/unit/test_schemapin_integration.py :14
import sqlite3
tool registrations 42
- query_mock_logs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :460
- discover_mock_servers MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :554
- manage_mock_data MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :620
- validate_scenario_config MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :857
- deploy_scenario MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :874
- switch_scenario MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :892
- list_active_scenarios MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :905
- execute_test_plan MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :918
- run_test_iteration MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :941
- run_load_test MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :960
- run_security_test MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :979
- analyze_test_results MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :998
- generate_test_report MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1015
- compare_test_runs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1033
- get_performance_metrics MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1050
- create_test_session MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1065
- end_test_session MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1080
- schedule_test_suite MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1093
- monitor_test_progress MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1108
- create_test_session_context MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1126
- create_workflow_context MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1167
- create_agent_context MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1208
- get_context_data MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1251
- update_context_data MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1286
- create_context_snapshot MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1313
- restore_context_snapshot MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1350
- list_contexts_by_type MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1380
- get_global_context_data MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1442
- update_global_context_data MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/main.py :1474
- generate_mock_api MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :89
- query_mock_logs MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :108
- discover_mock_servers MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :128
- manage_mock_data MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :141
- validate_scenario_config MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :158
- deploy_scenario MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :172
- switch_scenario MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :187
- list_active_scenarios MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :201
- execute_test_plan MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :213
- run_test_iteration MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :229
- run_load_test MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :245
- run_security_test MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :261
- analyze_test_results MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/stdio_server.py :283
declared dependencies 22
- mcp@>=1.10.0
- fastapi@>=0.104.0
- uvicorn@>=0.24.0
- Jinja2@>=3.1.0
- PyYAML@>=6.0
- requests@>=2.32.4
- aiohttp@>=3.12.14
- schemapin@>=1.0.0
- pytest@>=7.0.0
- pytest-cov@>=4.0.0
- pytest-asyncio@>=0.21.0
- black@>=23.0.0
- ruff@>=0.1.0
- isort@>=5.12.0
- mypy@>=1.0.0
- bandit@>=1.7.0
- safety@>=2.3.0
- pre-commit@>=3.0.0
- pip-audit@>=2.6.0
- semgrep@>=1.45.0
- types-PyYAML@>=6.0.0
- types-requests@>=2.31.0
perm:untrusted 1
- untrusted MockLoop-mockloop-mcp-30d356b/parser.py :16
content = requests.get(path_or_url, timeout=30).text
transport_posture 1
- network-listening, binds all interfaces, no auth detected MockLoop-mockloop-mcp-30d356b/src/mockloop_mcp/generator.py :720
uvicorn.run(app, host="0.0.0.0", port={business_port})