Skip to main content
Glama
README.md
# propaths-mcp

An [MCP](https://modelcontextprotocol.io) server that exposes the **ProPaths**
verified protein-interactome as read-only tools for AI agents. It is a thin
client over the public ProPaths API (`https://www.propaths.net`), so every tool
returns exactly the API's JSON. No account, no API key.

ProPaths reads a protein's primary literature and returns a verified graph of
**typed, directed, mechanistic** interactions plus a pathway ontology. One
protein (ATXN3) is fully mapped today.

## Quickstart (Claude Desktop / any MCP client)

Add this to your MCP client config. `uvx` fetches and runs the server; nothing
to clone or install.

```json
{
  "mcpServers": {
    "propaths": {
      "command": "uvx",
      "args": ["propaths-mcp"]
    }
  }
}
```

Then ask, e.g., *"search ProPaths for SCA3 and summarize its strongest
mechanistic interaction."* The agent will call `search_proteins` then
`get_protein`, and drill in with `get_interaction`.

Prefer the raw API? It is public and keyless:

```bash
curl https://www.propaths.net/api/protein/ATXN3
curl 'https://www.propaths.net/api/search?q=SCA3'
```

## Tools

| Tool | What it does |
|------|--------------|
| `search_proteins(q, limit=20)` | Find a protein by symbol, alias, or name (start here) |
| `get_protein(symbol)` | Compact interactome overview (the main entry point) |
| `get_interaction(interaction_id, query=None)` | One interaction's full mechanism + evidence |
| `get_interaction_between(a, b)` | The interaction(s) between two proteins, in one call |
| `list_interactions(symbol, kind=, type=, pathway=, min_evidence=, sort=, limit=)` | Filtered/sorted headline rows |
| `list_interaction_types()` | The controlled vocabulary (edge kinds, types, directions) + counts |
| `get_pathway(pathway_id)` | A pathway node with its lineage and member interactions |
| `get_pathway_tree()` | The full pathway scaffold (resolves pathway ids to names) |
| `get_highlights()` | The best-evidenced interactions |
| `export_network(symbol, format="tsv")` | Export a protein's network as TSV / SIF / GraphML (Cytoscape, networkx) |
| `describe_schema()` | The graph vocabulary + how to use the tools (offline) |

Also exposed as MCP **resources** (`propaths://schema`, `propaths://interaction-types`,
`propaths://pathways/tree`, and the `propaths://protein/{symbol}` template) and
**prompts** (`profile-protein`, `strongest-evidence`, `explain-pathway`).

All tools are read-only and idempotent.

## Configuration

| Env var | Default | Purpose |
|---------|---------|---------|
| `PROPATHS_API_URL` | `https://www.propaths.net` | API base URL. Point at `http://localhost:8000` to run against a local API. |

## Run without uvx

```bash
pip install propaths-mcp
propaths-mcp            # runs the stdio server
# or: python -m propaths_mcp
```

Before it is published, you can run straight from the repo:

```bash
uvx --from git+https://github.com/Tahsin-Kazi/propaths-mcp propaths-mcp
```

## Notes

- Read-only and public; reads are rate-limited per client. Write/enrichment
  access and a hosted MCP are gated. Get in touch.
- Errors are graceful: a missing protein returns `{"error": "...", "status": 404}`;
  an unreachable API raises with a hint.

Docs: <https://www.propaths.net/quick-start> · License: MIT

TDQS

A4.4/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search_proteins for finding proteins, get_protein for overview, get_interaction for deep detail, list_interactions for filtered lists, get_pathway/get_pathway_tree for pathway navigation, export_network for output, and describe_schema for guidance. Even closely related tools like get_interaction_between and get_interaction are differentiated by their argument (pair vs. ID) and described usage.

Naming Consistency5/5

All tool names follow a consistent get_/list_/search_/export_/describe_ + noun pattern, all in snake_case. The verb clearly indicates the action (get for single resource, list for collection, search for prefix query, export for output, describe for metadata) and the noun identifies the resource (protein, interaction, pathway, network, schema).

Tool Count5/5

11 tools is well within the recommended 3-15 range and each tool addresses a specific need for exploring a biological interaction graph. The count feels neither thin nor bloated—there are distinct entry points, filtering utilities, vocabulary support, and export functionality without redundant overlaps.

Completeness5/5

The tool surface covers the full read-only lifecycle of the domain: find a protein (search_proteins), get overview (get_protein), drill into details (get_interaction), filter (list_interactions), navigate pathways (get_pathway, get_pathway_tree), discover vocabularies (list_interaction_types), get curated highlights (get_highlights), and export (export_network). The inclusion of describe_schema ensures agents can self-orient, and there are no obvious dead ends—every tool's output either stands alone or provides IDs that are directly consumed by other tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues