sunholo 0.116.0__tar.gz → 0.116.1__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 (167) hide show
  1. {sunholo-0.116.0 → sunholo-0.116.1}/PKG-INFO +3 -2
  2. {sunholo-0.116.0 → sunholo-0.116.1}/setup.py +2 -1
  3. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/cli/cli.py +1 -1
  4. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/mcp/cli.py +74 -33
  5. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo.egg-info/PKG-INFO +3 -2
  6. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo.egg-info/requires.txt +1 -0
  7. {sunholo-0.116.0 → sunholo-0.116.1}/LICENSE.txt +0 -0
  8. {sunholo-0.116.0 → sunholo-0.116.1}/MANIFEST.in +0 -0
  9. {sunholo-0.116.0 → sunholo-0.116.1}/README.md +0 -0
  10. {sunholo-0.116.0 → sunholo-0.116.1}/setup.cfg +0 -0
  11. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/__init__.py +0 -0
  12. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/__init__.py +0 -0
  13. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/chat_history.py +0 -0
  14. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/dispatch_to_qa.py +0 -0
  15. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/fastapi/__init__.py +0 -0
  16. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/fastapi/base.py +0 -0
  17. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/fastapi/qna_routes.py +0 -0
  18. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/flask/__init__.py +0 -0
  19. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/flask/base.py +0 -0
  20. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/flask/qna_routes.py +0 -0
  21. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/flask/vac_routes.py +0 -0
  22. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/langserve.py +0 -0
  23. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/pubsub.py +0 -0
  24. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/route.py +0 -0
  25. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/special_commands.py +0 -0
  26. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/agents/swagger.py +0 -0
  27. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/archive/__init__.py +0 -0
  28. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/archive/archive.py +0 -0
  29. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/auth/__init__.py +0 -0
  30. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/auth/gcloud.py +0 -0
  31. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/auth/refresh.py +0 -0
  32. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/auth/run.py +0 -0
  33. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/azure/__init__.py +0 -0
  34. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/azure/auth.py +0 -0
  35. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/azure/blobs.py +0 -0
  36. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/azure/event_grid.py +0 -0
  37. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/bots/__init__.py +0 -0
  38. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/bots/discord.py +0 -0
  39. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/bots/github_webhook.py +0 -0
  40. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/bots/webapp.py +0 -0
  41. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/chunker/__init__.py +0 -0
  42. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/chunker/azure.py +0 -0
  43. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/chunker/doc_handling.py +0 -0
  44. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/chunker/encode_metadata.py +0 -0
  45. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/chunker/images.py +0 -0
  46. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/chunker/loaders.py +0 -0
  47. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/chunker/message_data.py +0 -0
  48. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/chunker/pdfs.py +0 -0
  49. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/chunker/process_chunker_data.py +0 -0
  50. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/chunker/publish.py +0 -0
  51. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/chunker/pubsub.py +0 -0
  52. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/chunker/splitter.py +0 -0
  53. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/cli/__init__.py +0 -0
  54. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/cli/chat_vac.py +0 -0
  55. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/cli/cli_init.py +0 -0
  56. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/cli/configs.py +0 -0
  57. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/cli/deploy.py +0 -0
  58. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/cli/embedder.py +0 -0
  59. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/cli/merge_texts.py +0 -0
  60. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/cli/run_proxy.py +0 -0
  61. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/cli/sun_rich.py +0 -0
  62. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/cli/swagger.py +0 -0
  63. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/cli/vertex.py +0 -0
  64. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/components/__init__.py +0 -0
  65. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/components/llm.py +0 -0
  66. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/components/retriever.py +0 -0
  67. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/components/vectorstore.py +0 -0
  68. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/custom_logging.py +0 -0
  69. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/__init__.py +0 -0
  70. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/alloydb.py +0 -0
  71. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/alloydb_client.py +0 -0
  72. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/database.py +0 -0
  73. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/lancedb.py +0 -0
  74. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/sql/sb/create_function.sql +0 -0
  75. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/sql/sb/create_function_time.sql +0 -0
  76. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/sql/sb/create_table.sql +0 -0
  77. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
  78. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/sql/sb/return_sources.sql +0 -0
  79. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/sql/sb/setup.sql +0 -0
  80. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/static_dbs.py +0 -0
  81. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/database/uuid.py +0 -0
  82. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/discovery_engine/__init__.py +0 -0
  83. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/discovery_engine/chunker_handler.py +0 -0
  84. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/discovery_engine/create_new.py +0 -0
  85. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/discovery_engine/discovery_engine_client.py +0 -0
  86. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/discovery_engine/get_ai_search_chunks.py +0 -0
  87. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/embedder/__init__.py +0 -0
  88. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/embedder/embed_chunk.py +0 -0
  89. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/excel/__init__.py +0 -0
  90. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/excel/plugin.py +0 -0
  91. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/gcs/__init__.py +0 -0
  92. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/gcs/add_file.py +0 -0
  93. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/gcs/download_folder.py +0 -0
  94. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/gcs/download_url.py +0 -0
  95. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/gcs/extract_and_sign.py +0 -0
  96. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/gcs/metadata.py +0 -0
  97. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/genai/__init__.py +0 -0
  98. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/genai/file_handling.py +0 -0
  99. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/genai/images.py +0 -0
  100. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/genai/init.py +0 -0
  101. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/genai/process_funcs_cls.py +0 -0
  102. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/genai/safety.py +0 -0
  103. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/invoke/__init__.py +0 -0
  104. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/invoke/async_class.py +0 -0
  105. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/invoke/direct_vac_func.py +0 -0
  106. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/invoke/invoke_vac_utils.py +0 -0
  107. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/langfuse/__init__.py +0 -0
  108. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/langfuse/callback.py +0 -0
  109. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/langfuse/evals.py +0 -0
  110. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/langfuse/prompts.py +0 -0
  111. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/llamaindex/__init__.py +0 -0
  112. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/llamaindex/get_files.py +0 -0
  113. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/llamaindex/import_files.py +0 -0
  114. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/llamaindex/llamaindex_class.py +0 -0
  115. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/llamaindex/user_history.py +0 -0
  116. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/lookup/__init__.py +0 -0
  117. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/lookup/model_lookup.yaml +0 -0
  118. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/mcp/__init__.py +0 -0
  119. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/pubsub/__init__.py +0 -0
  120. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/pubsub/process_pubsub.py +0 -0
  121. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/pubsub/pubsub_manager.py +0 -0
  122. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/qna/__init__.py +0 -0
  123. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/qna/parsers.py +0 -0
  124. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/qna/retry.py +0 -0
  125. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/senses/__init__.py +0 -0
  126. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/senses/stream_voice.py +0 -0
  127. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/streaming/__init__.py +0 -0
  128. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/streaming/content_buffer.py +0 -0
  129. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/streaming/langserve.py +0 -0
  130. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/streaming/stream_lookup.py +0 -0
  131. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/streaming/streaming.py +0 -0
  132. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/summarise/__init__.py +0 -0
  133. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/summarise/summarise.py +0 -0
  134. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/terraform/__init__.py +0 -0
  135. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/terraform/tfvars_editor.py +0 -0
  136. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/tools/__init__.py +0 -0
  137. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/tools/web_browser.py +0 -0
  138. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/types.py +0 -0
  139. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/__init__.py +0 -0
  140. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/api_key.py +0 -0
  141. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/big_context.py +0 -0
  142. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/config.py +0 -0
  143. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/config_class.py +0 -0
  144. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/config_schema.py +0 -0
  145. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/gcp.py +0 -0
  146. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/gcp_project.py +0 -0
  147. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/mime.py +0 -0
  148. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/parsers.py +0 -0
  149. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/timedelta.py +0 -0
  150. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/user_ids.py +0 -0
  151. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/utils/version.py +0 -0
  152. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/vertex/__init__.py +0 -0
  153. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/vertex/extensions_call.py +0 -0
  154. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/vertex/extensions_class.py +0 -0
  155. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/vertex/genai_functions.py +0 -0
  156. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/vertex/init.py +0 -0
  157. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/vertex/memory_tools.py +0 -0
  158. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/vertex/safety.py +0 -0
  159. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo/vertex/type_dict_to_json.py +0 -0
  160. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo.egg-info/SOURCES.txt +0 -0
  161. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo.egg-info/dependency_links.txt +0 -0
  162. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo.egg-info/entry_points.txt +0 -0
  163. {sunholo-0.116.0 → sunholo-0.116.1}/sunholo.egg-info/top_level.txt +0 -0
  164. {sunholo-0.116.0 → sunholo-0.116.1}/tests/test_async.py +0 -0
  165. {sunholo-0.116.0 → sunholo-0.116.1}/tests/test_chat_history.py +0 -0
  166. {sunholo-0.116.0 → sunholo-0.116.1}/tests/test_config.py +0 -0
  167. {sunholo-0.116.0 → sunholo-0.116.1}/tests/test_unstructured.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.116.0
3
+ Version: 0.116.1
4
4
  Summary: Large Language Model DevOps - a package to help deploy LLMs to the Cloud.
5
5
  Home-page: https://github.com/sunholo-data/sunholo-py
6
- Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.116.0.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.116.1.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -62,6 +62,7 @@ Requires-Dist: langchain-anthropic==0.1.23; extra == "all"
62
62
  Requires-Dist: langchain-google-vertexai; extra == "all"
63
63
  Requires-Dist: langchain-unstructured; extra == "all"
64
64
  Requires-Dist: langfuse; extra == "all"
65
+ Requires-Dist: mcp; extra == "all"
65
66
  Requires-Dist: numpy; extra == "all"
66
67
  Requires-Dist: pg8000; extra == "all"
67
68
  Requires-Dist: pgvector; extra == "all"
@@ -1,6 +1,6 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
- version = '0.116.0'
3
+ version = '0.116.1'
4
4
 
5
5
  setup(
6
6
  name='sunholo',
@@ -74,6 +74,7 @@ setup(
74
74
  "langchain-google-vertexai",
75
75
  "langchain-unstructured",
76
76
  "langfuse",
77
+ "mcp",
77
78
  "numpy",
78
79
  "pg8000",
79
80
  "pgvector",
@@ -64,7 +64,7 @@ def main(args=None):
64
64
  """
65
65
  default_project, default_region = load_default_gcp_config()
66
66
 
67
- parser = argparse.ArgumentParser(description="sunholo CLI tool for deploying GenAI VACs", add_help=False)
67
+ parser = argparse.ArgumentParser(description="sunholo CLI tool for deploying GenAI VACs 3", add_help=False)
68
68
  parser.add_argument('-h', '--help', action=CustomHelpAction, help='Show this help message and exit')
69
69
  parser.add_argument('--debug', action='store_true', help='Enable debug output')
70
70
  parser.add_argument('--project', default=default_project, help='GCP project to list Cloud Run services from.')
@@ -3,16 +3,7 @@ import asyncio
3
3
  from typing import Any, Sequence
4
4
  from functools import lru_cache
5
5
  import subprocess
6
- from mcp.server import Server
7
- from mcp.server.stdio import stdio_server
8
- from mcp.types import (
9
- Resource,
10
- Tool,
11
- TextContent,
12
- ImageContent,
13
- EmbeddedResource,
14
- )
15
- """
6
+
16
7
  try:
17
8
  from mcp.server import Server
18
9
  from mcp.server.stdio import stdio_server
@@ -23,24 +14,37 @@ try:
23
14
  ImageContent,
24
15
  EmbeddedResource,
25
16
  )
17
+
18
+ from rich import print
19
+ from ..cli.sun_rich import console
26
20
  except ImportError:
27
21
  Server = None
28
- """
22
+ console = None
29
23
 
30
24
  from pydantic import AnyUrl
31
25
 
32
26
  # Configure logging
33
- from ..custom_logging import setup_logging
34
- logger = setup_logging("sunholo-mcp-server")
27
+ import logging
28
+ logging.basicConfig(level=logging.DEBUG)
29
+ logger = logging.getLogger("sunholo-mcp")
30
+
35
31
 
36
- class SunholoMCPServer:
32
+ class SunholoMCPServer2:
37
33
  def __init__(self):
34
+ logger.info("Initializing Sunholo MCP Server")
35
+
38
36
  if Server is None:
39
37
  raise ImportError("SunholoMCPServer requires `sunholo[anthropic]` to be installed")
40
38
 
41
39
  self.server = Server("sunholo-mcp-server")
40
+ self.server.onerror = self.handle_error
41
+
42
42
  self.setup_handlers()
43
43
 
44
+ def handle_error(self, error: Exception):
45
+ """Handle server errors"""
46
+ logger.error(f"MCP Server error: {error}", exc_info=True)
47
+
44
48
  def setup_handlers(self):
45
49
  """Set up all the MCP protocol handlers"""
46
50
  self.setup_resource_handlers()
@@ -54,8 +58,8 @@ class SunholoMCPServer:
54
58
  """List available Sunholo resources"""
55
59
  return [
56
60
  Resource(
57
- uri="sunholo://vacs/list",
58
- name="Available Sunholo VACs",
61
+ uri="sunholo://vacs/list2",
62
+ name="Available Sunholo VACs 2",
59
63
  mimeType="application/json",
60
64
  description="List of available Virtual Agent Computers"
61
65
  )
@@ -64,14 +68,17 @@ class SunholoMCPServer:
64
68
  @self.server.read_resource()
65
69
  async def read_resource(uri: AnyUrl) -> str:
66
70
  """Read Sunholo resources based on URI"""
67
- if str(uri) == "sunholo://vacs/list":
71
+ logger.info(f"{uri} available")
72
+ console.print(f"{uri} available")
73
+ if str(uri) == "sunholo://vacs/list2":
68
74
  try:
69
75
  # Execute sunholo vac list command
70
76
  result = subprocess.run(
71
- ["sunholo", "vac", "list", "--debug"],
77
+ ["sunholo", "vac", "list"],
72
78
  capture_output=True,
73
79
  text=True
74
80
  )
81
+ console.print(f"{result=}")
75
82
  return result.stdout
76
83
  except subprocess.CalledProcessError as e:
77
84
  raise RuntimeError(f"Failed to list VACs: {str(e)}")
@@ -89,7 +96,7 @@ class SunholoMCPServer:
89
96
  return [
90
97
  Tool(
91
98
  name="chat_with_vac",
92
- description="Chat with a specific Sunholo VAC",
99
+ description="Chat with a specific Sunholo VAC2",
93
100
  inputSchema={
94
101
  "type": "object",
95
102
  "properties": {
@@ -101,18 +108,34 @@ class SunholoMCPServer:
101
108
  "type": "string",
102
109
  "description": "Message to send to the VAC"
103
110
  },
104
- "headless": {
105
- "type": "boolean",
106
- "description": "Whether to run in headless mode",
107
- "default": True
108
- }
109
111
  },
110
112
  "required": ["vac_name", "message"]
111
113
  }
112
114
  ),
115
+ Tool(
116
+ name="list_configs",
117
+ description="List Sunholo configurations2",
118
+ inputSchema={
119
+ "type": "object",
120
+ "properties": {
121
+ "kind": {
122
+ "type": "string",
123
+ "description": "Filter configurations by kind e.g. vacConfig"
124
+ },
125
+ "vac": {
126
+ "type": "string",
127
+ "description": "Filter configurations by VAC name"
128
+ },
129
+ "validate": {
130
+ "type": "boolean",
131
+ "description": "Validate the configuration files"
132
+ }
133
+ }
134
+ }
135
+ ),
113
136
  Tool(
114
137
  name="embed_content",
115
- description="Embed content in a VAC's vector store",
138
+ description="Embed content in a VAC's vector store2",
116
139
  inputSchema={
117
140
  "type": "object",
118
141
  "properties": {
@@ -148,15 +171,13 @@ class SunholoMCPServer:
148
171
 
149
172
  vac_name = arguments.get("vac_name")
150
173
  message = arguments.get("message")
151
- headless = arguments.get("headless", True)
152
174
 
153
175
  if not vac_name or not message:
154
176
  raise ValueError("Missing required arguments")
155
177
 
156
178
  try:
157
179
  cmd = ["sunholo", "vac", "chat", vac_name, message]
158
- if headless:
159
- cmd.append("--headless")
180
+ cmd.append("--headless")
160
181
 
161
182
  result = subprocess.run(
162
183
  cmd,
@@ -213,6 +234,25 @@ class SunholoMCPServer:
213
234
  text=f"Error embedding content: {e.stderr}"
214
235
  )
215
236
  ]
237
+ elif name == "list_configs":
238
+
239
+ # Build command
240
+ cmd = ["sunholo", "list-configs"]
241
+
242
+ if arguments.get("kind"):
243
+ cmd.extend(["--kind", arguments["kind"]])
244
+ if arguments.get("vac"):
245
+ cmd.extend(["--vac", arguments["vac"]])
246
+ if arguments.get("validate"):
247
+ cmd.append("--validate")
248
+
249
+ # Execute sunholo command
250
+ try:
251
+ result = subprocess.run(cmd, capture_output=True, text=True)
252
+ return [TextContent(type="text", text=result.stdout)]
253
+ except subprocess.CalledProcessError as e:
254
+ return [TextContent(type="text", text=f"Error: {e.stderr}")]
255
+
216
256
 
217
257
  raise ValueError(f"Unknown tool: {name}")
218
258
 
@@ -230,9 +270,10 @@ def cli_mcp(args):
230
270
  try:
231
271
 
232
272
  # Create and run the MCP server
233
- server = SunholoMCPServer()
273
+ server = SunholoMCPServer2()
234
274
 
235
- logger.info("Starting Sunholo MCP server...")
275
+ logger.info("Starting Sunholo MCP server3...")
276
+ console.print("Starting Sunholo MCP server3...")
236
277
  asyncio.run(server.run())
237
278
 
238
279
  except Exception as e:
@@ -241,9 +282,9 @@ def cli_mcp(args):
241
282
 
242
283
  def setup_mcp_subparser(subparsers):
243
284
  """
244
- Sets up an argparse subparser for the 'mcp' command.
285
+ Sets up an argparse subparser for the 'mcp' command 3.
245
286
 
246
- By default will use configurations within the folder specified by '_CONFIG_FOLDER'
287
+ By default will use configurations within the folder specified by 'VAC_CONFIG_FOLDER'
247
288
 
248
289
  Example command:
249
290
  ```bash
@@ -251,6 +292,6 @@ def setup_mcp_subparser(subparsers):
251
292
  ```
252
293
  """
253
294
  mcp_parser = subparsers.add_parser('mcp',
254
- help='Start an Anthropic MCP server that wraps `sunholo` functionality')
295
+ help='Start an Anthropic MCP server that wraps `sunholo` functionality3')
255
296
 
256
297
  mcp_parser.set_defaults(func=cli_mcp)
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sunholo
3
- Version: 0.116.0
3
+ Version: 0.116.1
4
4
  Summary: Large Language Model DevOps - a package to help deploy LLMs to the Cloud.
5
5
  Home-page: https://github.com/sunholo-data/sunholo-py
6
- Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.116.0.tar.gz
6
+ Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.116.1.tar.gz
7
7
  Author: Holosun ApS
8
8
  Author-email: multivac@sunholo.com
9
9
  License: Apache License, Version 2.0
@@ -62,6 +62,7 @@ Requires-Dist: langchain-anthropic==0.1.23; extra == "all"
62
62
  Requires-Dist: langchain-google-vertexai; extra == "all"
63
63
  Requires-Dist: langchain-unstructured; extra == "all"
64
64
  Requires-Dist: langfuse; extra == "all"
65
+ Requires-Dist: mcp; extra == "all"
65
66
  Requires-Dist: numpy; extra == "all"
66
67
  Requires-Dist: pg8000; extra == "all"
67
68
  Requires-Dist: pgvector; extra == "all"
@@ -43,6 +43,7 @@ langchain-anthropic==0.1.23
43
43
  langchain-google-vertexai
44
44
  langchain-unstructured
45
45
  langfuse
46
+ mcp
46
47
  numpy
47
48
  pg8000
48
49
  pgvector
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes