[project]
name = "scanpy-mcp"
dynamic = ["version"]
description = "Natural language interface for scRNA-Seq analysis with Scanpy through MCP."
readme = "README.md"
authors = [
{ name = "shuang", email = "hsh-me@outlook.com" }
]
keywords = [
"mcp",
"model context protocol",
"llm",
"agent",
"scRNA-seq",
"single cell",
"bioinformatics",
"AI"
]
requires-python = ">=3.10"
dependencies = [
"fastmcp>=2.3.5",
"scanpy>=1.10.0",
"nest_asyncio",
"scmcp-shared>=0.3.5",
"leidenalg",
"igraph",
"agno",
"lancedb"
]
[dependency-groups]
dev = [
"pytest>=8.3.3",
"pytest-asyncio>=0.23.5",
]
[project.urls]
Homepage = "http://scmcphub.org/"
Repository = "https://github.com/scmcphub/scanpy-mcp"
Documentation = "https://docs.scmcphub.org/"
[project.scripts]
scanpy-mcp = "scanpy_mcp.cli:cli.run"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.version]
path = "src/scanpy_mcp/__init__.py"
[tool.pytest.ini_options]
asyncio_mode = "strict"
asyncio_default_fixture_loop_scope = "function"
[tool.ruff]
lint.ignore = ["F403", "F405"]