scmcp-shared 0.4.0__py3-none-any.whl → 0.5.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.
Files changed (171) hide show
  1. scmcp_shared/__init__.py +1 -3
  2. scmcp_shared/agent.py +58 -8
  3. scmcp_shared/backend.py +44 -0
  4. scmcp_shared/cli.py +75 -46
  5. scmcp_shared/kb.py +38 -0
  6. scmcp_shared/logging_config.py +6 -8
  7. scmcp_shared/mcp_base.py +184 -0
  8. scmcp_shared/schema/io.py +101 -59
  9. scmcp_shared/schema/pl.py +386 -490
  10. scmcp_shared/schema/pp.py +514 -265
  11. scmcp_shared/schema/preset/__init__.py +15 -0
  12. scmcp_shared/schema/preset/io.py +103 -0
  13. scmcp_shared/schema/preset/pl.py +843 -0
  14. scmcp_shared/schema/preset/pp.py +616 -0
  15. scmcp_shared/schema/preset/tl.py +917 -0
  16. scmcp_shared/schema/preset/util.py +123 -0
  17. scmcp_shared/schema/tl.py +355 -407
  18. scmcp_shared/schema/util.py +57 -72
  19. scmcp_shared/server/__init__.py +0 -12
  20. scmcp_shared/server/auto.py +10 -8
  21. scmcp_shared/server/code.py +3 -0
  22. scmcp_shared/server/preset/__init__.py +14 -0
  23. scmcp_shared/server/{io.py → preset/io.py} +26 -22
  24. scmcp_shared/server/{pl.py → preset/pl.py} +162 -78
  25. scmcp_shared/server/{pp.py → preset/pp.py} +123 -65
  26. scmcp_shared/server/{tl.py → preset/tl.py} +142 -79
  27. scmcp_shared/server/{util.py → preset/util.py} +123 -66
  28. scmcp_shared/util.py +109 -38
  29. scmcp_shared/vector_db/decoupler.lance/_transactions/0-9499b1b5-85d4-44c2-8f05-1bcce87fe4ef.txn +3 -0
  30. scmcp_shared/vector_db/decoupler.lance/_transactions/1-1632e7a3-4427-4077-8d03-57437144443d.txn +0 -0
  31. scmcp_shared/vector_db/decoupler.lance/_transactions/10-dcf66479-eafb-4193-9358-198154aea1c1.txn +0 -0
  32. scmcp_shared/vector_db/decoupler.lance/_transactions/11-2c6ddc17-49f5-47b5-8764-753297cf9e1b.txn +0 -0
  33. scmcp_shared/vector_db/decoupler.lance/_transactions/12-f079d0a2-9c1c-4e7a-abf6-3e3c4cddac11.txn +0 -0
  34. scmcp_shared/vector_db/decoupler.lance/_transactions/13-5bda9382-a06e-493d-85cb-e066172778ce.txn +0 -0
  35. scmcp_shared/vector_db/decoupler.lance/_transactions/14-6f9c669f-25e2-4096-b7ea-9b421a37e110.txn +0 -0
  36. scmcp_shared/vector_db/decoupler.lance/_transactions/15-2068cca9-31e8-45a3-86d1-bcb8924c72b9.txn +0 -0
  37. scmcp_shared/vector_db/decoupler.lance/_transactions/16-72356bb2-5c98-424e-97aa-a92fa3453da6.txn +0 -0
  38. scmcp_shared/vector_db/decoupler.lance/_transactions/17-9baa67ce-f6d3-478c-9511-20d01988d4d5.txn +0 -0
  39. scmcp_shared/vector_db/decoupler.lance/_transactions/18-b9f2e28e-c4c5-4ce7-bf58-402d53a39558.txn +0 -0
  40. scmcp_shared/vector_db/decoupler.lance/_transactions/19-d199d9f9-7990-4ec0-adde-e98c1c927202.txn +0 -0
  41. scmcp_shared/vector_db/decoupler.lance/_transactions/2-3827747c-095e-41cb-af69-3814bab3a588.txn +0 -0
  42. scmcp_shared/vector_db/decoupler.lance/_transactions/20-31c197a3-7a23-472f-a7e3-056c0ff11e3a.txn +0 -0
  43. scmcp_shared/vector_db/decoupler.lance/_transactions/21-066e3024-36f8-4557-83ae-d2f338ec045c.txn +0 -0
  44. scmcp_shared/vector_db/decoupler.lance/_transactions/22-1d1ccbe5-7c4c-4882-986a-c61ec2f7925e.txn +0 -0
  45. scmcp_shared/vector_db/decoupler.lance/_transactions/23-b2c41628-b2d6-49f1-81b5-3cd9100894b4.txn +0 -0
  46. scmcp_shared/vector_db/decoupler.lance/_transactions/24-e43e2e8d-9dd8-479f-b63c-d147e737c49f.txn +0 -0
  47. scmcp_shared/vector_db/decoupler.lance/_transactions/25-188708e9-5ee1-4b5c-8e13-45dec8efd60d.txn +0 -0
  48. scmcp_shared/vector_db/decoupler.lance/_transactions/26-4f4b6316-5680-4b31-8dd6-215cce66d7b5.txn +0 -0
  49. scmcp_shared/vector_db/decoupler.lance/_transactions/27-c1855f86-abab-44ef-9e61-1312dffc9b06.txn +0 -0
  50. scmcp_shared/vector_db/decoupler.lance/_transactions/28-650d2be0-e977-4177-b457-b733eea8b6ea.txn +0 -0
  51. scmcp_shared/vector_db/decoupler.lance/_transactions/29-e47751d8-0e44-46da-82bd-4836b00a8431.txn +0 -0
  52. scmcp_shared/vector_db/decoupler.lance/_transactions/3-518fc9b8-67de-48f7-94c8-f2398c63dbc5.txn +0 -0
  53. scmcp_shared/vector_db/decoupler.lance/_transactions/30-0db3ea0f-deca-4b5b-9d70-9fb5f741f90c.txn +0 -0
  54. scmcp_shared/vector_db/decoupler.lance/_transactions/31-ef76f0bb-bcfa-4031-b3ad-94b51ee818a9.txn +0 -0
  55. scmcp_shared/vector_db/decoupler.lance/_transactions/32-a763e0f1-5c8d-460f-a455-0c6f6c4f1450.txn +0 -0
  56. scmcp_shared/vector_db/decoupler.lance/_transactions/33-30bce2aa-8e6f-4f42-a323-c420133aa20f.txn +0 -0
  57. scmcp_shared/vector_db/decoupler.lance/_transactions/34-f91ec2f9-d34b-4fcf-8bc7-564c28e50538.txn +0 -0
  58. scmcp_shared/vector_db/decoupler.lance/_transactions/35-7f36a75c-96a7-4868-a4db-5d5f78ecf850.txn +0 -0
  59. scmcp_shared/vector_db/decoupler.lance/_transactions/36-f2df7f99-a37c-458a-958d-7eb5e81eee18.txn +0 -0
  60. scmcp_shared/vector_db/decoupler.lance/_transactions/37-e0af7415-955b-4167-8705-fa9ddb643e9a.txn +0 -0
  61. scmcp_shared/vector_db/decoupler.lance/_transactions/38-6c24a9f0-ce71-4dda-8193-479aa23c5456.txn +0 -0
  62. scmcp_shared/vector_db/decoupler.lance/_transactions/39-72b8a20c-3112-4cf1-8b05-b74a2c02c3f2.txn +0 -0
  63. scmcp_shared/vector_db/decoupler.lance/_transactions/4-42904942-5a79-4f28-90ce-35a4ae8c40d1.txn +0 -0
  64. scmcp_shared/vector_db/decoupler.lance/_transactions/40-95ac7526-6a2e-4914-9654-288c41bff370.txn +0 -0
  65. scmcp_shared/vector_db/decoupler.lance/_transactions/41-13430464-5e62-4aa8-9709-513693a75095.txn +0 -0
  66. scmcp_shared/vector_db/decoupler.lance/_transactions/42-cbb1ad83-a906-4540-bc37-4db158eac618.txn +0 -0
  67. scmcp_shared/vector_db/decoupler.lance/_transactions/43-3c246401-d742-49a9-b24d-cfc457685461.txn +0 -0
  68. scmcp_shared/vector_db/decoupler.lance/_transactions/44-11315c14-ecf4-4e3d-8690-46d57cb3e8c0.txn +0 -0
  69. scmcp_shared/vector_db/decoupler.lance/_transactions/45-7bbf4bc6-96d4-425a-afa2-34aec7121c85.txn +0 -0
  70. scmcp_shared/vector_db/decoupler.lance/_transactions/5-82dda0b4-7838-4f04-90f3-4b1e932c6891.txn +0 -0
  71. scmcp_shared/vector_db/decoupler.lance/_transactions/6-c78352d8-16ba-4814-bd7f-74b8c0c5efe7.txn +0 -0
  72. scmcp_shared/vector_db/decoupler.lance/_transactions/7-bb882b35-63f3-4c52-870f-6a64e3ac7f3c.txn +0 -0
  73. scmcp_shared/vector_db/decoupler.lance/_transactions/8-fc84ad1b-1b59-4822-8fc7-70f4eb18f6d9.txn +0 -0
  74. scmcp_shared/vector_db/decoupler.lance/_transactions/9-3404dcf1-bb17-40e6-9e5d-d9942dff90b2.txn +0 -0
  75. scmcp_shared/vector_db/decoupler.lance/_versions/1.manifest +0 -0
  76. scmcp_shared/vector_db/decoupler.lance/_versions/10.manifest +0 -0
  77. scmcp_shared/vector_db/decoupler.lance/_versions/11.manifest +0 -0
  78. scmcp_shared/vector_db/decoupler.lance/_versions/12.manifest +0 -0
  79. scmcp_shared/vector_db/decoupler.lance/_versions/13.manifest +0 -0
  80. scmcp_shared/vector_db/decoupler.lance/_versions/14.manifest +0 -0
  81. scmcp_shared/vector_db/decoupler.lance/_versions/15.manifest +0 -0
  82. scmcp_shared/vector_db/decoupler.lance/_versions/16.manifest +0 -0
  83. scmcp_shared/vector_db/decoupler.lance/_versions/17.manifest +0 -0
  84. scmcp_shared/vector_db/decoupler.lance/_versions/18.manifest +0 -0
  85. scmcp_shared/vector_db/decoupler.lance/_versions/19.manifest +0 -0
  86. scmcp_shared/vector_db/decoupler.lance/_versions/2.manifest +0 -0
  87. scmcp_shared/vector_db/decoupler.lance/_versions/20.manifest +0 -0
  88. scmcp_shared/vector_db/decoupler.lance/_versions/21.manifest +0 -0
  89. scmcp_shared/vector_db/decoupler.lance/_versions/22.manifest +0 -0
  90. scmcp_shared/vector_db/decoupler.lance/_versions/23.manifest +0 -0
  91. scmcp_shared/vector_db/decoupler.lance/_versions/24.manifest +0 -0
  92. scmcp_shared/vector_db/decoupler.lance/_versions/25.manifest +0 -0
  93. scmcp_shared/vector_db/decoupler.lance/_versions/26.manifest +0 -0
  94. scmcp_shared/vector_db/decoupler.lance/_versions/27.manifest +0 -0
  95. scmcp_shared/vector_db/decoupler.lance/_versions/28.manifest +0 -0
  96. scmcp_shared/vector_db/decoupler.lance/_versions/29.manifest +0 -0
  97. scmcp_shared/vector_db/decoupler.lance/_versions/3.manifest +0 -0
  98. scmcp_shared/vector_db/decoupler.lance/_versions/30.manifest +0 -0
  99. scmcp_shared/vector_db/decoupler.lance/_versions/31.manifest +0 -0
  100. scmcp_shared/vector_db/decoupler.lance/_versions/32.manifest +0 -0
  101. scmcp_shared/vector_db/decoupler.lance/_versions/33.manifest +0 -0
  102. scmcp_shared/vector_db/decoupler.lance/_versions/34.manifest +0 -0
  103. scmcp_shared/vector_db/decoupler.lance/_versions/35.manifest +0 -0
  104. scmcp_shared/vector_db/decoupler.lance/_versions/36.manifest +0 -0
  105. scmcp_shared/vector_db/decoupler.lance/_versions/37.manifest +0 -0
  106. scmcp_shared/vector_db/decoupler.lance/_versions/38.manifest +0 -0
  107. scmcp_shared/vector_db/decoupler.lance/_versions/39.manifest +0 -0
  108. scmcp_shared/vector_db/decoupler.lance/_versions/4.manifest +0 -0
  109. scmcp_shared/vector_db/decoupler.lance/_versions/40.manifest +0 -0
  110. scmcp_shared/vector_db/decoupler.lance/_versions/41.manifest +0 -0
  111. scmcp_shared/vector_db/decoupler.lance/_versions/42.manifest +0 -0
  112. scmcp_shared/vector_db/decoupler.lance/_versions/43.manifest +0 -0
  113. scmcp_shared/vector_db/decoupler.lance/_versions/44.manifest +0 -0
  114. scmcp_shared/vector_db/decoupler.lance/_versions/45.manifest +0 -0
  115. scmcp_shared/vector_db/decoupler.lance/_versions/46.manifest +0 -0
  116. scmcp_shared/vector_db/decoupler.lance/_versions/5.manifest +0 -0
  117. scmcp_shared/vector_db/decoupler.lance/_versions/6.manifest +0 -0
  118. scmcp_shared/vector_db/decoupler.lance/_versions/7.manifest +0 -0
  119. scmcp_shared/vector_db/decoupler.lance/_versions/8.manifest +0 -0
  120. scmcp_shared/vector_db/decoupler.lance/_versions/9.manifest +0 -0
  121. scmcp_shared/vector_db/decoupler.lance/data/0cc94dc3-2ca3-403c-a9df-59753f24b3f2.lance +0 -0
  122. scmcp_shared/vector_db/decoupler.lance/data/254a1a71-cdd2-4cca-b7ec-a50540fed62c.lance +0 -0
  123. scmcp_shared/vector_db/decoupler.lance/data/2574d216-5f05-4794-9e1c-986fafde6ab4.lance +0 -0
  124. scmcp_shared/vector_db/decoupler.lance/data/26c7bbe7-5f97-4453-b065-123b764448b3.lance +0 -0
  125. scmcp_shared/vector_db/decoupler.lance/data/286595a6-88f6-4b05-861e-e4f607a6fcdb.lance +0 -0
  126. scmcp_shared/vector_db/decoupler.lance/data/33219b1a-7575-46ef-bb64-2bdbde1e692b.lance +0 -0
  127. scmcp_shared/vector_db/decoupler.lance/data/344ad7dd-98bb-41de-b347-2f17bf5735cb.lance +0 -0
  128. scmcp_shared/vector_db/decoupler.lance/data/395b1ecb-68fe-4dd3-a770-4b3ed393ae0c.lance +0 -0
  129. scmcp_shared/vector_db/decoupler.lance/data/3db97f4c-9c35-44b7-9042-82b4006c5a22.lance +0 -0
  130. scmcp_shared/vector_db/decoupler.lance/data/4540246e-b0bb-4f4d-8f98-60a64f1c42ed.lance +0 -0
  131. scmcp_shared/vector_db/decoupler.lance/data/4643dbc0-9e45-4b63-81e1-e06cf9bddcec.lance +0 -0
  132. scmcp_shared/vector_db/decoupler.lance/data/4f28eb52-d409-43f2-ae17-d1826f209006.lance +0 -0
  133. scmcp_shared/vector_db/decoupler.lance/data/4fda4a22-35f0-4897-b4c5-6cedefba66e6.lance +0 -0
  134. scmcp_shared/vector_db/decoupler.lance/data/51ee77b6-ab24-44c0-916e-b81ff3912731.lance +0 -0
  135. scmcp_shared/vector_db/decoupler.lance/data/539d15c9-e88b-400c-9ab7-08f5e8dca10d.lance +0 -0
  136. scmcp_shared/vector_db/decoupler.lance/data/54007132-91f5-4909-8678-c471ef4d100f.lance +0 -0
  137. scmcp_shared/vector_db/decoupler.lance/data/546d88ec-0d5c-42bb-bccc-3271f3f183a4.lance +0 -0
  138. scmcp_shared/vector_db/decoupler.lance/data/6912ad8a-343c-4ca1-b1b7-4300125e688e.lance +0 -0
  139. scmcp_shared/vector_db/decoupler.lance/data/6b72e4f7-3051-40a4-a492-6d9eff1c647d.lance +0 -0
  140. scmcp_shared/vector_db/decoupler.lance/data/6d7ee320-ae1c-4e49-8ce5-c85971b11ce6.lance +0 -0
  141. scmcp_shared/vector_db/decoupler.lance/data/6ea47b70-69d4-43e9-b2c6-442fe50e4dd1.lance +0 -0
  142. scmcp_shared/vector_db/decoupler.lance/data/72adb5ed-bf11-4d06-b146-0272d333db08.lance +0 -0
  143. scmcp_shared/vector_db/decoupler.lance/data/745907df-e261-4f4b-a757-2c01c058bf27.lance +0 -0
  144. scmcp_shared/vector_db/decoupler.lance/data/78988307-4c66-4ad7-b295-7463ecd53609.lance +0 -0
  145. scmcp_shared/vector_db/decoupler.lance/data/798ce305-6d60-4f28-b82a-e1f647907abf.lance +0 -0
  146. scmcp_shared/vector_db/decoupler.lance/data/7c159cce-2741-442b-9c63-f44bf2996718.lance +0 -0
  147. scmcp_shared/vector_db/decoupler.lance/data/7cd7a818-e68b-4fa8-bad3-23b60c386670.lance +0 -0
  148. scmcp_shared/vector_db/decoupler.lance/data/7ec553ed-0c7a-4bac-99b2-2ad976b40466.lance +0 -0
  149. scmcp_shared/vector_db/decoupler.lance/data/83efdc85-d990-4762-b69a-fb1c3938f60f.lance +0 -0
  150. scmcp_shared/vector_db/decoupler.lance/data/8c1613b3-8d69-49c5-bfd0-a021bb516faf.lance +0 -0
  151. scmcp_shared/vector_db/decoupler.lance/data/95cd1b22-1f93-4133-9841-de21549ad8c5.lance +0 -0
  152. scmcp_shared/vector_db/decoupler.lance/data/9a2ea5d4-087e-4d3a-b64b-6c568b8a0010.lance +0 -0
  153. scmcp_shared/vector_db/decoupler.lance/data/b1c47dc6-450a-4dca-b465-badb6a3619c2.lance +0 -0
  154. scmcp_shared/vector_db/decoupler.lance/data/b21d183a-c51d-463b-932e-9beb2e0da9aa.lance +0 -0
  155. scmcp_shared/vector_db/decoupler.lance/data/b2598625-8683-4c33-be40-6f1a7555dc2c.lance +0 -0
  156. scmcp_shared/vector_db/decoupler.lance/data/b7297b39-1fc5-4886-be21-708b369bef59.lance +0 -0
  157. scmcp_shared/vector_db/decoupler.lance/data/b7d90085-5bd6-48f9-8a73-17eb7cf556fa.lance +0 -0
  158. scmcp_shared/vector_db/decoupler.lance/data/b988ceee-57fc-423b-8e67-5729086c6946.lance +0 -0
  159. scmcp_shared/vector_db/decoupler.lance/data/bfd68ea6-ddf4-44bb-aa87-2669f0462f7d.lance +0 -0
  160. scmcp_shared/vector_db/decoupler.lance/data/cb8ac58e-0e59-4391-95ab-6195e71b9625.lance +0 -0
  161. scmcp_shared/vector_db/decoupler.lance/data/d0f10434-afb5-49c5-9e77-d39a4f8cca94.lance +0 -0
  162. scmcp_shared/vector_db/decoupler.lance/data/d3f89fec-5795-4e11-8c15-bc2206a7fae2.lance +0 -0
  163. scmcp_shared/vector_db/decoupler.lance/data/e063c8a4-5ef1-4933-a049-b41049d9be5f.lance +0 -0
  164. scmcp_shared/vector_db/decoupler.lance/data/e2348b24-f290-4fe2-a6c8-e98009ae4c1b.lance +0 -0
  165. scmcp_shared/vector_db/decoupler.lance/data/e5d3f893-6763-40dc-9d02-04e2f56a4883.lance +0 -0
  166. {scmcp_shared-0.4.0.dist-info → scmcp_shared-0.5.0.dist-info}/METADATA +2 -1
  167. scmcp_shared-0.5.0.dist-info/RECORD +171 -0
  168. scmcp_shared/server/base.py +0 -148
  169. scmcp_shared-0.4.0.dist-info/RECORD +0 -24
  170. {scmcp_shared-0.4.0.dist-info → scmcp_shared-0.5.0.dist-info}/WHEEL +0 -0
  171. {scmcp_shared-0.4.0.dist-info → scmcp_shared-0.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,148 +0,0 @@
1
- import inspect
2
- from fastmcp import FastMCP
3
- from ..schema import AdataInfo
4
- from ..util import filter_tools
5
- from collections.abc import AsyncIterator
6
- from contextlib import asynccontextmanager
7
- import asyncio
8
- from typing import Optional, List, Any, Iterable
9
- from .auto import auto_mcp
10
-
11
- class BaseMCP:
12
- """Base class for all Scanpy MCP classes."""
13
-
14
- def __init__(self, name: str, include_tools: list = None, exclude_tools: list = None, AdataInfo = AdataInfo):
15
- """
16
- Initialize BaseMCP with optional tool filtering.
17
-
18
- Args:
19
- name (str): Name of the MCP server
20
- include_tools (list, optional): List of tool names to include. If None, all tools are included.
21
- exclude_tools (list, optional): List of tool names to exclude. If None, no tools are excluded.
22
- AdataInfo: The AdataInfo class to use for type annotations.
23
- """
24
- self.mcp = FastMCP(name)
25
- self.include_tools = include_tools
26
- self.exclude_tools = exclude_tools
27
- self.AdataInfo = AdataInfo
28
- self._register_tools()
29
-
30
- def _register_tools(self):
31
- """Register all tool methods with the FastMCP instance based on include/exclude filters"""
32
- # Get all methods of the class
33
- methods = inspect.getmembers(self, predicate=inspect.ismethod)
34
-
35
- # Filter methods that start with _tool_
36
- tool_methods = [tl_method() for name, tl_method in methods if name.startswith('_tool_')]
37
-
38
- # Filter tools based on include/exclude lists
39
- if self.include_tools is not None:
40
- tool_methods = [tl for tl in tool_methods if tl.name in self.include_tools]
41
-
42
- if self.exclude_tools is not None:
43
- tool_methods = [tl for tl in tool_methods if tl.name not in self.exclude_tools]
44
-
45
- # Register filtered tools
46
- for tool in tool_methods:
47
- # Get the function returned by the tool method
48
- if tool is not None:
49
- self.mcp.add_tool(tool)
50
-
51
-
52
- class AdataState:
53
- def __init__(self, add_adtypes=None):
54
- self.adata_dic = {"exp": {}, "activity": {}, "cnv": {}, "splicing": {}}
55
- if isinstance(add_adtypes, str):
56
- self.adata_dic[add_adtypes] = {}
57
- elif isinstance(add_adtypes, Iterable):
58
- self.adata_dic.update({adtype: {} for adtype in add_adtypes})
59
- self.active_id = None
60
- self.metadatWa = {}
61
- self.cr_kernel = {}
62
- self.cr_estimator = {}
63
-
64
- def get_adata(self, sampleid=None, adtype="exp", adinfo=None):
65
- if adinfo is not None:
66
- kwargs = adinfo.model_dump()
67
- sampleid = kwargs.get("sampleid", None)
68
- adtype = kwargs.get("adtype", "exp")
69
- try:
70
- if self.active_id is None:
71
- return None
72
- sampleid = sampleid or self.active_id
73
- return self.adata_dic[adtype][sampleid]
74
- except KeyError as e:
75
- raise KeyError(f"Key {e} not found in adata_dic[{adtype}].Please check the sampleid or adtype.")
76
- except Exception as e:
77
- raise Exception(f"fuck {e} {type(e)}")
78
-
79
- def set_adata(self, adata, sampleid=None, sdtype="exp", adinfo=None):
80
- if adinfo is not None:
81
- kwargs = adinfo.model_dump()
82
- sampleid = kwargs.get("sampleid", None)
83
- sdtype = kwargs.get("adtype", "exp")
84
- sampleid = sampleid or self.active_id
85
- if sdtype not in self.adata_dic:
86
- self.adata_dic[sdtype] = {}
87
- self.adata_dic[sdtype][sampleid] = adata
88
-
89
-
90
- class BaseMCPManager:
91
- """Base class for MCP module management."""
92
-
93
- def __init__(self,
94
- name: str,
95
- include_modules: Optional[List[str]] = None,
96
- exclude_modules: Optional[List[str]] = None,
97
- include_tools: Optional[List[str]] = None,
98
- exclude_tools: Optional[List[str]] = None,
99
- ):
100
- """
101
- Initialize BaseMCPManager with optional module filtering.
102
-
103
- Args:
104
- name (str): Name of the MCP server
105
- include_modules (List[str], optional): List of module names to include. If None, all modules are included.
106
- exclude_modules (List[str], optional): List of module names to exclude. If None, no modules are excluded.
107
- include_tools (List[str], optional): List of tool names to include. If None, all tools are included.
108
- exclude_tools (List[str], optional): List of tool names to exclude. If None, no tools are excluded.
109
- """
110
- self.ads = AdataState()
111
- self.mcp = FastMCP(name, lifespan=self.adata_lifespan)
112
- self.include_modules = include_modules
113
- self.exclude_modules = exclude_modules
114
- self.include_tools = include_tools
115
- self.exclude_tools = exclude_tools
116
- self.available_modules = {}
117
- self._init_modules()
118
- self._register_modules()
119
-
120
- def _init_modules(self):
121
- """Initialize available modules. To be implemented by subclasses."""
122
- raise NotImplementedError("Subclasses must implement _init_modules")
123
-
124
- def _register_modules(self):
125
- """Register modules based on include/exclude filters."""
126
- # Filter modules based on include/exclude lists
127
- if self.include_modules is not None:
128
- self.available_modules = {k: v for k, v in self.available_modules.items() if k in self.include_modules}
129
-
130
- if self.exclude_modules is not None:
131
- self.available_modules = {k: v for k, v in self.available_modules.items() if k not in self.exclude_modules}
132
-
133
- # Register each module
134
- for module_name, mcpi in self.available_modules.items():
135
- if isinstance(mcpi, FastMCP):
136
- if self.include_tools is not None and module_name in self.include_tools:
137
- mcpi = filter_tools(mcpi, include_tools= self.include_tools[module_name])
138
- if self.exclude_tools is not None and module_name in self.exclude_tools:
139
- mcpi = filter_tools(mcpi, exclude_tools=self.exclude_tools[module_name])
140
-
141
- asyncio.run(self.mcp.import_server(module_name, mcpi))
142
- else:
143
- asyncio.run(self.mcp.import_server(module_name, mcpi().mcp))
144
-
145
- @asynccontextmanager
146
- async def adata_lifespan(self, server: FastMCP) -> AsyncIterator[Any]:
147
- """Context manager for AdataState lifecycle."""
148
- yield self.ads
@@ -1,24 +0,0 @@
1
- scmcp_shared/__init__.py,sha256=5DHi9fyCf-CfX64oAsNqmkR27WRUetIg-NfPin0QKBw,24
2
- scmcp_shared/agent.py,sha256=tWGAyOwdg3oTfYFquGPompUZMHSWqW3VQvEymywaE0o,854
3
- scmcp_shared/cli.py,sha256=8Am2zdn1z_gle6Jz-JQkvK-6_mOB6BFhfK05A0pNpkc,5032
4
- scmcp_shared/logging_config.py,sha256=eCuLuyxMmbj8A1E0VqYWoKA5JPTSbo6cmjS4LOyd0RQ,872
5
- scmcp_shared/util.py,sha256=8_c6WPNpYNoxKpq6tQCC4elCQkWyk3rH-hTe1sqff4A,9535
6
- scmcp_shared/schema/__init__.py,sha256=Kwkc7kPLjExOlxt1sWEy_5qa96MvOS8sNCMlZa6yRg8,737
7
- scmcp_shared/schema/io.py,sha256=-wgL2NQBXwAcojid8rF2Y46GsKL7H6JiheKE6frMotw,4638
8
- scmcp_shared/schema/pl.py,sha256=7AFXgqb2GAlmeXS6m3IdJgThLz6-FTDBmrJqoAi8j98,29612
9
- scmcp_shared/schema/pp.py,sha256=WtaugFLP9vfusBZQCXGAYPmYu-5yWHC2wJTSZutS1XM,21674
10
- scmcp_shared/schema/tl.py,sha256=FEZpr218eaQ8rUp5EJzbjyw1ejqCX4Shsf9CumaKs8A,34425
11
- scmcp_shared/schema/tool.py,sha256=U-VFrovAEr2FklS8cSJPimfhTSTHmskmLfCO7Ee0s2o,267
12
- scmcp_shared/schema/util.py,sha256=fMZxTNf9Bv_xDzrW7YK08q0tCoC3L7ofqPY0K2ykG8k,4824
13
- scmcp_shared/server/__init__.py,sha256=4KE2Y_gDenF0ZyTGicQW0fTgJfMIQYZfpRP4hQ4rFYs,416
14
- scmcp_shared/server/auto.py,sha256=32SC5nC0N7JuPsDSMFRvojaPmUbpybwY1aCOrQMzaL4,1781
15
- scmcp_shared/server/base.py,sha256=I90L_DNdCv--VOIHDRjdVehq-3iBm9mV0Sc9OU7GAXQ,6426
16
- scmcp_shared/server/io.py,sha256=kGBbtd3ltj0ypd0kgMy1l2zT2AVf5yXCHAebQR-ZtUA,4033
17
- scmcp_shared/server/pl.py,sha256=GVu7GQKW67jz3ig43HLX0d2cjGDPJDXdxMSf6b72kAA,15558
18
- scmcp_shared/server/pp.py,sha256=UCzogVULgSs8JTR8PiybroGlrm2QvNRrbeAYj7ujr3E,16297
19
- scmcp_shared/server/tl.py,sha256=LeKcR6F4PNRHZomlD3-igrF44YBQW6Kg7h75psGl9c0,19112
20
- scmcp_shared/server/util.py,sha256=b6gG1dfXe5GdhM4yUtpxBqx1gMRyQVu3dytmzJeD9zs,12590
21
- scmcp_shared-0.4.0.dist-info/METADATA,sha256=CKca84Vmtqc5h06oOH6lxqYVDCeVNJpGypX03Y-O1iI,2435
22
- scmcp_shared-0.4.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
23
- scmcp_shared-0.4.0.dist-info/licenses/LICENSE,sha256=YNr1hpea195yq-wGtB8j-2dGtt7A5G00WENmxa7JGco,1495
24
- scmcp_shared-0.4.0.dist-info/RECORD,,