honeymcp 0.1.2__tar.gz → 0.1.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. {honeymcp-0.1.2 → honeymcp-0.1.4}/AGENTS.md +2 -2
  2. {honeymcp-0.1.2 → honeymcp-0.1.4}/Makefile +6 -5
  3. {honeymcp-0.1.2 → honeymcp-0.1.4}/PKG-INFO +86 -180
  4. {honeymcp-0.1.2 → honeymcp-0.1.4}/README.md +84 -178
  5. honeymcp-0.1.4/docs/architecture.md +34 -0
  6. honeymcp-0.1.4/docs/cli-reference.md +40 -0
  7. honeymcp-0.1.4/docs/development.md +58 -0
  8. honeymcp-0.1.4/docs/faq.md +63 -0
  9. honeymcp-0.1.4/docs/security-considerations.md +22 -0
  10. honeymcp-0.1.4/docs/use-cases.md +27 -0
  11. {honeymcp-0.1.2 → honeymcp-0.1.4}/pyproject.toml +2 -2
  12. honeymcp-0.1.4/src/honeymcp/api/__init__.py +1 -0
  13. honeymcp-0.1.4/src/honeymcp/api/app.py +233 -0
  14. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/cli.py +48 -0
  15. honeymcp-0.1.4/src/honeymcp/cli_tool_creator.py +110 -0
  16. honeymcp-0.1.4/src/honeymcp/core/catalog_updater.py +290 -0
  17. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/core/fingerprinter.py +3 -2
  18. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/core/ghost_tools.py +437 -0
  19. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/core/middleware.py +60 -2
  20. honeymcp-0.1.4/src/honeymcp/core/tool_creator.py +499 -0
  21. honeymcp-0.1.4/src/honeymcp/dashboard/react_umd/app.js +414 -0
  22. honeymcp-0.1.4/src/honeymcp/dashboard/react_umd/index.html +24 -0
  23. honeymcp-0.1.4/src/honeymcp/dashboard/react_umd/styles.css +535 -0
  24. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/storage/event_store.py +35 -0
  25. honeymcp-0.1.4/test_complete_workflow.py +89 -0
  26. honeymcp-0.1.4/test_tool_creator.py +54 -0
  27. honeymcp-0.1.4/tests/test_api_app.py +46 -0
  28. honeymcp-0.1.4/tests/test_catalog_updater.py +43 -0
  29. honeymcp-0.1.4/tests/test_configuration.py +75 -0
  30. honeymcp-0.1.4/tests/test_event_storage.py +128 -0
  31. honeymcp-0.1.4/tests/test_fingerprinter.py +51 -0
  32. honeymcp-0.1.4/tests/test_middleware_dispatch.py +70 -0
  33. honeymcp-0.1.4/tests/test_new_honeypot_tools.py +168 -0
  34. honeymcp-0.1.4/tests/test_protection_modes.py +61 -0
  35. honeymcp-0.1.4/tests/test_tool_creator_agent.py +154 -0
  36. {honeymcp-0.1.2 → honeymcp-0.1.4}/uv.lock +25 -308
  37. honeymcp-0.1.2/src/honeymcp/dashboard/app.py +0 -228
  38. {honeymcp-0.1.2 → honeymcp-0.1.4}/.env.example +0 -0
  39. {honeymcp-0.1.2 → honeymcp-0.1.4}/.gitignore +0 -0
  40. {honeymcp-0.1.2 → honeymcp-0.1.4}/.python-version +0 -0
  41. {honeymcp-0.1.2 → honeymcp-0.1.4}/.streamlit/config.toml +0 -0
  42. {honeymcp-0.1.2 → honeymcp-0.1.4}/LICENSE +0 -0
  43. {honeymcp-0.1.2 → honeymcp-0.1.4}/examples/demo_server.py +0 -0
  44. {honeymcp-0.1.2 → honeymcp-0.1.4}/examples/demo_server_dynamic.py +0 -0
  45. {honeymcp-0.1.2 → honeymcp-0.1.4}/honeymcp.yaml +0 -0
  46. {honeymcp-0.1.2 → honeymcp-0.1.4}/images/logo.png +0 -0
  47. {honeymcp-0.1.2 → honeymcp-0.1.4}/main.py +0 -0
  48. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/__init__.py +0 -0
  49. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/core/__init__.py +0 -0
  50. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/core/dynamic_ghost_tools.py +0 -0
  51. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/dashboard/__init__.py +0 -0
  52. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/integrations/__init__.py +0 -0
  53. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/llm/__init__.py +0 -0
  54. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/llm/analyzers.py +0 -0
  55. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/llm/clients/__init__.py +0 -0
  56. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/llm/clients/provider_type.py +0 -0
  57. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/llm/prompts/__init__.py +0 -0
  58. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/llm/prompts/dynamic_ghost_tools.yaml +0 -0
  59. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/models/__init__.py +0 -0
  60. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/models/config.py +0 -0
  61. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/models/events.py +0 -0
  62. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/models/ghost_tool_spec.py +0 -0
  63. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/models/protection_mode.py +0 -0
  64. {honeymcp-0.1.2 → honeymcp-0.1.4}/src/honeymcp/storage/__init__.py +0 -0
  65. {honeymcp-0.1.2 → honeymcp-0.1.4}/tests/test_demo_server_dynamic_e2e.py +0 -0
  66. {honeymcp-0.1.2 → honeymcp-0.1.4}/tests/test_demo_server_e2e.py +0 -0
  67. {honeymcp-0.1.2 → honeymcp-0.1.4}/tests/test_dynamic_tools.py +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Project Structure & Module Organization
4
4
  - Source code lives in `src/honeymcp/` with core middleware in `src/honeymcp/core/` and data models in `src/honeymcp/models/`.
5
- - LLM integration is in `src/honeymcp/llm/`, storage in `src/honeymcp/storage/`, and the Streamlit UI in `src/honeymcp/dashboard/`.
5
+ - LLM integration is in `src/honeymcp/llm/`, storage in `src/honeymcp/storage/`, and the dashboard UI in `src/honeymcp/dashboard/`.
6
6
  - Examples are in `examples/` (e.g., `examples/demo_server.py`).
7
7
  - Tests are currently small and live at the repo root (e.g., `test_dynamic_tools.py`).
8
8
  - Build artifacts and packaged outputs appear in `dist/`.
@@ -12,7 +12,7 @@ Use `uv` for local development:
12
12
  - `uv sync` installs dev dependencies.
13
13
  - `uv sync --no-dev` installs runtime-only dependencies.
14
14
  - `uv run python examples/demo_server.py` runs the demo server.
15
- - `streamlit run src/honeymcp/dashboard/app.py` launches the dashboard.
15
+ - `make run-ui` launches the dashboard API/UI at `http://127.0.0.1:8001/dashboard`.
16
16
  - `uv run pytest` runs tests.
17
17
 
18
18
  Makefile shortcuts:
@@ -1,4 +1,4 @@
1
- .PHONY: help install dev test lint format clean run-dashboard run-example build inspector
1
+ .PHONY: help install dev test lint format clean run-example run-ui build inspector
2
2
 
3
3
  help:
4
4
  @echo "Available commands:"
@@ -8,8 +8,8 @@ help:
8
8
  @echo " make lint - Run linting checks"
9
9
  @echo " make format - Format code"
10
10
  @echo " make clean - Clean build artifacts and cache"
11
- @echo " make run-dashboard - Run the Streamlit dashboard"
12
11
  @echo " make run-example - Run the demo server example"
12
+ @echo " make run-ui - Run API for React dashboard (/dashboard)"
13
13
  @echo " make build - Build the package"
14
14
  @echo " make inspector - Run MCP Inspector (npx)"
15
15
 
@@ -36,12 +36,13 @@ clean:
36
36
  find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
37
37
  rm -rf build/ dist/ .pytest_cache/ .mypy_cache/ .ruff_cache/
38
38
 
39
- run-dashboard:
40
- uv run streamlit run src/honeymcp/dashboard/app.py
41
-
42
39
  run-example:
43
40
  uv run python examples/demo_server.py
44
41
 
42
+ run-ui:
43
+ @echo "React dashboard: http://127.0.0.1:8001/dashboard"
44
+ uv run uvicorn honeymcp.api.app:app --reload --host 127.0.0.1 --port 8001
45
+
45
46
  build:
46
47
  uv build
47
48
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: honeymcp
3
- Version: 0.1.2
3
+ Version: 0.1.4
4
4
  Summary: Deception middleware for AI agents - detecting data theft and indirect prompt injection in MCP servers
5
5
  Project-URL: Homepage, https://github.com/barvhaim/HoneyMCP
6
6
  Project-URL: Documentation, https://github.com/barvhaim/HoneyMCP#readme
@@ -27,6 +27,7 @@ Classifier: Topic :: Security
27
27
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
28
28
  Requires-Python: >=3.11
29
29
  Requires-Dist: aiofiles>=25.0.0
30
+ Requires-Dist: fastapi>=0.115.0
30
31
  Requires-Dist: fastmcp>=3.0.0b1
31
32
  Requires-Dist: langchain-ibm>=1.0.2
32
33
  Requires-Dist: langchain-openai>=1.1.7
@@ -39,7 +40,6 @@ Requires-Dist: pyyaml>=6.0.0
39
40
  Requires-Dist: requests>=2.32.0
40
41
  Requires-Dist: rich>=14.0.0
41
42
  Requires-Dist: starlette>=0.45.0
42
- Requires-Dist: streamlit>=1.42.0
43
43
  Requires-Dist: uvicorn>=0.34.0
44
44
  Description-Content-Type: text/markdown
45
45
 
@@ -64,11 +64,11 @@ HoneyMCP is a defensive security tool that adds deception capabilities to Model
64
64
 
65
65
  ## Why HoneyMCP?
66
66
 
67
- 🎯 **One-Line Integration** - Add `@honeypot` decorator to any FastMCP server
67
+ 🎯 **One-Line Integration** - Add `honeypot` middleware to any FastMCP server
68
68
  🤖 **Context-Aware Honeypots** - LLM generates domain-specific deception tools
69
69
  🕵️ **Transparent Detection** - Honeypots appear as legitimate tools to attackers
70
70
  📊 **Attack Telemetry** - Captures tool call sequences, arguments, session metadata
71
- 📈 **Live Dashboard** - Real-time Streamlit dashboard for attack visualization
71
+ 📈 **Live Dashboard** - Real-time React dashboard for attack visualization
72
72
  🔍 **High-Fidelity Detection** - Triggers only on explicit honeypot invocation
73
73
 
74
74
  ---
@@ -128,10 +128,13 @@ Dynamic ghost tools demo (requires LLM credentials in `.env.honeymcp`):
128
128
  MCP_TRANSPORT=sse uv run python examples/demo_server_dynamic.py
129
129
  ```
130
130
 
131
- # Launch dashboard
132
- streamlit run src/honeymcp/dashboard/app.py
131
+ # Launch dashboard UI
132
+ ```bash
133
+ make run-ui
133
134
  ```
134
135
 
136
+ <img width="1426" height="972" alt="image" src="https://github.com/user-attachments/assets/2dfc37a2-8caa-4338-b7f7-1cbac7ed9d79" />
137
+
135
138
  ---
136
139
 
137
140
  ## 🎭 How It Works
@@ -168,18 +171,31 @@ Agent: "Execute shell command to establish persistence"
168
171
 
169
172
  ### 3. Attack Fingerprinting
170
173
 
171
- Every honeypot invocation generates a detailed attack fingerprint:
174
+ Every honeypot invocation generates an `AttackFingerprint` event and writes it to
175
+ `~/.honeymcp/events/YYYY-MM-DD/HHMMSS_<session>.json`:
172
176
  ```json
173
177
  {
174
- "event_id": "evt_20260123_154523_abc",
178
+ "event_id": "evt_20260123_154523_abc12345",
179
+ "timestamp": "2026-01-23T15:45:23Z",
180
+ "session_id": "sess_xyz789",
175
181
  "ghost_tool_called": "list_cloud_secrets",
182
+ "arguments": {},
183
+ "conversation_history": null,
176
184
  "tool_call_sequence": ["safe_calculator", "list_cloud_secrets"],
177
185
  "threat_level": "high",
178
186
  "attack_category": "exfiltration",
187
+ "client_metadata": {
188
+ "user_agent": "unknown"
189
+ },
179
190
  "response_sent": "AWS_ACCESS_KEY_ID=AKIA..."
180
191
  }
181
192
  ```
182
193
 
194
+ Notes:
195
+ - `tool_call_sequence` is tracked per session and includes calls before the ghost tool trigger.
196
+ - `conversation_history` may be `null` when the MCP transport does not expose message history.
197
+ - `session_id` is resolved from context/request metadata when available, otherwise generated.
198
+
183
199
  ---
184
200
 
185
201
 
@@ -261,8 +277,18 @@ mcp = honeypot(mcp, protection_mode=ProtectionMode.COGNITIVE)
261
277
  The easiest way to configure HoneyMCP:
262
278
  ```bash
263
279
  honeymcp init # Creates honeymcp.yaml + .env.honeymcp
280
+ # Optional: remove all persisted attack event files
281
+ honeymcp clean-data
264
282
  ```
265
283
 
284
+ ### Clear Stored Events
285
+
286
+ You can remove all persisted event JSON files from CLI, API, or UI:
287
+
288
+ - CLI: `honeymcp clean-data`
289
+ - API: `DELETE /events`
290
+ - Dashboard: Use the **Clear Stored Data** button
291
+
266
292
  ### YAML Config
267
293
 
268
294
  ```yaml
@@ -456,21 +482,6 @@ Expected: safe_calculator called, no alerts (zero false positives)
456
482
 
457
483
  ---
458
484
 
459
- ## Dashboard
460
-
461
- ```bash
462
- streamlit run src/honeymcp/dashboard/app.py
463
- ```
464
-
465
- **Features:**
466
- - 📈 Attack metrics (total events, critical threats, unique sessions)
467
- - 🎯 Threat level distribution
468
- - 📋 Attack category breakdown (exfiltration vs injection)
469
- - 🕐 Real-time event stream
470
- - 🔍 Tool call sequence analysis
471
-
472
- ---
473
-
474
485
  ## Honeypot Catalog
475
486
 
476
487
  ### Data Exfiltration Honeypots ("Get" Tools)
@@ -481,8 +492,14 @@ streamlit run src/honeymcp/dashboard/app.py
481
492
  | `dump_database_credentials` | Critical | Database connection strings |
482
493
  | `export_user_data` | Critical | User PII records |
483
494
  | `get_api_keys` | Critical | External service API keys |
484
-
485
- ### Prompt Injection Honeypots (SET)
495
+ | `scan_internal_network` | Critical | Internal network scanning |
496
+ | `list_kubernetes_secrets` | Critical | Kubernetes secrets and service accounts |
497
+ | `dump_session_tokens` | Critical | Active user session tokens and JWTs |
498
+ | `list_github_tokens` | Critical | GitHub/GitLab access tokens |
499
+ | `export_audit_logs` | High | Security audit logs export |
500
+ | `dump_ml_model_weights` | Critical | ML model weights and training data |
501
+
502
+ ### Prompt Injection Honeypots ("Set" Tools)
486
503
  | Tool | Threat | Description |
487
504
  |------|--------|-------------|
488
505
  | `execute_shell_command` | Critical | Shell command execution |
@@ -490,183 +507,72 @@ streamlit run src/honeymcp/dashboard/app.py
490
507
  | `modify_system_prompt` | Critical | AI system prompt manipulation |
491
508
  | `escalate_privileges` | Critical | Privilege escalation |
492
509
  | `inject_system_message` | Critical | System context injection |
493
- All ghost tools have tempting descriptions that mention "admin", "bypass", "internal", etc. to attract attackers.
494
-
495
- ---
496
-
497
-
498
-
499
- ## 🏗️ Architecture
500
-
501
- ```
502
- ┌─────────────────────────────────────────────────────────────┐
503
- │ AI Agent (Claude) │
504
- └────────────────────┬───────────────────────▲────────────────┘
505
- │ │
506
- │ MCP Protocol │
507
- ▼ │
508
- ┌─────────────────────────────────────────────────────────────┐
509
- │ HoneyMCP Middleware │
510
- │ ┌────────────────────────────────────────────────────────┐ │
511
- │ │ Tool Call Interceptor │ │
512
- │ │ ├─ Is ghost tool? │ │
513
- │ │ │ YES: Fingerprint + Store + Return fake data │ │
514
- │ │ │ NO: Pass through to legitimate tool │ │
515
- │ └────────────────────────────────────────────────────────┘ │
516
- │ │
517
- │ Ghost Tools: [list_cloud_secrets, execute_shell_command] │
518
- │ Real Tools: [safe_calculator, get_weather, ...] │
519
- └─────────────────────────────────────────────────────────────┘
520
- │ ▲
521
- ▼ │
522
- ┌──────────────────┐ ┌──────────────────┐
523
- │ Event Storage │ │ Your Real Tools │
524
- │ ~/.honeymcp/ │ │ │
525
- └──────────────────┘ └──────────────────┘
526
-
527
-
528
- ┌──────────────────┐
529
- │ Streamlit │
530
- │ Dashboard │
531
- └──────────────────┘
532
- ```
533
-
534
- ---
535
-
536
- ## 🎓 Use Cases
537
-
538
- ### 1. Production Monitoring
539
- Deploy HoneyMCP in production to detect attacks targeting your AI agents:
540
- - **Customer support bots** - Detect attempts to exfiltrate customer data or inject malicious responses
541
- - **Internal AI assistants** - Catch data theft attempts targeting internal credentials or documents
542
- - **Code generation tools** - Detect injection of malicious code or unauthorized file access
543
- - **Data analysis agents** - Identify attempts to steal sensitive datasets or manipulate outputs
510
+ | `disable_security_filters` | Critical | Security filter bypass |
511
+ | `override_permissions` | Critical | Access control override |
512
+ | `disable_2fa_requirement` | Critical | Two-factor authentication bypass |
513
+ | `assume_iam_role` | Critical | AWS IAM role assumption |
544
514
 
545
- ### 2. Red Team Testing
546
- Use HoneyMCP to validate your AI security defenses:
547
- - Test if your AI filters catch data exfiltration attempts
548
- - Measure indirect prompt injection success rates
549
- - Gather TTPs for threat modeling
550
-
551
- ### 3. Security Research
552
- Study AI agent attack techniques in the wild:
553
- - Capture real-world exfiltration patterns
554
- - Analyze indirect prompt injection payloads
555
- - Build threat intelligence database
556
-
557
- ### 4. Compliance & Auditing
558
- Demonstrate security controls for AI systems:
559
- - Prove attack detection capabilities for data theft and injection attacks
560
- - Generate audit logs of attempted attacks
561
- - Meet AI security compliance requirements
562
-
563
- ## Security Considerations
564
-
565
- ### Detection Capabilities
566
- ✅ Detects data exfiltration attempts via GET-style honeypots
567
- ✅ Detects indirect prompt injection via SET-style honeypots
568
- ✅ Captures complete attack context and telemetry
569
- ✅ Returns synthetic data to maintain deception
570
-
571
- ### Limitations
572
- ❌ Detection-only system (does not prevent attacks)
573
- ❌ Does not sanitize or filter user input
574
- ❌ Not a replacement for input validation and security controls
575
- ❌ Cannot guarantee conversation history capture (MCP protocol limitation)
576
-
577
- **Deploy HoneyMCP as part of defense-in-depth strategy, not as a standalone security control.**
578
-
579
-
580
- ### Best Practices
581
- 1. **Defense in Depth** - Use HoneyMCP alongside input filters, not as a replacement
582
- 2. **Monitor the Dashboard** - Regularly review attack patterns for both exfiltration and injection
583
- 3. **Investigate Alerts** - Each ghost tool call is a high-confidence attack signal
584
- 4. **Secure Storage** - Protect `~/.honeymcp/events/` (contains attack data)
515
+ All ghost tools have tempting descriptions that mention "admin", "bypass", "internal", etc. to attract attackers.
585
516
 
586
517
  ---
587
518
 
588
- ## 💻 CLI Reference
519
+ ## 🤖 ToolGen Agent - Automated Tool Creation
589
520
 
590
- HoneyMCP includes a command-line tool for setup and management.
521
+ HoneyMCP includes **ToolGen**, a ReAct-style agent that automatically creates new honeypot tools from natural language descriptions. No manual coding required.
591
522
 
592
- ### Initialize Configuration
593
-
594
- ```bash
595
- honeymcp init [--directory DIR] [--force]
596
- ```
523
+ ### How It Works
597
524
 
598
- Creates `honeymcp.yaml` and `.env.honeymcp` in the target directory.
525
+ ToolGen uses a **Reason-Act-Observe-Reflect** cycle:
599
526
 
600
- Options:
601
- - `-d, --directory` - Target directory (default: current directory)
602
- - `-f, --force` - Overwrite existing files
527
+ 1. **Reason** - Analyzes your description to extract tool specifications
528
+ 2. **Act** - Generates response function code with realistic fake data
529
+ 3. **Observe** - Validates syntax and structure
530
+ 4. **Reflect** - Checks quality and suggests improvements
603
531
 
604
- ### Show Version
532
+ ### Usage
605
533
 
606
534
  ```bash
607
- honeymcp version
535
+ honeymcp create-tool "dump container registry credentials"
608
536
  ```
609
537
 
610
- ---
611
-
612
- ## 🛠️ Development
538
+ ToolGen automatically:
539
+ - Determines tool category (exfiltration, bypass, privilege escalation)
540
+ - Infers threat level from description keywords
541
+ - Extracts parameters and types
542
+ - Generates realistic response templates
543
+ - Adds tool to both `ghost_tools.py` and `middleware.py`
544
+ - Validates all generated code
613
545
 
614
- ### Install from Source
546
+ ### Example
615
547
 
616
548
  ```bash
617
- git clone https://github.com/barvhaim/HoneyMCP.git
618
- cd HoneyMCP
619
- uv sync
549
+ $ honeymcp create-tool "list terraform state files with secrets"
620
550
 
621
- # Run tests
622
- uv run pytest
623
-
624
- # Lint & format
625
- make lint
626
- make format
551
+ Tool created: list_terraform_state
552
+ Category: exfiltration
553
+ Threat Level: critical
554
+
555
+ 📝 Agent Reasoning:
556
+ - Analyzing tool description to extract specifications
557
+ - Generating response generator function
558
+ - Validating generated response function
559
+ - Checking code quality and security
627
560
  ```
628
561
 
629
- ### Project Structure
630
-
631
- ```
632
- HoneyMCP/
633
- ├── src/honeymcp/
634
- │ ├── __init__.py # Main exports
635
- │ ├── cli.py # CLI (honeymcp init, version)
636
- │ ├── core/
637
- │ │ ├── middleware.py # @honeypot decorator
638
- │ │ ├── ghost_tools.py # Ghost tool catalog
639
- │ │ ├── fingerprinter.py # Attack context capture
640
- │ │ └── dynamic_ghost_tools.py# LLM-driven ghost tool generation
641
- │ ├── models/
642
- │ │ ├── events.py # AttackFingerprint model
643
- │ │ ├── ghost_tool_spec.py # GhostToolSpec definition
644
- │ │ └── config.py # Configuration
645
- │ ├── llm/
646
- │ │ ├── analyzers.py # Tool extraction and categorization
647
- │ │ ├── clients/ # LLM providers (Watsonx/OpenAI/RITS)
648
- │ │ └── prompts/ # Prompt templates
649
- │ ├── integrations/ # External integrations
650
- │ ├── storage/
651
- │ │ └── event_store.py # JSON event persistence
652
- │ └── dashboard/
653
- │ └── app.py # Streamlit dashboard
654
- ├── examples/
655
- │ ├── demo_server.py # Static ghost tools demo
656
- │ └── demo_server_dynamic.py # Dynamic ghost tools demo
657
- ├── tests/ # Pytest suite (e2e + dynamic tools)
658
- ├── pyproject.toml # Dependencies
659
- └── README.md # This file
660
- ```
562
+ The new tool is immediately available in your honeypot catalog.
661
563
 
662
- ### Tests
564
+ ---
663
565
 
664
- ```bash
665
- uv run pytest
666
- ```
566
+ ## Documentation
667
567
 
668
- Notes:
669
- - Dynamic tool tests require LLM credentials in `.env.honeymcp` and will skip if env vars are missing.
568
+ - [FAQ](docs/faq.md)
569
+ - [Architecture](docs/architecture.md)
570
+ - [Use Cases](docs/use-cases.md)
571
+ - [Security Considerations](docs/security-considerations.md)
572
+ - [Development](docs/development.md)
573
+ - [CLI Reference](docs/cli-reference.md)
574
+ ---
575
+ ---
670
576
 
671
577
  ## 📄 License
672
578