PyStreamMCP 0.4.0__tar.gz → 1.1.2__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 (74) hide show
  1. pystreammcp-1.1.2/PKG-INFO +143 -0
  2. pystreammcp-1.1.2/README.md +77 -0
  3. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/pyproject.toml +6 -6
  4. pystreammcp-1.1.2/python/PyStreamMCP.egg-info/PKG-INFO +143 -0
  5. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/PyStreamMCP.egg-info/SOURCES.txt +4 -0
  6. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/PyStreamMCP.egg-info/requires.txt +2 -0
  7. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/cli.py +29 -0
  8. pystreammcp-1.1.2/python/pystreammcp/cli_daemon.py +59 -0
  9. pystreammcp-1.1.2/python/pystreammcp/cli_dashboard.py +307 -0
  10. pystreammcp-1.1.2/python/pystreammcp/scripts/__init__.py +0 -0
  11. pystreammcp-1.1.2/python/pystreammcp/scripts/post_install.py +40 -0
  12. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/setup.py +3 -3
  13. pystreammcp-0.4.0/PKG-INFO +0 -397
  14. pystreammcp-0.4.0/README.md +0 -333
  15. pystreammcp-0.4.0/python/PyStreamMCP.egg-info/PKG-INFO +0 -397
  16. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/LICENSE +0 -0
  17. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/MANIFEST.in +0 -0
  18. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/PyStreamMCP.egg-info/dependency_links.txt +0 -0
  19. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/PyStreamMCP.egg-info/top_level.txt +0 -0
  20. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/__init__.py +0 -0
  21. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/adapters.py +0 -0
  22. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/agent.py +0 -0
  23. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/api.py +0 -0
  24. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/context.py +0 -0
  25. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/decomposition.py +0 -0
  26. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/discovery.py +0 -0
  27. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/integrations/__init__.py +0 -0
  28. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/integrations/crewai.py +0 -0
  29. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/integrations/haystack.py +0 -0
  30. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/integrations/langchain.py +0 -0
  31. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/integrations/langsmith.py +0 -0
  32. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/integrations/llamaindex.py +0 -0
  33. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/integrations/pydantic_ai.py +0 -0
  34. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/integrations/semantic_kernel.py +0 -0
  35. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/mcp_server.py +0 -0
  36. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/ml/__init__.py +0 -0
  37. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/ml/relevance.py +0 -0
  38. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/ml/tagging.py +0 -0
  39. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/ml.py +0 -0
  40. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/multi_agent.py +0 -0
  41. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/observability/__init__.py +0 -0
  42. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/observability/metrics.py +0 -0
  43. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/okf_core.py +0 -0
  44. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/okf_discovery.py +0 -0
  45. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/okf_query_planner.py +0 -0
  46. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/optimization/__init__.py +0 -0
  47. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/optimization/advanced.py +0 -0
  48. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/optimization/decomposition.py +0 -0
  49. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/optimization.py +0 -0
  50. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/orchestration/__init__.py +0 -0
  51. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/orchestration/airflow.py +0 -0
  52. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/orchestration/nocode_rpa.py +0 -0
  53. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/orchestration/temporal.py +0 -0
  54. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/qa/__init__.py +0 -0
  55. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/qa/validator.py +0 -0
  56. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/quality.py +0 -0
  57. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/query.py +0 -0
  58. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/server.py +0 -0
  59. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/python/pystreammcp/streaming.py +0 -0
  60. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/setup.cfg +0 -0
  61. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_langchain_integration.py +0 -0
  62. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_llamaindex_integration.py +0 -0
  63. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_okf_core.py +0 -0
  64. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_okf_discovery.py +0 -0
  65. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_okf_query_planner.py +0 -0
  66. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_phase3_advanced.py +0 -0
  67. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_phase3_items12.py +0 -0
  68. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_phase3_items345.py +0 -0
  69. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_sprint1_foundation.py +0 -0
  70. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_sprint2_langchain.py +0 -0
  71. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_sprint3_rag_frameworks.py +0 -0
  72. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_sprint4_agent_frameworks.py +0 -0
  73. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_sprint5_orchestration.py +0 -0
  74. {pystreammcp-0.4.0 → pystreammcp-1.1.2}/tests/test_statguardian_integration.py +0 -0
@@ -0,0 +1,143 @@
1
+ Metadata-Version: 2.4
2
+ Name: PyStreamMCP
3
+ Version: 1.1.2
4
+ Summary: Intelligent MCP orchestration hub - Intent understanding, capability matching, tool ranking with cohesive foundation
5
+ Home-page: https://github.com/Mullassery/PyStreamMCP
6
+ Author: Georgi Mammen Mullassery
7
+ Author-email: Georgi Mammen Mullassery <mullassery@gmail.com>
8
+ License: Proprietary
9
+ Project-URL: Repository, https://github.com/Mullassery/PyStreamMCP
10
+ Project-URL: Issues, https://github.com/Mullassery/PyStreamMCP/issues
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: Other/Proprietary License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: pydantic>=2.0
24
+ Requires-Dist: python-frontmatter>=1.0.0
25
+ Requires-Dist: click>=8.0
26
+ Requires-Dist: rich>=13.0
27
+ Provides-Extra: dev
28
+ Requires-Dist: pytest>=7.0; extra == "dev"
29
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
30
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
31
+ Provides-Extra: api
32
+ Requires-Dist: fastapi>=0.104.0; extra == "api"
33
+ Requires-Dist: uvicorn[standard]>=0.24.0; extra == "api"
34
+ Requires-Dist: pydantic-settings>=2.0; extra == "api"
35
+ Provides-Extra: mcp
36
+ Requires-Dist: mcp>=0.1.0; extra == "mcp"
37
+ Provides-Extra: langchain
38
+ Requires-Dist: langchain>=0.1.0; extra == "langchain"
39
+ Provides-Extra: llamaindex
40
+ Requires-Dist: llama-index>=0.9.0; extra == "llamaindex"
41
+ Provides-Extra: semantic-kernel
42
+ Requires-Dist: semantic-kernel>=0.4.0; extra == "semantic-kernel"
43
+ Provides-Extra: crewai
44
+ Requires-Dist: crewai>=0.1.0; extra == "crewai"
45
+ Provides-Extra: pydantic-ai
46
+ Requires-Dist: pydantic-ai>=0.1.0; extra == "pydantic-ai"
47
+ Provides-Extra: haystack
48
+ Requires-Dist: haystack-ai>=2.0.0; extra == "haystack"
49
+ Provides-Extra: temporal
50
+ Requires-Dist: temporalio>=1.0.0; extra == "temporal"
51
+ Provides-Extra: airflow
52
+ Requires-Dist: apache-airflow>=2.7.0; extra == "airflow"
53
+ Provides-Extra: all-integrations
54
+ Requires-Dist: langchain>=0.1.0; extra == "all-integrations"
55
+ Requires-Dist: llama-index>=0.9.0; extra == "all-integrations"
56
+ Requires-Dist: semantic-kernel>=0.4.0; extra == "all-integrations"
57
+ Requires-Dist: crewai>=0.1.0; extra == "all-integrations"
58
+ Requires-Dist: pydantic-ai>=0.1.0; extra == "all-integrations"
59
+ Requires-Dist: haystack-ai>=2.0.0; extra == "all-integrations"
60
+ Requires-Dist: temporalio>=1.0.0; extra == "all-integrations"
61
+ Requires-Dist: apache-airflow>=2.7.0; extra == "all-integrations"
62
+ Dynamic: author
63
+ Dynamic: home-page
64
+ Dynamic: license-file
65
+ Dynamic: requires-python
66
+
67
+ # PyStreamMCP
68
+
69
+ Two-stage selective intelligence: metadata-first filtering + contextual reranking. 90-95% token reduction. OpenAI-compatible MCP orchestration layer for streaming.
70
+
71
+ **Latest Version:** 1.1.1
72
+
73
+ ## Features
74
+
75
+ - ✅ 90-95% token reduction (selective intelligence)
76
+ - ✅ 8+ connected tools with latency tracking
77
+ - ✅ Metadata-first filtering & contextual reranking
78
+ - ✅ Production-ready CLI dashboards
79
+ - ✅ Keyboard shortcuts for quick access
80
+ - ✅ OpenTelemetry support (6 backends)
81
+
82
+ ## Installation
83
+
84
+ ```bash
85
+ pip install pystreammcp
86
+ ```
87
+
88
+ ## Quick Start
89
+
90
+ ```bash
91
+ # Setup shortcuts
92
+ bash scripts/setup_shortcuts.sh
93
+
94
+ # View dashboard
95
+ dash-pystreammcp # Static snapshot
96
+ dash-pystreammcp-live # Live monitoring
97
+ dash-pystreammcp-export # Export metrics
98
+
99
+ # Connect tools
100
+ pystreammcp list-tools
101
+ pystreammcp connect --provider openai
102
+ ```
103
+
104
+ ## Dashboard
105
+
106
+ Real-time MCP orchestration metrics:
107
+ - `dash-pystreammcp` - View tool status, selective intelligence stats
108
+ - `dash-pystreammcp-live` - Watch active executions, routing performance
109
+ - `dash-pystreammcp-export` - Export to JSON
110
+
111
+ **Metrics:** Status, Connected Tools (8+), Selective Intelligence Reduction (90-95%), Active Jobs, Routing Performance
112
+
113
+ ## OpenTelemetry
114
+
115
+ Export to Prometheus, Datadog, Honeycomb, New Relic, Jaeger, or X-Ray.
116
+
117
+ ```bash
118
+ export OTEL_EXPORTER_OTLP_PROTOCOL=prometheus
119
+ dash-pystreammcp-live
120
+ ```
121
+
122
+ See `OTEL_SETUP_GUIDE.md`.
123
+
124
+ ## Production Deployment
125
+
126
+ Kubernetes, Docker Compose, and standalone patterns included.
127
+
128
+ See `PRODUCTION_DEPLOYMENT.md`.
129
+
130
+ ## Documentation
131
+
132
+ - `DASHBOARD_SHORTCUTS.md` - Keyboard shortcuts
133
+ - `OTEL_SETUP_GUIDE.md` - OpenTelemetry setup
134
+ - `PRODUCTION_DEPLOYMENT.md` - Deployment patterns
135
+
136
+ ## Repository
137
+
138
+ - GitHub: https://github.com/Mullassery/PyStreamMCP
139
+ - PyPI: https://pypi.org/project/pystreammcp
140
+
141
+ ## License
142
+
143
+ MIT
@@ -0,0 +1,77 @@
1
+ # PyStreamMCP
2
+
3
+ Two-stage selective intelligence: metadata-first filtering + contextual reranking. 90-95% token reduction. OpenAI-compatible MCP orchestration layer for streaming.
4
+
5
+ **Latest Version:** 1.1.1
6
+
7
+ ## Features
8
+
9
+ - ✅ 90-95% token reduction (selective intelligence)
10
+ - ✅ 8+ connected tools with latency tracking
11
+ - ✅ Metadata-first filtering & contextual reranking
12
+ - ✅ Production-ready CLI dashboards
13
+ - ✅ Keyboard shortcuts for quick access
14
+ - ✅ OpenTelemetry support (6 backends)
15
+
16
+ ## Installation
17
+
18
+ ```bash
19
+ pip install pystreammcp
20
+ ```
21
+
22
+ ## Quick Start
23
+
24
+ ```bash
25
+ # Setup shortcuts
26
+ bash scripts/setup_shortcuts.sh
27
+
28
+ # View dashboard
29
+ dash-pystreammcp # Static snapshot
30
+ dash-pystreammcp-live # Live monitoring
31
+ dash-pystreammcp-export # Export metrics
32
+
33
+ # Connect tools
34
+ pystreammcp list-tools
35
+ pystreammcp connect --provider openai
36
+ ```
37
+
38
+ ## Dashboard
39
+
40
+ Real-time MCP orchestration metrics:
41
+ - `dash-pystreammcp` - View tool status, selective intelligence stats
42
+ - `dash-pystreammcp-live` - Watch active executions, routing performance
43
+ - `dash-pystreammcp-export` - Export to JSON
44
+
45
+ **Metrics:** Status, Connected Tools (8+), Selective Intelligence Reduction (90-95%), Active Jobs, Routing Performance
46
+
47
+ ## OpenTelemetry
48
+
49
+ Export to Prometheus, Datadog, Honeycomb, New Relic, Jaeger, or X-Ray.
50
+
51
+ ```bash
52
+ export OTEL_EXPORTER_OTLP_PROTOCOL=prometheus
53
+ dash-pystreammcp-live
54
+ ```
55
+
56
+ See `OTEL_SETUP_GUIDE.md`.
57
+
58
+ ## Production Deployment
59
+
60
+ Kubernetes, Docker Compose, and standalone patterns included.
61
+
62
+ See `PRODUCTION_DEPLOYMENT.md`.
63
+
64
+ ## Documentation
65
+
66
+ - `DASHBOARD_SHORTCUTS.md` - Keyboard shortcuts
67
+ - `OTEL_SETUP_GUIDE.md` - OpenTelemetry setup
68
+ - `PRODUCTION_DEPLOYMENT.md` - Deployment patterns
69
+
70
+ ## Repository
71
+
72
+ - GitHub: https://github.com/Mullassery/PyStreamMCP
73
+ - PyPI: https://pypi.org/project/pystreammcp
74
+
75
+ ## License
76
+
77
+ MIT
@@ -4,17 +4,17 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "PyStreamMCP"
7
- version = "0.4.0"
8
- description = "Intelligence layer for AI agents - query planning, discovery, cost optimization"
7
+ version = "1.1.2"
8
+ description = "Intelligent MCP orchestration hub - Intent understanding, capability matching, tool ranking with cohesive foundation"
9
9
  readme = "README.md"
10
- license = { text = "MIT" }
10
+ license = { text = "Proprietary" }
11
11
  authors = [{ name = "Georgi Mammen Mullassery", email = "mullassery@gmail.com" }]
12
12
  requires-python = ">=3.9"
13
- dependencies = ["pydantic>=2.0", "python-frontmatter>=1.0.0"]
13
+ dependencies = ["pydantic>=2.0", "python-frontmatter>=1.0.0", "click>=8.0", "rich>=13.0"]
14
14
  classifiers = [
15
- "Development Status :: 3 - Alpha",
15
+ "Development Status :: 5 - Production/Stable",
16
16
  "Intended Audience :: Developers",
17
- "License :: OSI Approved :: MIT License",
17
+ "License :: Other/Proprietary License",
18
18
  "Programming Language :: Python :: 3",
19
19
  "Programming Language :: Python :: 3.9",
20
20
  "Programming Language :: Python :: 3.10",
@@ -0,0 +1,143 @@
1
+ Metadata-Version: 2.4
2
+ Name: PyStreamMCP
3
+ Version: 1.1.2
4
+ Summary: Intelligent MCP orchestration hub - Intent understanding, capability matching, tool ranking with cohesive foundation
5
+ Home-page: https://github.com/Mullassery/PyStreamMCP
6
+ Author: Georgi Mammen Mullassery
7
+ Author-email: Georgi Mammen Mullassery <mullassery@gmail.com>
8
+ License: Proprietary
9
+ Project-URL: Repository, https://github.com/Mullassery/PyStreamMCP
10
+ Project-URL: Issues, https://github.com/Mullassery/PyStreamMCP/issues
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: Other/Proprietary License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: pydantic>=2.0
24
+ Requires-Dist: python-frontmatter>=1.0.0
25
+ Requires-Dist: click>=8.0
26
+ Requires-Dist: rich>=13.0
27
+ Provides-Extra: dev
28
+ Requires-Dist: pytest>=7.0; extra == "dev"
29
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
30
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
31
+ Provides-Extra: api
32
+ Requires-Dist: fastapi>=0.104.0; extra == "api"
33
+ Requires-Dist: uvicorn[standard]>=0.24.0; extra == "api"
34
+ Requires-Dist: pydantic-settings>=2.0; extra == "api"
35
+ Provides-Extra: mcp
36
+ Requires-Dist: mcp>=0.1.0; extra == "mcp"
37
+ Provides-Extra: langchain
38
+ Requires-Dist: langchain>=0.1.0; extra == "langchain"
39
+ Provides-Extra: llamaindex
40
+ Requires-Dist: llama-index>=0.9.0; extra == "llamaindex"
41
+ Provides-Extra: semantic-kernel
42
+ Requires-Dist: semantic-kernel>=0.4.0; extra == "semantic-kernel"
43
+ Provides-Extra: crewai
44
+ Requires-Dist: crewai>=0.1.0; extra == "crewai"
45
+ Provides-Extra: pydantic-ai
46
+ Requires-Dist: pydantic-ai>=0.1.0; extra == "pydantic-ai"
47
+ Provides-Extra: haystack
48
+ Requires-Dist: haystack-ai>=2.0.0; extra == "haystack"
49
+ Provides-Extra: temporal
50
+ Requires-Dist: temporalio>=1.0.0; extra == "temporal"
51
+ Provides-Extra: airflow
52
+ Requires-Dist: apache-airflow>=2.7.0; extra == "airflow"
53
+ Provides-Extra: all-integrations
54
+ Requires-Dist: langchain>=0.1.0; extra == "all-integrations"
55
+ Requires-Dist: llama-index>=0.9.0; extra == "all-integrations"
56
+ Requires-Dist: semantic-kernel>=0.4.0; extra == "all-integrations"
57
+ Requires-Dist: crewai>=0.1.0; extra == "all-integrations"
58
+ Requires-Dist: pydantic-ai>=0.1.0; extra == "all-integrations"
59
+ Requires-Dist: haystack-ai>=2.0.0; extra == "all-integrations"
60
+ Requires-Dist: temporalio>=1.0.0; extra == "all-integrations"
61
+ Requires-Dist: apache-airflow>=2.7.0; extra == "all-integrations"
62
+ Dynamic: author
63
+ Dynamic: home-page
64
+ Dynamic: license-file
65
+ Dynamic: requires-python
66
+
67
+ # PyStreamMCP
68
+
69
+ Two-stage selective intelligence: metadata-first filtering + contextual reranking. 90-95% token reduction. OpenAI-compatible MCP orchestration layer for streaming.
70
+
71
+ **Latest Version:** 1.1.1
72
+
73
+ ## Features
74
+
75
+ - ✅ 90-95% token reduction (selective intelligence)
76
+ - ✅ 8+ connected tools with latency tracking
77
+ - ✅ Metadata-first filtering & contextual reranking
78
+ - ✅ Production-ready CLI dashboards
79
+ - ✅ Keyboard shortcuts for quick access
80
+ - ✅ OpenTelemetry support (6 backends)
81
+
82
+ ## Installation
83
+
84
+ ```bash
85
+ pip install pystreammcp
86
+ ```
87
+
88
+ ## Quick Start
89
+
90
+ ```bash
91
+ # Setup shortcuts
92
+ bash scripts/setup_shortcuts.sh
93
+
94
+ # View dashboard
95
+ dash-pystreammcp # Static snapshot
96
+ dash-pystreammcp-live # Live monitoring
97
+ dash-pystreammcp-export # Export metrics
98
+
99
+ # Connect tools
100
+ pystreammcp list-tools
101
+ pystreammcp connect --provider openai
102
+ ```
103
+
104
+ ## Dashboard
105
+
106
+ Real-time MCP orchestration metrics:
107
+ - `dash-pystreammcp` - View tool status, selective intelligence stats
108
+ - `dash-pystreammcp-live` - Watch active executions, routing performance
109
+ - `dash-pystreammcp-export` - Export to JSON
110
+
111
+ **Metrics:** Status, Connected Tools (8+), Selective Intelligence Reduction (90-95%), Active Jobs, Routing Performance
112
+
113
+ ## OpenTelemetry
114
+
115
+ Export to Prometheus, Datadog, Honeycomb, New Relic, Jaeger, or X-Ray.
116
+
117
+ ```bash
118
+ export OTEL_EXPORTER_OTLP_PROTOCOL=prometheus
119
+ dash-pystreammcp-live
120
+ ```
121
+
122
+ See `OTEL_SETUP_GUIDE.md`.
123
+
124
+ ## Production Deployment
125
+
126
+ Kubernetes, Docker Compose, and standalone patterns included.
127
+
128
+ See `PRODUCTION_DEPLOYMENT.md`.
129
+
130
+ ## Documentation
131
+
132
+ - `DASHBOARD_SHORTCUTS.md` - Keyboard shortcuts
133
+ - `OTEL_SETUP_GUIDE.md` - OpenTelemetry setup
134
+ - `PRODUCTION_DEPLOYMENT.md` - Deployment patterns
135
+
136
+ ## Repository
137
+
138
+ - GitHub: https://github.com/Mullassery/PyStreamMCP
139
+ - PyPI: https://pypi.org/project/pystreammcp
140
+
141
+ ## License
142
+
143
+ MIT
@@ -13,6 +13,8 @@ python/pystreammcp/adapters.py
13
13
  python/pystreammcp/agent.py
14
14
  python/pystreammcp/api.py
15
15
  python/pystreammcp/cli.py
16
+ python/pystreammcp/cli_daemon.py
17
+ python/pystreammcp/cli_dashboard.py
16
18
  python/pystreammcp/context.py
17
19
  python/pystreammcp/decomposition.py
18
20
  python/pystreammcp/discovery.py
@@ -49,6 +51,8 @@ python/pystreammcp/orchestration/nocode_rpa.py
49
51
  python/pystreammcp/orchestration/temporal.py
50
52
  python/pystreammcp/qa/__init__.py
51
53
  python/pystreammcp/qa/validator.py
54
+ python/pystreammcp/scripts/__init__.py
55
+ python/pystreammcp/scripts/post_install.py
52
56
  tests/test_langchain_integration.py
53
57
  tests/test_llamaindex_integration.py
54
58
  tests/test_okf_core.py
@@ -1,5 +1,7 @@
1
1
  pydantic>=2.0
2
2
  python-frontmatter>=1.0.0
3
+ click>=8.0
4
+ rich>=13.0
3
5
 
4
6
  [airflow]
5
7
  apache-airflow>=2.7.0
@@ -7,6 +7,7 @@ import click
7
7
 
8
8
  from pystreammcp import Agent, __version__
9
9
  from pystreammcp.api import PyStreamMCPAPI
10
+ from pystreammcp.cli_dashboard import PyStreamMCPDashboard
10
11
 
11
12
 
12
13
  @click.group()
@@ -67,6 +68,34 @@ def version():
67
68
  click.echo(f"PyStreamMCP v{__version__}")
68
69
 
69
70
 
71
+ @cli.command()
72
+ @click.option("--static", is_flag=True, help="Show static snapshot (non-interactive)")
73
+ @click.option("--alerts", is_flag=True, help="Show alerts only")
74
+ @click.option("--recommendations", is_flag=True, help="Show recommendations only")
75
+ @click.option("--export", type=str, metavar="FILE", help="Export metrics to JSON file")
76
+ @click.option("--config", type=str, metavar="PATH", help="Path to config file")
77
+ def dashboard(static: bool, alerts: bool, recommendations: bool, export: str, config: str):
78
+ """View real-time orchestration dashboard."""
79
+ try:
80
+ dash = PyStreamMCPDashboard(config_path=config)
81
+
82
+ if export:
83
+ dash.export_json(export)
84
+ elif alerts:
85
+ dash.show_alerts()
86
+ elif recommendations:
87
+ dash.show_recommendations()
88
+ else:
89
+ dash.run_dashboard(interactive=not static)
90
+
91
+ except KeyboardInterrupt:
92
+ click.echo("\n\nDashboard stopped.")
93
+ sys.exit(0)
94
+ except Exception as e:
95
+ click.echo(f"Error: {e}", err=True)
96
+ sys.exit(1)
97
+
98
+
70
99
  # Legacy CLI interface for compatibility
71
100
  class CLIInterface:
72
101
  """Command-line interface for PyStreamMCP (legacy)."""
@@ -0,0 +1,59 @@
1
+ """Dashboard daemon - runs in background, restarts on close"""
2
+
3
+ import subprocess
4
+ import time
5
+ import signal
6
+ import sys
7
+ from pathlib import Path
8
+
9
+ class DashboardDaemon:
10
+ def __init__(self, package_name: str, dashboard_cmd: str):
11
+ self.package_name = package_name
12
+ self.dashboard_cmd = dashboard_cmd
13
+ self.process = None
14
+ self.running = True
15
+
16
+ def start(self):
17
+ """Start dashboard daemon - restarts if closed"""
18
+ signal.signal(signal.SIGINT, self._handle_interrupt)
19
+
20
+ while self.running:
21
+ try:
22
+ print(f"\n📊 Starting {self.package_name} dashboard daemon...")
23
+ print(f" (Press Ctrl+C to close, use keyboard shortcuts to restore)\n")
24
+
25
+ self.process = subprocess.Popen(
26
+ self.dashboard_cmd,
27
+ shell=True,
28
+ stdout=subprocess.PIPE,
29
+ stderr=subprocess.PIPE
30
+ )
31
+
32
+ # Wait for process to complete
33
+ self.process.wait()
34
+
35
+ if self.running:
36
+ print(f"\n⚠️ Dashboard closed. Restarting in 2s... (Ctrl+C to stop)")
37
+ time.sleep(2)
38
+
39
+ except KeyboardInterrupt:
40
+ print("\n✅ Dashboard daemon stopped.")
41
+ self.running = False
42
+ except Exception as e:
43
+ print(f"❌ Error: {e}")
44
+ if self.running:
45
+ time.sleep(2)
46
+
47
+ def _handle_interrupt(self, signum, frame):
48
+ self.running = False
49
+ if self.process:
50
+ self.process.terminate()
51
+ sys.exit(0)
52
+
53
+ def start_persistent_dashboard(package_name: str, cmd: str = None):
54
+ """Start dashboard that persists across terminal sessions"""
55
+ if cmd is None:
56
+ cmd = f"{package_name.lower()} dashboard"
57
+
58
+ daemon = DashboardDaemon(package_name, cmd)
59
+ daemon.start()