mindroot 9.11.0__py3-none-any.whl → 9.13.0__py3-none-any.whl

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.

Potentially problematic release.


This version of mindroot might be problematic. Click here for more details.

Files changed (417) hide show
  1. mindroot/coreplugins/admin/static/js/model-preferences-v2.js +1 -1
  2. mindroot/coreplugins/home/templates/home.jinja2 +1 -0
  3. mindroot/docs/Makefile +20 -0
  4. mindroot/docs/_build/doctrees/chat_with_assistant.doctree +0 -0
  5. mindroot/docs/_build/doctrees/developer_documentation.doctree +0 -0
  6. mindroot/docs/_build/doctrees/environment.pickle +0 -0
  7. mindroot/docs/_build/doctrees/getting_started.doctree +0 -0
  8. mindroot/docs/_build/doctrees/index.doctree +0 -0
  9. mindroot/docs/_build/doctrees/install_plugins_with_tools.doctree +0 -0
  10. mindroot/docs/_build/doctrees/installation.doctree +0 -0
  11. mindroot/docs/_build/doctrees/llm_api_key.doctree +0 -0
  12. mindroot/docs/_build/doctrees/llm_plugin_installation.doctree +0 -0
  13. mindroot/docs/_build/doctrees/programming_task.doctree +0 -0
  14. mindroot/docs/_build/doctrees/source/ahp.doctree +0 -0
  15. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.admin.doctree +0 -0
  16. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.api_keys.doctree +0 -0
  17. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat.doctree +0 -0
  18. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat_avatar.doctree +0 -0
  19. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.check_list.doctree +0 -0
  20. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.credits.doctree +0 -0
  21. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.doctree +0 -0
  22. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.email.doctree +0 -0
  23. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.env_manager.doctree +0 -0
  24. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.events.doctree +0 -0
  25. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.doctree +0 -0
  26. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.handlers.doctree +0 -0
  27. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.jwt_auth.doctree +0 -0
  28. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.l8n.doctree +0 -0
  29. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.mcp_.doctree +0 -0
  30. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.persona.doctree +0 -0
  31. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.startup.doctree +0 -0
  32. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.subscriptions.doctree +0 -0
  33. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.usage.doctree +0 -0
  34. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.user_service.doctree +0 -0
  35. mindroot/docs/_build/doctrees/source/mindroot.doctree +0 -0
  36. mindroot/docs/_build/doctrees/source/mindroot.lib.auth.doctree +0 -0
  37. mindroot/docs/_build/doctrees/source/mindroot.lib.doctree +0 -0
  38. mindroot/docs/_build/doctrees/source/mindroot.lib.json_str_block.doctree +0 -0
  39. mindroot/docs/_build/doctrees/source/mindroot.lib.plugins.doctree +0 -0
  40. mindroot/docs/_build/doctrees/source/mindroot.lib.providers.backup.doctree +0 -0
  41. mindroot/docs/_build/doctrees/source/mindroot.lib.providers.doctree +0 -0
  42. mindroot/docs/_build/doctrees/source/mindroot.registry.doctree +0 -0
  43. mindroot/docs/_build/doctrees/source/modules.doctree +0 -0
  44. mindroot/docs/_build/doctrees/source/mr_agent_expert_instr.doctree +0 -0
  45. mindroot/docs/_build/doctrees/starting_mindroot.doctree +0 -0
  46. mindroot/docs/_build/doctrees/user_documentation.doctree +0 -0
  47. mindroot/docs/_build/html/.buildinfo +4 -0
  48. mindroot/docs/_build/html/.buildinfo.bak +4 -0
  49. mindroot/docs/_build/html/_images/envvar.png +0 -0
  50. mindroot/docs/_build/html/_images/files.png +0 -0
  51. mindroot/docs/_build/html/_images/installopenrouter.png +0 -0
  52. mindroot/docs/_build/html/_images/mood.png +0 -0
  53. mindroot/docs/_build/html/_images/moon.png +0 -0
  54. mindroot/docs/_build/html/_images/openrouter.png +0 -0
  55. mindroot/docs/_build/html/_images/restart.png +0 -0
  56. mindroot/docs/_build/html/_modules/index.html +425 -0
  57. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_importer.html +292 -0
  58. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_router.html +620 -0
  59. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/asset_manager.html +289 -0
  60. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/command_router.html +518 -0
  61. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_catalog_routes.html +275 -0
  62. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_publish_routes.html +581 -0
  63. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_registry_routes.html +623 -0
  64. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_routes.html +347 -0
  65. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mod.html +163 -0
  66. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/oauth_callback_router.html +188 -0
  67. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_handler.html +195 -0
  68. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_router.html +428 -0
  69. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_manager.html +610 -0
  70. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_router.html +146 -0
  71. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_routes.html +230 -0
  72. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/registry_settings_routes.html +253 -0
  73. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/router.html +267 -0
  74. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/server_router.html +271 -0
  75. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/service_models.html +195 -0
  76. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/settings_router.html +403 -0
  77. mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/api_key_manager.html +215 -0
  78. mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/mod.html +127 -0
  79. mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/router.html +170 -0
  80. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/commands.html +565 -0
  81. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/mod.html +118 -0
  82. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/models.html +130 -0
  83. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/router.html +571 -0
  84. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/services.html +645 -0
  85. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_manager.html +258 -0
  86. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_routes.html +409 -0
  87. mindroot/docs/_build/html/_modules/mindroot/coreplugins/check_list/mod.html +460 -0
  88. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/conversion.html +232 -0
  89. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/ledger.html +283 -0
  90. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/mod.html +355 -0
  91. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/models.html +269 -0
  92. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/router.html +306 -0
  93. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/storage.html +257 -0
  94. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/email_provider.html +159 -0
  95. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/imap_handler.html +343 -0
  96. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/mod.html +210 -0
  97. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/services.html +172 -0
  98. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/smtp_handler.html +188 -0
  99. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/test_email_service.html +179 -0
  100. mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/mod.html +409 -0
  101. mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/router.html +147 -0
  102. mindroot/docs/_build/html/_modules/mindroot/coreplugins/events/router.html +201 -0
  103. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/agent_ops.html +195 -0
  104. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/index_ops.html +214 -0
  105. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/plugin_ops.html +263 -0
  106. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/publish.html +225 -0
  107. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/mod.html +120 -0
  108. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/models.html +148 -0
  109. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/router.html +184 -0
  110. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/utils.html +166 -0
  111. mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/middleware.html +400 -0
  112. mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/mod.html +153 -0
  113. mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/router.html +134 -0
  114. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/language_detection.html +296 -0
  115. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/middleware.html +258 -0
  116. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/mod.html +393 -0
  117. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_enhanced.html +408 -0
  118. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_l8n_standalone.html +379 -0
  119. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_middleware.html +394 -0
  120. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/utils.html +348 -0
  121. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_commands.html +456 -0
  122. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_manager.html +409 -0
  123. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/dynamic_commands.html +267 -0
  124. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mcp_manager.html +1186 -0
  125. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mod.html +510 -0
  126. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/oauth_storage.html +260 -0
  127. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/server_installer.html +195 -0
  128. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/testmcpclient.html +217 -0
  129. mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/init_persona.html +117 -0
  130. mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/mod.html +276 -0
  131. mindroot/docs/_build/html/_modules/mindroot/coreplugins/startup/mod.html +122 -0
  132. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/credit_integration.html +163 -0
  133. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/mod.html +1089 -0
  134. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/models.html +261 -0
  135. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/router.html +502 -0
  136. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/storage.html +413 -0
  137. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/stripe_integration.html +178 -0
  138. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/subscription_manager.html +289 -0
  139. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/webhook_handler.html +327 -0
  140. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/handlers.html +157 -0
  141. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/mod.html +253 -0
  142. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/models.html +141 -0
  143. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/reporting.html +226 -0
  144. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/router.html +228 -0
  145. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/storage.html +264 -0
  146. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/admin_init.html +234 -0
  147. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/email_service.html +204 -0
  148. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/mod.html +260 -0
  149. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/models.html +148 -0
  150. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/password_reset_service.html +336 -0
  151. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/role_service.html +183 -0
  152. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/router.html +202 -0
  153. mindroot/docs/_build/html/_modules/mindroot/lib/auth/api_key.html +129 -0
  154. mindroot/docs/_build/html/_modules/mindroot/lib/auth/auth.html +203 -0
  155. mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog.html +259 -0
  156. mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog2.html +500 -0
  157. mindroot/docs/_build/html/_modules/mindroot/lib/butemplates.html +415 -0
  158. mindroot/docs/_build/html/_modules/mindroot/lib/chatcontext.html +401 -0
  159. mindroot/docs/_build/html/_modules/mindroot/lib/chatlog.html +619 -0
  160. mindroot/docs/_build/html/_modules/mindroot/lib/chatlog_optimized.html +655 -0
  161. mindroot/docs/_build/html/_modules/mindroot/lib/json_escape.html +138 -0
  162. mindroot/docs/_build/html/_modules/mindroot/lib/json_str_block/json_str_block.html +213 -0
  163. mindroot/docs/_build/html/_modules/mindroot/lib/parent_templates.html +181 -0
  164. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/installation.html +481 -0
  165. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/l8n_static_handler.html +347 -0
  166. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader.html +403 -0
  167. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader_with_l8n.html +391 -0
  168. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/manifest.html +450 -0
  169. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/mapping.html +127 -0
  170. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/paths.html +215 -0
  171. mindroot/docs/_build/html/_modules/mindroot/lib/plugins_install.html +171 -0
  172. mindroot/docs/_build/html/_modules/mindroot/lib/providers/commands.html +125 -0
  173. mindroot/docs/_build/html/_modules/mindroot/lib/providers/hooks.html +117 -0
  174. mindroot/docs/_build/html/_modules/mindroot/lib/providers/missing.html +169 -0
  175. mindroot/docs/_build/html/_modules/mindroot/lib/providers/model_preferences_v2.html +291 -0
  176. mindroot/docs/_build/html/_modules/mindroot/lib/providers/services.html +122 -0
  177. mindroot/docs/_build/html/_modules/mindroot/lib/providers.html +465 -0
  178. mindroot/docs/_build/html/_modules/mindroot/lib/route_decorators.html +175 -0
  179. mindroot/docs/_build/html/_modules/mindroot/lib/session_files.html +142 -0
  180. mindroot/docs/_build/html/_modules/mindroot/lib/streamcmd.html +246 -0
  181. mindroot/docs/_build/html/_modules/mindroot/lib/templates.html +677 -0
  182. mindroot/docs/_build/html/_modules/mindroot/lib/token_counter.html +326 -0
  183. mindroot/docs/_build/html/_modules/mindroot/migrate.html +153 -0
  184. mindroot/docs/_build/html/_modules/mindroot/registry/component_manager.html +140 -0
  185. mindroot/docs/_build/html/_modules/mindroot/registry/data_access.html +302 -0
  186. mindroot/docs/_build/html/_modules/mindroot/server.html +317 -0
  187. mindroot/docs/_build/html/_modules/mindroot/server_missing_normal_args.html +322 -0
  188. mindroot/docs/_build/html/_modules/mindroot/server_prev.html +298 -0
  189. mindroot/docs/_build/html/_sources/chat_with_assistant.rst.txt +14 -0
  190. mindroot/docs/_build/html/_sources/developer_documentation.rst.txt +26 -0
  191. mindroot/docs/_build/html/_sources/getting_started.rst.txt +139 -0
  192. mindroot/docs/_build/html/_sources/index.rst.txt +38 -0
  193. mindroot/docs/_build/html/_sources/install_plugins_with_tools.rst.txt +25 -0
  194. mindroot/docs/_build/html/_sources/installation.rst.txt +21 -0
  195. mindroot/docs/_build/html/_sources/llm_api_key.rst.txt +22 -0
  196. mindroot/docs/_build/html/_sources/llm_plugin_installation.rst.txt +27 -0
  197. mindroot/docs/_build/html/_sources/programming_task.rst.txt +10 -0
  198. mindroot/docs/_build/html/_sources/source/ahp.rst.txt +7 -0
  199. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.admin.rst.txt +189 -0
  200. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.api_keys.rst.txt +45 -0
  201. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat.rst.txt +93 -0
  202. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat_avatar.rst.txt +10 -0
  203. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.check_list.rst.txt +21 -0
  204. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.credits.rst.txt +61 -0
  205. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.email.rst.txt +77 -0
  206. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.env_manager.rst.txt +29 -0
  207. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.events.rst.txt +29 -0
  208. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.handlers.rst.txt +45 -0
  209. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.rst.txt +53 -0
  210. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.jwt_auth.rst.txt +45 -0
  211. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.l8n.rst.txt +109 -0
  212. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.mcp_.rst.txt +93 -0
  213. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.persona.rst.txt +29 -0
  214. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.rst.txt +35 -0
  215. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.startup.rst.txt +21 -0
  216. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.subscriptions.rst.txt +85 -0
  217. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.usage.rst.txt +61 -0
  218. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.user_service.rst.txt +69 -0
  219. mindroot/docs/_build/html/_sources/source/mindroot.lib.auth.rst.txt +29 -0
  220. mindroot/docs/_build/html/_sources/source/mindroot.lib.json_str_block.rst.txt +21 -0
  221. mindroot/docs/_build/html/_sources/source/mindroot.lib.plugins.rst.txt +69 -0
  222. mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.backup.rst.txt +10 -0
  223. mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.rst.txt +61 -0
  224. mindroot/docs/_build/html/_sources/source/mindroot.lib.rst.txt +152 -0
  225. mindroot/docs/_build/html/_sources/source/mindroot.registry.rst.txt +29 -0
  226. mindroot/docs/_build/html/_sources/source/mindroot.rst.txt +54 -0
  227. mindroot/docs/_build/html/_sources/source/modules.rst.txt +7 -0
  228. mindroot/docs/_build/html/_sources/source/mr_agent_expert_instr.rst.txt +7 -0
  229. mindroot/docs/_build/html/_sources/starting_mindroot.rst.txt +12 -0
  230. mindroot/docs/_build/html/_sources/user_documentation.rst.txt +16 -0
  231. mindroot/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js +123 -0
  232. mindroot/docs/_build/html/_static/basic.css +906 -0
  233. mindroot/docs/_build/html/_static/css/badge_only.css +1 -0
  234. mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  235. mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  236. mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  237. mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  238. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  239. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +2671 -0
  240. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  241. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  242. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  243. mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  244. mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  245. mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff +0 -0
  246. mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  247. mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  248. mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  249. mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff +0 -0
  250. mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  251. mindroot/docs/_build/html/_static/css/theme.css +4 -0
  252. mindroot/docs/_build/html/_static/custom.css +19 -0
  253. mindroot/docs/_build/html/_static/debug.css +69 -0
  254. mindroot/docs/_build/html/_static/doctools.js +149 -0
  255. mindroot/docs/_build/html/_static/documentation_options.js +13 -0
  256. mindroot/docs/_build/html/_static/file.png +0 -0
  257. mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.eot +0 -0
  258. mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  259. mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff +0 -0
  260. mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  261. mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  262. mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  263. mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  264. mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  265. mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.eot +0 -0
  266. mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  267. mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff +0 -0
  268. mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  269. mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.eot +0 -0
  270. mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  271. mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff +0 -0
  272. mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  273. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  274. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  275. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  276. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  277. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  278. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  279. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  280. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  281. mindroot/docs/_build/html/_static/jquery.js +2 -0
  282. mindroot/docs/_build/html/_static/js/badge_only.js +1 -0
  283. mindroot/docs/_build/html/_static/js/theme.js +1 -0
  284. mindroot/docs/_build/html/_static/js/versions.js +228 -0
  285. mindroot/docs/_build/html/_static/language_data.js +192 -0
  286. mindroot/docs/_build/html/_static/minus.png +0 -0
  287. mindroot/docs/_build/html/_static/plus.png +0 -0
  288. mindroot/docs/_build/html/_static/pygments.css +232 -0
  289. mindroot/docs/_build/html/_static/scripts/furo-extensions.js +0 -0
  290. mindroot/docs/_build/html/_static/scripts/furo.js +3 -0
  291. mindroot/docs/_build/html/_static/scripts/furo.js.LICENSE.txt +7 -0
  292. mindroot/docs/_build/html/_static/scripts/furo.js.map +1 -0
  293. mindroot/docs/_build/html/_static/searchtools.js +635 -0
  294. mindroot/docs/_build/html/_static/skeleton.css +296 -0
  295. mindroot/docs/_build/html/_static/sphinx_highlight.js +154 -0
  296. mindroot/docs/_build/html/_static/styles/furo-extensions.css +2 -0
  297. mindroot/docs/_build/html/_static/styles/furo-extensions.css.map +1 -0
  298. mindroot/docs/_build/html/_static/styles/furo.css +2 -0
  299. mindroot/docs/_build/html/_static/styles/furo.css.map +1 -0
  300. mindroot/docs/_build/html/chat_with_assistant.html +329 -0
  301. mindroot/docs/_build/html/developer_documentation.html +338 -0
  302. mindroot/docs/_build/html/genindex.html +4690 -0
  303. mindroot/docs/_build/html/getting_started.html +423 -0
  304. mindroot/docs/_build/html/index.html +357 -0
  305. mindroot/docs/_build/html/install_plugins_with_tools.html +336 -0
  306. mindroot/docs/_build/html/installation.html +330 -0
  307. mindroot/docs/_build/html/llm_api_key.html +337 -0
  308. mindroot/docs/_build/html/llm_plugin_installation.html +338 -0
  309. mindroot/docs/_build/html/objects.inv +0 -0
  310. mindroot/docs/_build/html/programming_task.html +326 -0
  311. mindroot/docs/_build/html/py-modindex.html +1307 -0
  312. mindroot/docs/_build/html/search.html +307 -0
  313. mindroot/docs/_build/html/searchindex.js +1 -0
  314. mindroot/docs/_build/html/source/ahp.html +302 -0
  315. mindroot/docs/_build/html/source/mindroot.coreplugins.admin.html +2212 -0
  316. mindroot/docs/_build/html/source/mindroot.coreplugins.api_keys.html +532 -0
  317. mindroot/docs/_build/html/source/mindroot.coreplugins.chat.html +1185 -0
  318. mindroot/docs/_build/html/source/mindroot.coreplugins.chat_avatar.html +311 -0
  319. mindroot/docs/_build/html/source/mindroot.coreplugins.check_list.html +441 -0
  320. mindroot/docs/_build/html/source/mindroot.coreplugins.credits.html +879 -0
  321. mindroot/docs/_build/html/source/mindroot.coreplugins.email.html +554 -0
  322. mindroot/docs/_build/html/source/mindroot.coreplugins.env_manager.html +447 -0
  323. mindroot/docs/_build/html/source/mindroot.coreplugins.events.html +338 -0
  324. mindroot/docs/_build/html/source/mindroot.coreplugins.html +1785 -0
  325. mindroot/docs/_build/html/source/mindroot.coreplugins.index.handlers.html +481 -0
  326. mindroot/docs/_build/html/source/mindroot.coreplugins.index.html +696 -0
  327. mindroot/docs/_build/html/source/mindroot.coreplugins.jwt_auth.html +432 -0
  328. mindroot/docs/_build/html/source/mindroot.coreplugins.l8n.html +933 -0
  329. mindroot/docs/_build/html/source/mindroot.coreplugins.mcp_.html +1271 -0
  330. mindroot/docs/_build/html/source/mindroot.coreplugins.persona.html +386 -0
  331. mindroot/docs/_build/html/source/mindroot.coreplugins.startup.html +327 -0
  332. mindroot/docs/_build/html/source/mindroot.coreplugins.subscriptions.html +1631 -0
  333. mindroot/docs/_build/html/source/mindroot.coreplugins.usage.html +677 -0
  334. mindroot/docs/_build/html/source/mindroot.coreplugins.user_service.html +681 -0
  335. mindroot/docs/_build/html/source/mindroot.html +811 -0
  336. mindroot/docs/_build/html/source/mindroot.lib.auth.html +407 -0
  337. mindroot/docs/_build/html/source/mindroot.lib.html +2027 -0
  338. mindroot/docs/_build/html/source/mindroot.lib.json_str_block.html +344 -0
  339. mindroot/docs/_build/html/source/mindroot.lib.plugins.html +1050 -0
  340. mindroot/docs/_build/html/source/mindroot.lib.providers.backup.html +324 -0
  341. mindroot/docs/_build/html/source/mindroot.lib.providers.html +572 -0
  342. mindroot/docs/_build/html/source/mindroot.registry.html +501 -0
  343. mindroot/docs/_build/html/source/modules.html +377 -0
  344. mindroot/docs/_build/html/source/mr_agent_expert_instr.html +302 -0
  345. mindroot/docs/_build/html/starting_mindroot.html +325 -0
  346. mindroot/docs/_build/html/user_documentation.html +333 -0
  347. mindroot/docs/_static/custom.css +19 -0
  348. mindroot/docs/chat_with_assistant.rst +14 -0
  349. mindroot/docs/conf.py +54 -0
  350. mindroot/docs/data/agents/local/Assistant/agent.json +27 -0
  351. mindroot/docs/data/agents/local/SysAdmin/agent.json +33 -0
  352. mindroot/docs/data/equivalent_flags.json +1 -0
  353. mindroot/docs/data/mcp/servers.json +9 -0
  354. mindroot/docs/data/models.json +57 -0
  355. mindroot/docs/data/plugin_manifest.json +95 -0
  356. mindroot/docs/data/preferred_models.json +12 -0
  357. mindroot/docs/data/providers.json +62 -0
  358. mindroot/docs/developer_documentation.rst +26 -0
  359. mindroot/docs/envvar.png +0 -0
  360. mindroot/docs/files.png +0 -0
  361. mindroot/docs/getting_started.rst +139 -0
  362. mindroot/docs/index.rst +38 -0
  363. mindroot/docs/install_plugins_with_tools.rst +25 -0
  364. mindroot/docs/installation.rst +21 -0
  365. mindroot/docs/installopenrouter.png +0 -0
  366. mindroot/docs/llm_api_key.rst +22 -0
  367. mindroot/docs/llm_plugin_installation.rst +27 -0
  368. mindroot/docs/make.bat +35 -0
  369. mindroot/docs/mood.png +0 -0
  370. mindroot/docs/moon.png +0 -0
  371. mindroot/docs/openrouter.png +0 -0
  372. mindroot/docs/personas/local/Assistant/avatar.png +0 -0
  373. mindroot/docs/personas/local/Assistant/faceref.png +0 -0
  374. mindroot/docs/personas/local/Assistant/persona.json +7 -0
  375. mindroot/docs/programming_task.rst +10 -0
  376. mindroot/docs/restart.png +0 -0
  377. mindroot/docs/source/ahp.rst +7 -0
  378. mindroot/docs/source/mindroot.coreplugins.admin.rst +189 -0
  379. mindroot/docs/source/mindroot.coreplugins.api_keys.rst +45 -0
  380. mindroot/docs/source/mindroot.coreplugins.chat.rst +93 -0
  381. mindroot/docs/source/mindroot.coreplugins.chat_avatar.rst +10 -0
  382. mindroot/docs/source/mindroot.coreplugins.check_list.rst +21 -0
  383. mindroot/docs/source/mindroot.coreplugins.credits.rst +61 -0
  384. mindroot/docs/source/mindroot.coreplugins.email.rst +77 -0
  385. mindroot/docs/source/mindroot.coreplugins.env_manager.rst +29 -0
  386. mindroot/docs/source/mindroot.coreplugins.events.rst +29 -0
  387. mindroot/docs/source/mindroot.coreplugins.index.handlers.rst +45 -0
  388. mindroot/docs/source/mindroot.coreplugins.index.rst +53 -0
  389. mindroot/docs/source/mindroot.coreplugins.jwt_auth.rst +45 -0
  390. mindroot/docs/source/mindroot.coreplugins.l8n.rst +109 -0
  391. mindroot/docs/source/mindroot.coreplugins.mcp_.rst +93 -0
  392. mindroot/docs/source/mindroot.coreplugins.persona.rst +29 -0
  393. mindroot/docs/source/mindroot.coreplugins.rst +35 -0
  394. mindroot/docs/source/mindroot.coreplugins.startup.rst +21 -0
  395. mindroot/docs/source/mindroot.coreplugins.subscriptions.rst +85 -0
  396. mindroot/docs/source/mindroot.coreplugins.usage.rst +61 -0
  397. mindroot/docs/source/mindroot.coreplugins.user_service.rst +69 -0
  398. mindroot/docs/source/mindroot.lib.auth.rst +29 -0
  399. mindroot/docs/source/mindroot.lib.json_str_block.rst +21 -0
  400. mindroot/docs/source/mindroot.lib.plugins.rst +69 -0
  401. mindroot/docs/source/mindroot.lib.providers.backup.rst +10 -0
  402. mindroot/docs/source/mindroot.lib.providers.rst +61 -0
  403. mindroot/docs/source/mindroot.lib.rst +152 -0
  404. mindroot/docs/source/mindroot.registry.rst +29 -0
  405. mindroot/docs/source/mindroot.rst +54 -0
  406. mindroot/docs/source/modules.rst +7 -0
  407. mindroot/docs/source/mr_agent_expert_instr.rst +7 -0
  408. mindroot/docs/starting_mindroot.rst +12 -0
  409. mindroot/docs/user_documentation.rst +16 -0
  410. mindroot/lib/providers/model_preferences_v2.py +5 -3
  411. mindroot/server.py +10 -1
  412. {mindroot-9.11.0.dist-info → mindroot-9.13.0.dist-info}/METADATA +1 -1
  413. {mindroot-9.11.0.dist-info → mindroot-9.13.0.dist-info}/RECORD +417 -10
  414. {mindroot-9.11.0.dist-info → mindroot-9.13.0.dist-info}/WHEEL +0 -0
  415. {mindroot-9.11.0.dist-info → mindroot-9.13.0.dist-info}/entry_points.txt +0 -0
  416. {mindroot-9.11.0.dist-info → mindroot-9.13.0.dist-info}/licenses/LICENSE +0 -0
  417. {mindroot-9.11.0.dist-info → mindroot-9.13.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,409 @@
1
+
2
+
3
+ <!DOCTYPE html>
4
+ <html class="writer-html5" lang="en" data-content_root="../../../../">
5
+ <head>
6
+ <meta charset="utf-8" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
+ <title>mindroot.coreplugins.mcp_.catalog_manager &mdash; MindRoot 9.10.0 documentation</title>
9
+ <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=b86133f3" />
10
+ <link rel="stylesheet" type="text/css" href="../../../../_static/css/theme.css?v=e59714d7" />
11
+
12
+
13
+ <script src="../../../../_static/jquery.js?v=5d32c60e"></script>
14
+ <script src="../../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
15
+ <script src="../../../../_static/documentation_options.js?v=3c16008f"></script>
16
+ <script src="../../../../_static/doctools.js?v=9bcbadda"></script>
17
+ <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script>
18
+ <script src="../../../../_static/js/theme.js"></script>
19
+ <link rel="index" title="Index" href="../../../../genindex.html" />
20
+ <link rel="search" title="Search" href="../../../../search.html" />
21
+ </head>
22
+
23
+ <body class="wy-body-for-nav">
24
+ <div class="wy-grid-for-nav">
25
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
26
+ <div class="wy-side-scroll">
27
+ <div class="wy-side-nav-search" style="background: #343131" >
28
+
29
+
30
+
31
+ <a href="../../../../index.html" class="icon icon-home">
32
+ MindRoot
33
+ </a>
34
+ <div role="search">
35
+ <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
36
+ <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
37
+ <input type="hidden" name="check_keywords" value="yes" />
38
+ <input type="hidden" name="area" value="default" />
39
+ </form>
40
+ </div>
41
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
42
+ <!-- Local TOC -->
43
+ <div class="local-toc"></div>
44
+ </div>
45
+ </div>
46
+ </nav>
47
+
48
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #343131" >
49
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
50
+ <a href="../../../../index.html">MindRoot</a>
51
+ </nav>
52
+
53
+ <div class="wy-nav-content">
54
+ <div class="rst-content">
55
+ <div role="navigation" aria-label="Page navigation">
56
+ <ul class="wy-breadcrumbs">
57
+ <li><a href="../../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
58
+ <li class="breadcrumb-item"><a href="../../../index.html">Module code</a></li>
59
+ <li class="breadcrumb-item active">mindroot.coreplugins.mcp_.catalog_manager</li>
60
+ <li class="wy-breadcrumbs-aside">
61
+ </li>
62
+ </ul>
63
+ <hr/>
64
+ </div>
65
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
66
+ <div itemprop="articleBody">
67
+
68
+ <h1>Source code for mindroot.coreplugins.mcp_.catalog_manager</h1><div class="highlight"><pre>
69
+ <span></span><span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
70
+ <span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
71
+ <span class="kn">import</span><span class="w"> </span><span class="nn">psutil</span>
72
+ <span class="kn">import</span><span class="w"> </span><span class="nn">subprocess</span>
73
+ <span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
74
+ <span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Any</span>
75
+
76
+ <div class="viewcode-block" id="MCPCatalogManager">
77
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager">[docs]</a>
78
+ <span class="k">class</span><span class="w"> </span><span class="nc">MCPCatalogManager</span><span class="p">:</span>
79
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Manages MCP server catalog and process detection&quot;&quot;&quot;</span>
80
+
81
+ <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin_dir</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">working_dir</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
82
+ <span class="c1"># Default plugin_dir to the directory containing this module</span>
83
+ <span class="k">if</span> <span class="n">plugin_dir</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
84
+ <span class="n">plugin_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">parent</span>
85
+ <span class="bp">self</span><span class="o">.</span><span class="n">plugin_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">)</span>
86
+
87
+ <span class="c1"># Use process working directory for data files</span>
88
+ <span class="k">if</span> <span class="n">working_dir</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
89
+ <span class="n">working_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">()</span>
90
+ <span class="bp">self</span><span class="o">.</span><span class="n">working_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">working_dir</span><span class="p">)</span>
91
+
92
+ <span class="bp">self</span><span class="o">.</span><span class="n">catalog_file</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">working_dir</span> <span class="o">/</span> <span class="s2">&quot;data&quot;</span> <span class="o">/</span> <span class="s2">&quot;mcp&quot;</span> <span class="o">/</span> <span class="s2">&quot;servers.json&quot;</span>
93
+ <span class="bp">self</span><span class="o">.</span><span class="n">default_file</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)</span><span class="o">.</span><span class="n">parent</span> <span class="o">/</span> <span class="s2">&quot;data&quot;</span> <span class="o">/</span> <span class="s2">&quot;default_mcp_servers.json&quot;</span>
94
+ <span class="bp">self</span><span class="o">.</span><span class="n">ensure_catalog_exists</span><span class="p">()</span>
95
+
96
+
97
+ <div class="viewcode-block" id="MCPCatalogManager.ensure_catalog_exists">
98
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.ensure_catalog_exists">[docs]</a>
99
+ <span class="k">def</span><span class="w"> </span><span class="nf">ensure_catalog_exists</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
100
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Ensure catalog file exists, create from default if needed&quot;&quot;&quot;</span>
101
+ <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">catalog_file</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
102
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_file</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
103
+ <span class="bp">self</span><span class="o">.</span><span class="n">init_catalog_from_default</span><span class="p">()</span>
104
+ <span class="k">else</span><span class="p">:</span>
105
+ <span class="bp">self</span><span class="o">.</span><span class="n">create_empty_catalog</span><span class="p">()</span></div>
106
+
107
+
108
+ <div class="viewcode-block" id="MCPCatalogManager.init_catalog_from_default">
109
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.init_catalog_from_default">[docs]</a>
110
+ <span class="k">def</span><span class="w"> </span><span class="nf">init_catalog_from_default</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
111
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Initialize catalog from default servers&quot;&quot;&quot;</span>
112
+ <span class="c1"># Ensure the target directory exists</span>
113
+ <span class="bp">self</span><span class="o">.</span><span class="n">catalog_file</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
114
+
115
+ <span class="k">try</span><span class="p">:</span>
116
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">default_file</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
117
+ <span class="n">default_servers</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
118
+
119
+ <span class="n">catalog</span> <span class="o">=</span> <span class="p">{</span>
120
+ <span class="s2">&quot;_metadata&quot;</span><span class="p">:</span> <span class="p">{</span>
121
+ <span class="s2">&quot;version&quot;</span><span class="p">:</span> <span class="s2">&quot;1.0.0&quot;</span><span class="p">,</span>
122
+ <span class="s2">&quot;last_updated&quot;</span><span class="p">:</span> <span class="s2">&quot;2025-06-02&quot;</span><span class="p">,</span>
123
+ <span class="s2">&quot;description&quot;</span><span class="p">:</span> <span class="s2">&quot;MCP Server Catalog for MindRoot&quot;</span><span class="p">,</span>
124
+ <span class="s2">&quot;categories&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;utilities&quot;</span><span class="p">,</span> <span class="s2">&quot;system&quot;</span><span class="p">,</span> <span class="s2">&quot;development&quot;</span><span class="p">,</span> <span class="s2">&quot;search&quot;</span><span class="p">,</span> <span class="s2">&quot;database&quot;</span><span class="p">,</span> <span class="s2">&quot;communication&quot;</span><span class="p">,</span> <span class="s2">&quot;cloud&quot;</span><span class="p">,</span> <span class="s2">&quot;automation&quot;</span><span class="p">,</span> <span class="s2">&quot;ai&quot;</span><span class="p">]</span>
125
+ <span class="p">},</span>
126
+ <span class="s2">&quot;servers&quot;</span><span class="p">:</span> <span class="p">{}</span>
127
+ <span class="p">}</span>
128
+
129
+ <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">server</span> <span class="ow">in</span> <span class="n">default_servers</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
130
+ <span class="n">server</span><span class="p">[</span><span class="s2">&quot;status&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;available&quot;</span>
131
+ <span class="n">server</span><span class="p">[</span><span class="s2">&quot;installed&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span>
132
+ <span class="n">server</span><span class="p">[</span><span class="s2">&quot;running&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span>
133
+ <span class="n">catalog</span><span class="p">[</span><span class="s2">&quot;servers&quot;</span><span class="p">][</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">server</span>
134
+
135
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">catalog_file</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
136
+ <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
137
+
138
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
139
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error initializing catalog: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
140
+ <span class="bp">self</span><span class="o">.</span><span class="n">create_empty_catalog</span><span class="p">()</span></div>
141
+
142
+
143
+ <div class="viewcode-block" id="MCPCatalogManager.create_empty_catalog">
144
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.create_empty_catalog">[docs]</a>
145
+ <span class="k">def</span><span class="w"> </span><span class="nf">create_empty_catalog</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
146
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Create empty catalog structure&quot;&quot;&quot;</span>
147
+ <span class="n">catalog</span> <span class="o">=</span> <span class="p">{</span>
148
+ <span class="s2">&quot;_metadata&quot;</span><span class="p">:</span> <span class="p">{</span>
149
+ <span class="s2">&quot;version&quot;</span><span class="p">:</span> <span class="s2">&quot;1.0.0&quot;</span><span class="p">,</span>
150
+ <span class="s2">&quot;last_updated&quot;</span><span class="p">:</span> <span class="s2">&quot;2025-06-02&quot;</span><span class="p">,</span>
151
+ <span class="s2">&quot;description&quot;</span><span class="p">:</span> <span class="s2">&quot;MCP Server Catalog for MindRoot&quot;</span><span class="p">,</span>
152
+ <span class="s2">&quot;categories&quot;</span><span class="p">:</span> <span class="p">[]</span>
153
+ <span class="p">},</span>
154
+ <span class="s2">&quot;servers&quot;</span><span class="p">:</span> <span class="p">{}</span>
155
+ <span class="p">}</span>
156
+
157
+ <span class="bp">self</span><span class="o">.</span><span class="n">catalog_file</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">parents</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
158
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">catalog_file</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
159
+ <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span></div>
160
+
161
+
162
+ <div class="viewcode-block" id="MCPCatalogManager.load_catalog">
163
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.load_catalog">[docs]</a>
164
+ <span class="k">def</span><span class="w"> </span><span class="nf">load_catalog</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
165
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Load the server catalog&quot;&quot;&quot;</span>
166
+ <span class="k">try</span><span class="p">:</span>
167
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">catalog_file</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
168
+ <span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
169
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
170
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error loading catalog: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
171
+ <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;_metadata&quot;</span><span class="p">:</span> <span class="p">{},</span> <span class="s2">&quot;servers&quot;</span><span class="p">:</span> <span class="p">{}}</span></div>
172
+
173
+
174
+ <div class="viewcode-block" id="MCPCatalogManager.save_catalog">
175
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.save_catalog">[docs]</a>
176
+ <span class="k">def</span><span class="w"> </span><span class="nf">save_catalog</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">catalog</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]):</span>
177
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Save the server catalog&quot;&quot;&quot;</span>
178
+ <span class="k">try</span><span class="p">:</span>
179
+ <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">catalog_file</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
180
+ <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
181
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
182
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error saving catalog: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span></div>
183
+
184
+
185
+ <div class="viewcode-block" id="MCPCatalogManager.get_running_processes">
186
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.get_running_processes">[docs]</a>
187
+ <span class="k">def</span><span class="w"> </span><span class="nf">get_running_processes</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span>
188
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Get list of running processes with details&quot;&quot;&quot;</span>
189
+ <span class="n">processes</span> <span class="o">=</span> <span class="p">[]</span>
190
+ <span class="k">try</span><span class="p">:</span>
191
+ <span class="k">for</span> <span class="n">proc</span> <span class="ow">in</span> <span class="n">psutil</span><span class="o">.</span><span class="n">process_iter</span><span class="p">([</span><span class="s1">&#39;pid&#39;</span><span class="p">,</span> <span class="s1">&#39;name&#39;</span><span class="p">,</span> <span class="s1">&#39;cmdline&#39;</span><span class="p">]):</span>
192
+ <span class="k">try</span><span class="p">:</span>
193
+ <span class="n">processes</span><span class="o">.</span><span class="n">append</span><span class="p">({</span>
194
+ <span class="s1">&#39;pid&#39;</span><span class="p">:</span> <span class="n">proc</span><span class="o">.</span><span class="n">info</span><span class="p">[</span><span class="s1">&#39;pid&#39;</span><span class="p">],</span>
195
+ <span class="s1">&#39;name&#39;</span><span class="p">:</span> <span class="n">proc</span><span class="o">.</span><span class="n">info</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">],</span>
196
+ <span class="s1">&#39;cmdline&#39;</span><span class="p">:</span> <span class="n">proc</span><span class="o">.</span><span class="n">info</span><span class="p">[</span><span class="s1">&#39;cmdline&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="p">[]</span>
197
+ <span class="p">})</span>
198
+ <span class="k">except</span> <span class="p">(</span><span class="n">psutil</span><span class="o">.</span><span class="n">NoSuchProcess</span><span class="p">,</span> <span class="n">psutil</span><span class="o">.</span><span class="n">AccessDenied</span><span class="p">):</span>
199
+ <span class="k">continue</span>
200
+ <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
201
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Error getting processes: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
202
+
203
+ <span class="k">return</span> <span class="n">processes</span></div>
204
+
205
+
206
+ <div class="viewcode-block" id="MCPCatalogManager.detect_running_servers">
207
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.detect_running_servers">[docs]</a>
208
+ <span class="k">def</span><span class="w"> </span><span class="nf">detect_running_servers</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]:</span>
209
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Detect which MCP servers are currently running&quot;&quot;&quot;</span>
210
+ <span class="n">catalog</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_catalog</span><span class="p">()</span>
211
+ <span class="n">running_status</span> <span class="o">=</span> <span class="p">{}</span>
212
+ <span class="n">processes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_running_processes</span><span class="p">()</span>
213
+
214
+ <span class="k">for</span> <span class="n">server_name</span><span class="p">,</span> <span class="n">server_info</span> <span class="ow">in</span> <span class="n">catalog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;servers&quot;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
215
+ <span class="n">is_running</span> <span class="o">=</span> <span class="kc">False</span>
216
+ <span class="n">process_names</span> <span class="o">=</span> <span class="n">server_info</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;process_names&quot;</span><span class="p">,</span> <span class="p">[])</span>
217
+
218
+ <span class="k">for</span> <span class="n">proc</span> <span class="ow">in</span> <span class="n">processes</span><span class="p">:</span>
219
+ <span class="c1"># Check process name</span>
220
+ <span class="k">if</span> <span class="n">proc</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="n">process_names</span><span class="p">:</span>
221
+ <span class="n">is_running</span> <span class="o">=</span> <span class="kc">True</span>
222
+ <span class="k">break</span>
223
+
224
+ <span class="c1"># Check command line for MCP server patterns</span>
225
+ <span class="n">cmdline_str</span> <span class="o">=</span> <span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">proc</span><span class="p">[</span><span class="s1">&#39;cmdline&#39;</span><span class="p">])</span>
226
+ <span class="k">for</span> <span class="n">process_name</span> <span class="ow">in</span> <span class="n">process_names</span><span class="p">:</span>
227
+ <span class="k">if</span> <span class="n">process_name</span> <span class="ow">in</span> <span class="n">cmdline_str</span><span class="p">:</span>
228
+ <span class="n">is_running</span> <span class="o">=</span> <span class="kc">True</span>
229
+ <span class="k">break</span>
230
+
231
+ <span class="c1"># Check for specific patterns</span>
232
+ <span class="k">if</span> <span class="n">server_name</span> <span class="ow">in</span> <span class="n">cmdline_str</span> <span class="ow">or</span> <span class="n">server_info</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;install_package&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="ow">in</span> <span class="n">cmdline_str</span><span class="p">:</span>
233
+ <span class="n">is_running</span> <span class="o">=</span> <span class="kc">True</span>
234
+ <span class="k">break</span>
235
+
236
+ <span class="k">if</span> <span class="n">is_running</span><span class="p">:</span>
237
+ <span class="k">break</span>
238
+
239
+ <span class="n">running_status</span><span class="p">[</span><span class="n">server_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_running</span>
240
+
241
+ <span class="k">return</span> <span class="n">running_status</span></div>
242
+
243
+
244
+ <div class="viewcode-block" id="MCPCatalogManager.update_server_status">
245
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.update_server_status">[docs]</a>
246
+ <span class="k">def</span><span class="w"> </span><span class="nf">update_server_status</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
247
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Update running status for all servers in catalog&quot;&quot;&quot;</span>
248
+ <span class="n">catalog</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_catalog</span><span class="p">()</span>
249
+ <span class="n">running_status</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">detect_running_servers</span><span class="p">()</span>
250
+
251
+ <span class="k">for</span> <span class="n">server_name</span><span class="p">,</span> <span class="n">is_running</span> <span class="ow">in</span> <span class="n">running_status</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
252
+ <span class="k">if</span> <span class="n">server_name</span> <span class="ow">in</span> <span class="n">catalog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;servers&quot;</span><span class="p">,</span> <span class="p">{}):</span>
253
+ <span class="n">catalog</span><span class="p">[</span><span class="s2">&quot;servers&quot;</span><span class="p">][</span><span class="n">server_name</span><span class="p">][</span><span class="s2">&quot;running&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_running</span>
254
+
255
+ <span class="bp">self</span><span class="o">.</span><span class="n">save_catalog</span><span class="p">(</span><span class="n">catalog</span><span class="p">)</span>
256
+ <span class="k">return</span> <span class="n">catalog</span></div>
257
+
258
+
259
+ <div class="viewcode-block" id="MCPCatalogManager.get_servers_by_category">
260
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.get_servers_by_category">[docs]</a>
261
+ <span class="k">def</span><span class="w"> </span><span class="nf">get_servers_by_category</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">category</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
262
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Get servers filtered by category&quot;&quot;&quot;</span>
263
+ <span class="n">catalog</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_catalog</span><span class="p">()</span>
264
+ <span class="n">servers</span> <span class="o">=</span> <span class="n">catalog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;servers&quot;</span><span class="p">,</span> <span class="p">{})</span>
265
+
266
+ <span class="k">if</span> <span class="n">category</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
267
+ <span class="k">return</span> <span class="n">servers</span>
268
+
269
+ <span class="n">filtered</span> <span class="o">=</span> <span class="p">{}</span>
270
+ <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">server</span> <span class="ow">in</span> <span class="n">servers</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
271
+ <span class="k">if</span> <span class="n">server</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;category&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="n">category</span><span class="p">:</span>
272
+ <span class="n">filtered</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">server</span>
273
+
274
+ <span class="k">return</span> <span class="n">filtered</span></div>
275
+
276
+
277
+ <div class="viewcode-block" id="MCPCatalogManager.get_server_info">
278
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.get_server_info">[docs]</a>
279
+ <span class="k">def</span><span class="w"> </span><span class="nf">get_server_info</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]:</span>
280
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Get detailed info for a specific server&quot;&quot;&quot;</span>
281
+ <span class="n">catalog</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_catalog</span><span class="p">()</span>
282
+ <span class="k">return</span> <span class="n">catalog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;servers&quot;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">server_name</span><span class="p">)</span></div>
283
+
284
+
285
+ <div class="viewcode-block" id="MCPCatalogManager.mark_server_installed">
286
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.mark_server_installed">[docs]</a>
287
+ <span class="k">def</span><span class="w"> </span><span class="nf">mark_server_installed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">installed</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">):</span>
288
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Mark a server as installed or not&quot;&quot;&quot;</span>
289
+ <span class="n">catalog</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_catalog</span><span class="p">()</span>
290
+ <span class="k">if</span> <span class="n">server_name</span> <span class="ow">in</span> <span class="n">catalog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;servers&quot;</span><span class="p">,</span> <span class="p">{}):</span>
291
+ <span class="n">catalog</span><span class="p">[</span><span class="s2">&quot;servers&quot;</span><span class="p">][</span><span class="n">server_name</span><span class="p">][</span><span class="s2">&quot;installed&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">installed</span>
292
+ <span class="bp">self</span><span class="o">.</span><span class="n">save_catalog</span><span class="p">(</span><span class="n">catalog</span><span class="p">)</span></div>
293
+
294
+
295
+ <div class="viewcode-block" id="MCPCatalogManager.add_custom_server">
296
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.add_custom_server">[docs]</a>
297
+ <span class="k">def</span><span class="w"> </span><span class="nf">add_custom_server</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server_info</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]):</span>
298
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Add a custom server to the catalog&quot;&quot;&quot;</span>
299
+ <span class="n">catalog</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_catalog</span><span class="p">()</span>
300
+ <span class="n">server_name</span> <span class="o">=</span> <span class="n">server_info</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;name&quot;</span><span class="p">)</span>
301
+
302
+ <span class="k">if</span> <span class="n">server_name</span><span class="p">:</span>
303
+ <span class="c1"># Add default fields if missing</span>
304
+ <span class="n">server_info</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">&quot;status&quot;</span><span class="p">,</span> <span class="s2">&quot;custom&quot;</span><span class="p">)</span>
305
+ <span class="n">server_info</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">&quot;installed&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
306
+ <span class="n">server_info</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">&quot;running&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
307
+ <span class="n">server_info</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">&quot;category&quot;</span><span class="p">,</span> <span class="s2">&quot;custom&quot;</span><span class="p">)</span>
308
+ <span class="n">server_info</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">&quot;tags&quot;</span><span class="p">,</span> <span class="p">[])</span>
309
+
310
+ <span class="n">catalog</span><span class="p">[</span><span class="s2">&quot;servers&quot;</span><span class="p">][</span><span class="n">server_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">server_info</span>
311
+ <span class="bp">self</span><span class="o">.</span><span class="n">save_catalog</span><span class="p">(</span><span class="n">catalog</span><span class="p">)</span>
312
+ <span class="k">return</span> <span class="kc">True</span>
313
+
314
+ <span class="k">return</span> <span class="kc">False</span></div>
315
+
316
+
317
+ <div class="viewcode-block" id="MCPCatalogManager.remove_server">
318
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.remove_server">[docs]</a>
319
+ <span class="k">def</span><span class="w"> </span><span class="nf">remove_server</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
320
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Remove a server from the catalog&quot;&quot;&quot;</span>
321
+ <span class="n">catalog</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_catalog</span><span class="p">()</span>
322
+ <span class="k">if</span> <span class="n">server_name</span> <span class="ow">in</span> <span class="n">catalog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;servers&quot;</span><span class="p">,</span> <span class="p">{}):</span>
323
+ <span class="k">del</span> <span class="n">catalog</span><span class="p">[</span><span class="s2">&quot;servers&quot;</span><span class="p">][</span><span class="n">server_name</span><span class="p">]</span>
324
+ <span class="bp">self</span><span class="o">.</span><span class="n">save_catalog</span><span class="p">(</span><span class="n">catalog</span><span class="p">)</span>
325
+ <span class="k">return</span> <span class="kc">True</span>
326
+ <span class="k">return</span> <span class="kc">False</span></div>
327
+
328
+
329
+ <div class="viewcode-block" id="MCPCatalogManager.search_servers">
330
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.search_servers">[docs]</a>
331
+ <span class="k">def</span><span class="w"> </span><span class="nf">search_servers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
332
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Search servers by name, description, or tags&quot;&quot;&quot;</span>
333
+ <span class="n">catalog</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_catalog</span><span class="p">()</span>
334
+ <span class="n">servers</span> <span class="o">=</span> <span class="n">catalog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;servers&quot;</span><span class="p">,</span> <span class="p">{})</span>
335
+ <span class="n">results</span> <span class="o">=</span> <span class="p">{}</span>
336
+
337
+ <span class="n">query_lower</span> <span class="o">=</span> <span class="n">query</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
338
+
339
+ <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">server</span> <span class="ow">in</span> <span class="n">servers</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
340
+ <span class="c1"># Search in name</span>
341
+ <span class="k">if</span> <span class="n">query_lower</span> <span class="ow">in</span> <span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
342
+ <span class="n">results</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">server</span>
343
+ <span class="k">continue</span>
344
+
345
+ <span class="c1"># Search in display name</span>
346
+ <span class="k">if</span> <span class="n">query_lower</span> <span class="ow">in</span> <span class="n">server</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;display_name&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
347
+ <span class="n">results</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">server</span>
348
+ <span class="k">continue</span>
349
+
350
+ <span class="c1"># Search in description</span>
351
+ <span class="k">if</span> <span class="n">query_lower</span> <span class="ow">in</span> <span class="n">server</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;description&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
352
+ <span class="n">results</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">server</span>
353
+ <span class="k">continue</span>
354
+
355
+ <span class="c1"># Search in tags</span>
356
+ <span class="n">tags</span> <span class="o">=</span> <span class="n">server</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;tags&quot;</span><span class="p">,</span> <span class="p">[])</span>
357
+ <span class="k">if</span> <span class="nb">any</span><span class="p">(</span><span class="n">query_lower</span> <span class="ow">in</span> <span class="n">tag</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">for</span> <span class="n">tag</span> <span class="ow">in</span> <span class="n">tags</span><span class="p">):</span>
358
+ <span class="n">results</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">server</span>
359
+ <span class="k">continue</span>
360
+
361
+ <span class="k">return</span> <span class="n">results</span></div>
362
+
363
+
364
+ <div class="viewcode-block" id="MCPCatalogManager.get_categories">
365
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.mcp_.html#mindroot.coreplugins.mcp_.catalog_manager.MCPCatalogManager.get_categories">[docs]</a>
366
+ <span class="k">def</span><span class="w"> </span><span class="nf">get_categories</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
367
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Get list of all categories&quot;&quot;&quot;</span>
368
+ <span class="n">catalog</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_catalog</span><span class="p">()</span>
369
+ <span class="n">categories</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">catalog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;_metadata&quot;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;categories&quot;</span><span class="p">,</span> <span class="p">[]))</span>
370
+
371
+ <span class="c1"># Add categories from servers</span>
372
+ <span class="k">for</span> <span class="n">server</span> <span class="ow">in</span> <span class="n">catalog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;servers&quot;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
373
+ <span class="n">category</span> <span class="o">=</span> <span class="n">server</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;category&quot;</span><span class="p">)</span>
374
+ <span class="k">if</span> <span class="n">category</span><span class="p">:</span>
375
+ <span class="n">categories</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">category</span><span class="p">)</span>
376
+
377
+ <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">categories</span><span class="p">))</span></div>
378
+ </div>
379
+
380
+ </pre></div>
381
+
382
+ </div>
383
+ </div>
384
+ <footer>
385
+
386
+ <hr/>
387
+
388
+ <div role="contentinfo">
389
+ <p>&#169; Copyright 2025, Jason Livesay.</p>
390
+ </div>
391
+
392
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
393
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
394
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
395
+
396
+
397
+ </footer>
398
+ </div>
399
+ </div>
400
+ </section>
401
+ </div>
402
+ <script>
403
+ jQuery(function () {
404
+ SphinxRtdTheme.Navigation.enable(true);
405
+ });
406
+ </script>
407
+
408
+ </body>
409
+ </html>