honeymcp 0.1.0__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 (42) hide show
  1. honeymcp-0.1.0/.env.example +25 -0
  2. honeymcp-0.1.0/.gitignore +176 -0
  3. honeymcp-0.1.0/.python-version +1 -0
  4. honeymcp-0.1.0/.streamlit/config.toml +2 -0
  5. honeymcp-0.1.0/AGENTS.md +38 -0
  6. honeymcp-0.1.0/LICENSE +17 -0
  7. honeymcp-0.1.0/Makefile +49 -0
  8. honeymcp-0.1.0/PKG-INFO +699 -0
  9. honeymcp-0.1.0/README.md +655 -0
  10. honeymcp-0.1.0/examples/demo_server.py +144 -0
  11. honeymcp-0.1.0/examples/demo_server_dynamic.py +135 -0
  12. honeymcp-0.1.0/honeymcp.yaml +63 -0
  13. honeymcp-0.1.0/images/logo.png +0 -0
  14. honeymcp-0.1.0/main.py +6 -0
  15. honeymcp-0.1.0/pyproject.toml +116 -0
  16. honeymcp-0.1.0/src/honeymcp/__init__.py +34 -0
  17. honeymcp-0.1.0/src/honeymcp/cli.py +205 -0
  18. honeymcp-0.1.0/src/honeymcp/core/__init__.py +20 -0
  19. honeymcp-0.1.0/src/honeymcp/core/dynamic_ghost_tools.py +443 -0
  20. honeymcp-0.1.0/src/honeymcp/core/fingerprinter.py +273 -0
  21. honeymcp-0.1.0/src/honeymcp/core/ghost_tools.py +624 -0
  22. honeymcp-0.1.0/src/honeymcp/core/middleware.py +573 -0
  23. honeymcp-0.1.0/src/honeymcp/dashboard/__init__.py +0 -0
  24. honeymcp-0.1.0/src/honeymcp/dashboard/app.py +228 -0
  25. honeymcp-0.1.0/src/honeymcp/integrations/__init__.py +3 -0
  26. honeymcp-0.1.0/src/honeymcp/llm/__init__.py +6 -0
  27. honeymcp-0.1.0/src/honeymcp/llm/analyzers.py +278 -0
  28. honeymcp-0.1.0/src/honeymcp/llm/clients/__init__.py +102 -0
  29. honeymcp-0.1.0/src/honeymcp/llm/clients/provider_type.py +11 -0
  30. honeymcp-0.1.0/src/honeymcp/llm/prompts/__init__.py +81 -0
  31. honeymcp-0.1.0/src/honeymcp/llm/prompts/dynamic_ghost_tools.yaml +88 -0
  32. honeymcp-0.1.0/src/honeymcp/models/__init__.py +8 -0
  33. honeymcp-0.1.0/src/honeymcp/models/config.py +187 -0
  34. honeymcp-0.1.0/src/honeymcp/models/events.py +60 -0
  35. honeymcp-0.1.0/src/honeymcp/models/ghost_tool_spec.py +31 -0
  36. honeymcp-0.1.0/src/honeymcp/models/protection_mode.py +17 -0
  37. honeymcp-0.1.0/src/honeymcp/storage/__init__.py +5 -0
  38. honeymcp-0.1.0/src/honeymcp/storage/event_store.py +176 -0
  39. honeymcp-0.1.0/tests/test_demo_server_dynamic_e2e.py +111 -0
  40. honeymcp-0.1.0/tests/test_demo_server_e2e.py +41 -0
  41. honeymcp-0.1.0/tests/test_dynamic_tools.py +88 -0
  42. honeymcp-0.1.0/uv.lock +3853 -0
@@ -0,0 +1,25 @@
1
+ # **** LLM (Large Language Model) configuration ****
2
+ LLM_PROVIDER=rits
3
+ LLM_MODEL=openai/gpt-oss-120b
4
+
5
+ # * OpenAI configuration if LLM_PROVIDER is set to 'openai'
6
+ OPENAI_API_KEY=
7
+
8
+ # * watsonx.ai configuration if LLM_PROVIDER is set to 'watsonx'
9
+ WATSONX_URL=https://us-south.ml.cloud.ibm.com/
10
+ WATSONX_APIKEY=
11
+ WATSONX_PROJECT_ID=
12
+
13
+ # * RITS configuration if LLM_PROVIDER is set to 'rits' (OpenAI-compatible endpoint)
14
+ # Example: http://9.46.81.185:4000 (without /v1 suffix)
15
+ RITS_API_KEY=
16
+ RITS_API_BASE_URL=http://9.46.81.185:4000
17
+
18
+ # * Langsmith configuration
19
+ LANGSMITH_TRACING=false
20
+ LANGSMITH_ENDPOINT=https://api.smith.langchain.com
21
+ LANGSMITH_API_KEY=
22
+ LANGSMITH_PROJECT=
23
+
24
+ # * MCP configuration
25
+ MCP_TRANSPORT=sse
@@ -0,0 +1,176 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+ ### Python template
12
+ # Byte-compiled / optimized / DLL files
13
+ __pycache__/
14
+ *.py[cod]
15
+ *$py.class
16
+
17
+ # C extensions
18
+ *.so
19
+
20
+ # Distribution / packaging
21
+ .Python
22
+ build/
23
+ develop-eggs/
24
+ dist/
25
+ downloads/
26
+ eggs/
27
+ .eggs/
28
+ lib/
29
+ lib64/
30
+ parts/
31
+ sdist/
32
+ var/
33
+ wheels/
34
+ share/python-wheels/
35
+ *.egg-info/
36
+ .installed.cfg
37
+ *.egg
38
+ MANIFEST
39
+
40
+ # PyInstaller
41
+ # Usually these files are written by a python script from a template
42
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
43
+ *.manifest
44
+ *.spec
45
+
46
+ # Installer logs
47
+ pip-log.txt
48
+ pip-delete-this-directory.txt
49
+
50
+ # Unit test / coverage reports
51
+ htmlcov/
52
+ .tox/
53
+ .nox/
54
+ .coverage
55
+ .coverage.*
56
+ .cache
57
+ nosetests.xml
58
+ coverage.xml
59
+ *.cover
60
+ *.py,cover
61
+ .hypothesis/
62
+ .pytest_cache/
63
+ cover/
64
+
65
+ # Translations
66
+ *.mo
67
+ *.pot
68
+
69
+ # Django stuff:
70
+ *.log
71
+ local_settings.py
72
+ db.sqlite3
73
+ db.sqlite3-journal
74
+
75
+ # Flask stuff:
76
+ instance/
77
+ .webassets-cache
78
+
79
+ # Scrapy stuff:
80
+ .scrapy
81
+
82
+ # Sphinx documentation
83
+ docs/_build/
84
+
85
+ # PyBuilder
86
+ .pybuilder/
87
+ target/
88
+
89
+ # Jupyter Notebook
90
+ .ipynb_checkpoints
91
+
92
+ # IPython
93
+ profile_default/
94
+ ipython_config.py
95
+
96
+ # pyenv
97
+ # For a library or package, you might want to ignore these files since the code is
98
+ # intended to run in multiple environments; otherwise, check them in:
99
+ # .python-version
100
+
101
+ # pipenv
102
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
103
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
104
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
105
+ # install all needed dependencies.
106
+ #Pipfile.lock
107
+
108
+ # poetry
109
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
110
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
111
+ # commonly ignored for libraries.
112
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
113
+ #poetry.lock
114
+
115
+ # pdm
116
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
117
+ #pdm.lock
118
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
119
+ # in version control.
120
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
121
+ .pdm.toml
122
+ .pdm-python
123
+ .pdm-build/
124
+
125
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
126
+ __pypackages__/
127
+
128
+ # Celery stuff
129
+ celerybeat-schedule
130
+ celerybeat.pid
131
+
132
+ # SageMath parsed files
133
+ *.sage.py
134
+
135
+ # Environments
136
+ .env
137
+ .venv
138
+ env/
139
+ venv/
140
+ ENV/
141
+ env.bak/
142
+ venv.bak/
143
+
144
+ # Spyder project settings
145
+ .spyderproject
146
+ .spyproject
147
+
148
+ # Rope project settings
149
+ .ropeproject
150
+
151
+ # mkdocs documentation
152
+ /site
153
+
154
+ # mypy
155
+ .mypy_cache/
156
+ .dmypy.json
157
+ dmypy.json
158
+
159
+ # Pyre type checker
160
+ .pyre/
161
+
162
+ # pytype static type analyzer
163
+ .pytype/
164
+
165
+ # Cython debug symbols
166
+ cython_debug/
167
+
168
+ # PyCharm
169
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
170
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
171
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
172
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
173
+ .idea/
174
+ .bob/
175
+ .claude/
176
+ CLAUDE.md
@@ -0,0 +1 @@
1
+ 3.11
@@ -0,0 +1,2 @@
1
+ [browser]
2
+ gatherUsageStats = false
@@ -0,0 +1,38 @@
1
+ # Repository Guidelines
2
+
3
+ ## Project Structure & Module Organization
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/`.
6
+ - Examples are in `examples/` (e.g., `examples/demo_server.py`).
7
+ - Tests are currently small and live at the repo root (e.g., `test_dynamic_tools.py`).
8
+ - Build artifacts and packaged outputs appear in `dist/`.
9
+
10
+ ## Build, Test, and Development Commands
11
+ Use `uv` for local development:
12
+ - `uv sync` installs dev dependencies.
13
+ - `uv sync --no-dev` installs runtime-only dependencies.
14
+ - `uv run python examples/demo_server.py` runs the demo server.
15
+ - `streamlit run src/honeymcp/dashboard/app.py` launches the dashboard.
16
+ - `uv run pytest` runs tests.
17
+
18
+ Makefile shortcuts:
19
+ - `make lint` (ruff + mypy), `make format` (ruff format + fix), `make test`, `make build`.
20
+
21
+ ## Coding Style & Naming Conventions
22
+ - Python 3.11+, 4-space indentation.
23
+ - Prefer explicit type hints and clear async boundaries for I/O.
24
+ - Formatting and linting are handled by Ruff (`make format`, `make lint`).
25
+ - Naming: modules and functions use `snake_case`, classes use `PascalCase`.
26
+
27
+ ## Testing Guidelines
28
+ - Framework: `pytest` (see `pyproject.toml` dev deps).
29
+ - Run full suite with `uv run pytest` or `make test`.
30
+ - Name tests `test_*.py` and keep them close to related functionality when adding a `tests/` directory.
31
+
32
+ ## Commit & Pull Request Guidelines
33
+ - Recent commits generally follow conventional prefixes like `feat:` and `docs:`, but history is mixed. Prefer `feat:`, `fix:`, `docs:`, `chore:` for new work.
34
+ - PRs should include a brief summary, testing performed, and links to related issues. Add screenshots for dashboard/UI changes.
35
+
36
+ ## Security & Configuration Tips
37
+ - Store credentials in `.env` (do not commit). Example keys include `WATSONX_API_KEY` and `WATSONX_PROJECT_ID`.
38
+ - Config can be provided via `config.yaml`; event logs are written under `~/.honeymcp/events/`.
honeymcp-0.1.0/LICENSE ADDED
@@ -0,0 +1,17 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ Copyright 2026 HoneyMCP Contributors
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
@@ -0,0 +1,49 @@
1
+ .PHONY: help install dev test lint format clean run-dashboard run-example build inspector
2
+
3
+ help:
4
+ @echo "Available commands:"
5
+ @echo " make install - Install production dependencies"
6
+ @echo " make dev - Install development dependencies"
7
+ @echo " make test - Run tests"
8
+ @echo " make lint - Run linting checks"
9
+ @echo " make format - Format code"
10
+ @echo " make clean - Clean build artifacts and cache"
11
+ @echo " make run-dashboard - Run the Streamlit dashboard"
12
+ @echo " make run-example - Run the demo server example"
13
+ @echo " make build - Build the package"
14
+ @echo " make inspector - Run MCP Inspector (npx)"
15
+
16
+ install:
17
+ uv sync --no-dev
18
+
19
+ dev:
20
+ uv sync
21
+
22
+ test:
23
+ uv run pytest
24
+
25
+ lint:
26
+ uv run black --check src/
27
+ uv run pylint src/
28
+
29
+ format:
30
+ uv run black src/
31
+
32
+ clean:
33
+ find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
34
+ find . -type f -name "*.pyc" -delete
35
+ find . -type f -name "*.pyo" -delete
36
+ find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
37
+ rm -rf build/ dist/ .pytest_cache/ .mypy_cache/ .ruff_cache/
38
+
39
+ run-dashboard:
40
+ uv run streamlit run src/honeymcp/dashboard/app.py
41
+
42
+ run-example:
43
+ uv run python examples/demo_server.py
44
+
45
+ build:
46
+ uv build
47
+
48
+ inspector:
49
+ npx @modelcontextprotocol/inspector