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.
- scmcp_shared/__init__.py +1 -3
- scmcp_shared/agent.py +58 -8
- scmcp_shared/backend.py +44 -0
- scmcp_shared/cli.py +75 -46
- scmcp_shared/kb.py +38 -0
- scmcp_shared/logging_config.py +6 -8
- scmcp_shared/mcp_base.py +184 -0
- scmcp_shared/schema/io.py +101 -59
- scmcp_shared/schema/pl.py +386 -490
- scmcp_shared/schema/pp.py +514 -265
- scmcp_shared/schema/preset/__init__.py +15 -0
- scmcp_shared/schema/preset/io.py +103 -0
- scmcp_shared/schema/preset/pl.py +843 -0
- scmcp_shared/schema/preset/pp.py +616 -0
- scmcp_shared/schema/preset/tl.py +917 -0
- scmcp_shared/schema/preset/util.py +123 -0
- scmcp_shared/schema/tl.py +355 -407
- scmcp_shared/schema/util.py +57 -72
- scmcp_shared/server/__init__.py +0 -12
- scmcp_shared/server/auto.py +10 -8
- scmcp_shared/server/code.py +3 -0
- scmcp_shared/server/preset/__init__.py +14 -0
- scmcp_shared/server/{io.py → preset/io.py} +26 -22
- scmcp_shared/server/{pl.py → preset/pl.py} +162 -78
- scmcp_shared/server/{pp.py → preset/pp.py} +123 -65
- scmcp_shared/server/{tl.py → preset/tl.py} +142 -79
- scmcp_shared/server/{util.py → preset/util.py} +123 -66
- scmcp_shared/util.py +109 -38
- scmcp_shared/vector_db/decoupler.lance/_transactions/0-9499b1b5-85d4-44c2-8f05-1bcce87fe4ef.txn +3 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/1-1632e7a3-4427-4077-8d03-57437144443d.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/10-dcf66479-eafb-4193-9358-198154aea1c1.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/11-2c6ddc17-49f5-47b5-8764-753297cf9e1b.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/12-f079d0a2-9c1c-4e7a-abf6-3e3c4cddac11.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/13-5bda9382-a06e-493d-85cb-e066172778ce.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/14-6f9c669f-25e2-4096-b7ea-9b421a37e110.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/15-2068cca9-31e8-45a3-86d1-bcb8924c72b9.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/16-72356bb2-5c98-424e-97aa-a92fa3453da6.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/17-9baa67ce-f6d3-478c-9511-20d01988d4d5.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/18-b9f2e28e-c4c5-4ce7-bf58-402d53a39558.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/19-d199d9f9-7990-4ec0-adde-e98c1c927202.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/2-3827747c-095e-41cb-af69-3814bab3a588.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/20-31c197a3-7a23-472f-a7e3-056c0ff11e3a.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/21-066e3024-36f8-4557-83ae-d2f338ec045c.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/22-1d1ccbe5-7c4c-4882-986a-c61ec2f7925e.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/23-b2c41628-b2d6-49f1-81b5-3cd9100894b4.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/24-e43e2e8d-9dd8-479f-b63c-d147e737c49f.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/25-188708e9-5ee1-4b5c-8e13-45dec8efd60d.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/26-4f4b6316-5680-4b31-8dd6-215cce66d7b5.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/27-c1855f86-abab-44ef-9e61-1312dffc9b06.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/28-650d2be0-e977-4177-b457-b733eea8b6ea.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/29-e47751d8-0e44-46da-82bd-4836b00a8431.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/3-518fc9b8-67de-48f7-94c8-f2398c63dbc5.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/30-0db3ea0f-deca-4b5b-9d70-9fb5f741f90c.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/31-ef76f0bb-bcfa-4031-b3ad-94b51ee818a9.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/32-a763e0f1-5c8d-460f-a455-0c6f6c4f1450.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/33-30bce2aa-8e6f-4f42-a323-c420133aa20f.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/34-f91ec2f9-d34b-4fcf-8bc7-564c28e50538.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/35-7f36a75c-96a7-4868-a4db-5d5f78ecf850.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/36-f2df7f99-a37c-458a-958d-7eb5e81eee18.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/37-e0af7415-955b-4167-8705-fa9ddb643e9a.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/38-6c24a9f0-ce71-4dda-8193-479aa23c5456.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/39-72b8a20c-3112-4cf1-8b05-b74a2c02c3f2.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/4-42904942-5a79-4f28-90ce-35a4ae8c40d1.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/40-95ac7526-6a2e-4914-9654-288c41bff370.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/41-13430464-5e62-4aa8-9709-513693a75095.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/42-cbb1ad83-a906-4540-bc37-4db158eac618.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/43-3c246401-d742-49a9-b24d-cfc457685461.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/44-11315c14-ecf4-4e3d-8690-46d57cb3e8c0.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/45-7bbf4bc6-96d4-425a-afa2-34aec7121c85.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/5-82dda0b4-7838-4f04-90f3-4b1e932c6891.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/6-c78352d8-16ba-4814-bd7f-74b8c0c5efe7.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/7-bb882b35-63f3-4c52-870f-6a64e3ac7f3c.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/8-fc84ad1b-1b59-4822-8fc7-70f4eb18f6d9.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_transactions/9-3404dcf1-bb17-40e6-9e5d-d9942dff90b2.txn +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/1.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/10.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/11.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/12.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/13.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/14.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/15.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/16.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/17.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/18.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/19.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/2.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/20.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/21.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/22.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/23.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/24.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/25.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/26.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/27.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/28.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/29.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/3.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/30.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/31.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/32.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/33.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/34.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/35.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/36.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/37.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/38.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/39.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/4.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/40.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/41.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/42.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/43.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/44.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/45.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/46.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/5.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/6.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/7.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/8.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/_versions/9.manifest +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/0cc94dc3-2ca3-403c-a9df-59753f24b3f2.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/254a1a71-cdd2-4cca-b7ec-a50540fed62c.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/2574d216-5f05-4794-9e1c-986fafde6ab4.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/26c7bbe7-5f97-4453-b065-123b764448b3.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/286595a6-88f6-4b05-861e-e4f607a6fcdb.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/33219b1a-7575-46ef-bb64-2bdbde1e692b.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/344ad7dd-98bb-41de-b347-2f17bf5735cb.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/395b1ecb-68fe-4dd3-a770-4b3ed393ae0c.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/3db97f4c-9c35-44b7-9042-82b4006c5a22.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/4540246e-b0bb-4f4d-8f98-60a64f1c42ed.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/4643dbc0-9e45-4b63-81e1-e06cf9bddcec.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/4f28eb52-d409-43f2-ae17-d1826f209006.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/4fda4a22-35f0-4897-b4c5-6cedefba66e6.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/51ee77b6-ab24-44c0-916e-b81ff3912731.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/539d15c9-e88b-400c-9ab7-08f5e8dca10d.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/54007132-91f5-4909-8678-c471ef4d100f.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/546d88ec-0d5c-42bb-bccc-3271f3f183a4.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/6912ad8a-343c-4ca1-b1b7-4300125e688e.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/6b72e4f7-3051-40a4-a492-6d9eff1c647d.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/6d7ee320-ae1c-4e49-8ce5-c85971b11ce6.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/6ea47b70-69d4-43e9-b2c6-442fe50e4dd1.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/72adb5ed-bf11-4d06-b146-0272d333db08.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/745907df-e261-4f4b-a757-2c01c058bf27.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/78988307-4c66-4ad7-b295-7463ecd53609.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/798ce305-6d60-4f28-b82a-e1f647907abf.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/7c159cce-2741-442b-9c63-f44bf2996718.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/7cd7a818-e68b-4fa8-bad3-23b60c386670.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/7ec553ed-0c7a-4bac-99b2-2ad976b40466.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/83efdc85-d990-4762-b69a-fb1c3938f60f.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/8c1613b3-8d69-49c5-bfd0-a021bb516faf.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/95cd1b22-1f93-4133-9841-de21549ad8c5.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/9a2ea5d4-087e-4d3a-b64b-6c568b8a0010.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/b1c47dc6-450a-4dca-b465-badb6a3619c2.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/b21d183a-c51d-463b-932e-9beb2e0da9aa.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/b2598625-8683-4c33-be40-6f1a7555dc2c.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/b7297b39-1fc5-4886-be21-708b369bef59.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/b7d90085-5bd6-48f9-8a73-17eb7cf556fa.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/b988ceee-57fc-423b-8e67-5729086c6946.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/bfd68ea6-ddf4-44bb-aa87-2669f0462f7d.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/cb8ac58e-0e59-4391-95ab-6195e71b9625.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/d0f10434-afb5-49c5-9e77-d39a4f8cca94.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/d3f89fec-5795-4e11-8c15-bc2206a7fae2.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/e063c8a4-5ef1-4933-a049-b41049d9be5f.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/e2348b24-f290-4fe2-a6c8-e98009ae4c1b.lance +0 -0
- scmcp_shared/vector_db/decoupler.lance/data/e5d3f893-6763-40dc-9d02-04e2f56a4883.lance +0 -0
- {scmcp_shared-0.4.0.dist-info → scmcp_shared-0.5.0.dist-info}/METADATA +2 -1
- scmcp_shared-0.5.0.dist-info/RECORD +171 -0
- scmcp_shared/server/base.py +0 -148
- scmcp_shared-0.4.0.dist-info/RECORD +0 -24
- {scmcp_shared-0.4.0.dist-info → scmcp_shared-0.5.0.dist-info}/WHEEL +0 -0
- {scmcp_shared-0.4.0.dist-info → scmcp_shared-0.5.0.dist-info}/licenses/LICENSE +0 -0
scmcp_shared/server/base.py
DELETED
@@ -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,,
|
File without changes
|
File without changes
|