Skip to content

Rhea

PyPI - Version Docker Pulls coverage tests

A scalable MCP (Model Context Protocol) tool framework to serve thousands of biomedical tools for Large Language Models.

Example executions with Claude:

How it works?

The MCP server first provides a single tool, find_tools which accepts a natural language query to select relevant tools. For example, an LLM (or user) can provide a query of "I need a tool to convert a CSV file to tabular.", which the server will then perform a RAG on a collection of tools to populate the server with n most relevant tools to the query. Once the server is populated, the LLM/user will have access to those relevant tools, along with their parameter annotations and documentations.

To provide file inputs/outputs with the tool agents, we utilize ProxyStore with a Redis backend, providing keys to the tool when a file input is required.

When a tool is called, the server utilizes Parsl to spawn an Academy agent that creates an environment for the tool, installing necessary requirements and pulling program files from a S3 object store. The agent will be provided the arguments provided by the MCP server, and return its stdout/stderr along with any output files as ProxyStore keys.

Setup

Requirements

  • uv - Package manager for Python projects.
  • docker - To run tools locally (external executor comming soon!)

Additionally, the server will need to point to an existing OpenAI-like endpoint (for embedding), Postgres, Redis, and MinIO server. Documentation coming soon.

Instalation

After cloning the repository, use uv to configure the virtual environment.

uv sync

Configuring Environment

An example .env file is provided in .env.example. Datasets coming soon!

Installing into Claude Desktop

In your claude_desktop_config.json file, add the following entry (Make sure to replace location_of_repo with the actual location!):

macOS/Linux

{
  "mcpServers": {
    "Rhea": {
        "command": "bash",
        "args": [
            "-lc",
            "cd location_of_repo && uv run -m server.mcp_server"
        ]
    }
  }
}

Windows (WSL)

{
  "mcpServers": {
    "Rhea": {
        "command": "wsl.exe",
        "args": [
            "bash",
            "-lc",
            "cd location_of_repo && uv run -m server.mcp_server"
        ]
    }
  }
}

Testing with MCP Inspector

To test the tools with MCP Inspector:

npx @modelcontextprotocol/inspector

And set the following configuration parameters:

Parameter Value
Transport Type STDIO
Command uv
Arguments run -m server.mcp_server
Request Timeout 600000
Reset Timeouts on Progress True
Maximum Total Timeout 600000
Proxy Session Token Token provided within CLI

Note: The timeouts are a temporary workaround to make sure the MCP client does not timeout during long tool executions. Better progress reporting is coming soon.

Running with SSE Transport

By default, the MCP server will start with STDIO transport for use with Claude Desktop. To enable SSE transport layer:

uv run -m rhea.server.mcp_server --transport sse

Running with Streamable HTTP

Work in progress!