Metadata-Version: 2.4
Name: crc-lnm-medical-agent
Version: 1.0.3
Summary: Containerized CRC-LNM research-assistance MCP for Nexent
Requires-Python: <3.14,>=3.12
Description-Content-Type: text/markdown
Requires-Dist: mcp[cli]<2,>=1.27
Requires-Dist: numpy<3,>=2.1
Requires-Dist: pandas<3,>=2.2
Requires-Dist: pydantic<3,>=2.11
Requires-Dist: pyyaml<7,>=6
Requires-Dist: scikit-learn<2,>=1.6
Requires-Dist: imbalanced-learn<1,>=0.13
Requires-Dist: jinja2<4,>=3.1
Requires-Dist: torch<3,>=2.9
Requires-Dist: starlette<1,>=0.40
Requires-Dist: uvicorn[standard]<1,>=0.30
Provides-Extra: mcp
Requires-Dist: mcp[cli]<2,>=1.27; extra == "mcp"
Requires-Dist: numpy<3,>=2.1; extra == "mcp"
Requires-Dist: pandas<3,>=2.2; extra == "mcp"
Requires-Dist: pydantic<3,>=2.11; extra == "mcp"
Requires-Dist: pyyaml<7,>=6; extra == "mcp"
Requires-Dist: scikit-learn<2,>=1.6; extra == "mcp"
Requires-Dist: imbalanced-learn<1,>=0.13; extra == "mcp"
Requires-Dist: jinja2<4,>=3.1; extra == "mcp"
Requires-Dist: torch<3,>=2.9; extra == "mcp"
Provides-Extra: validation
Requires-Dist: httpx<1,>=0.28; extra == "validation"
Requires-Dist: mypy<2,>=1.17; extra == "validation"
Requires-Dist: psutil<8,>=7; extra == "validation"
Requires-Dist: pytest<9,>=8.3; extra == "validation"
Requires-Dist: pytest-cov<7,>=6; extra == "validation"
Requires-Dist: ruff<1,>=0.12; extra == "validation"
Requires-Dist: types-PyYAML<7,>=6.0.12; extra == "validation"

# CRC-LNM Multimodal Research Assistant MCP

This MCP server provides a six-tool, research-assistance workflow for allowlisted,
deidentified CRC-LNM cases. It accepts only precomputed 1409-dimensional CT features,
768-dimensional pathology features, and four clinical values. It does not accept raw
imaging files, file paths, or external feature vectors.

## ModelScope Hosted STDIO Configuration

Publish the wheel to PyPI before selecting ModelScope hosted STDIO deployment. The
first and only server configuration is valid JSON without comments and uses the PyPI
package rather than repository files or local paths.

```json
{
  "mcpServers": {
    "crc-lnm-research-assistant": {
      "command": "uvx",
      "args": [
        "crc-lnm-medical-agent"
      ]
    }
  }
}
```

The console entry point defaults to STDIO, allowing ModelScope to use its minimal
allowlisted `uvx crc-lnm-medical-agent` command without application arguments. The
published wheel contains the immutable model bundle and trusted release JSONL.
On first launch it creates a verified case-package cache and transient artifacts in a
writable system cache directory. No local path argument is required. Set
`CRC_LNM_MCP_RUNTIME_ROOT` only when an operator needs a different writable cache
location.

## Verification Order

1. Build and inspect the wheel, then run the console entry point from an unrelated
   working directory.
2. Publish the verified wheel to PyPI and start it with the exact `uvx` command above.
3. Let ModelScope complete `list_tools`, then manually test each required tool.
4. Obtain the ModelScope URL, add it as a Nexent custom MCP service, enable the six
   tools, debug the agent, and verify a post-publication question.

`docs/PLATFORM_DEPLOYMENT.md` covers the separate authenticated Streamable HTTP
container path. `使用说明.md` documents the local release workflow and constraints.
