Koskamo

BioCosm MCP

An MCP server that allows AI agents to query BioCosm's biotech data including drugs, targets, diagnostics, probability-of-success estimates, revenue, trials, and analytical writeups with citations.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

BioCosm MCP logo, by BioCosmCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by BioCosm
MCP endpoint (Streamable HTTP)
https://biocosm-mcp.fly.dev/mcp
Vendor documentation

What its tools do

13 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

13 of 13 have a description · 0 of 13 declare behavior hints · 11 of 11 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Find KRAS inhibitors in phase 2 and their probability of success
  • Get mechanism, revenue, and trial outcomes for pembrolizumab
  • List approved BTK inhibitors and which companies make them
  • Pull writeup and citations for a drug targeting PCSK9

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
BioCosm 3.4.4
MCP protocol negotiated in check
2025-11-25
Tools
13 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "logging": {},
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "subscribe": false,
    "listChanged": true
  },
  "extensions": {
    "io.modelcontextprotocol/ui": {}
  },
  "experimental": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Explore thousands of biotech drugs, diagnostics, gene targets, and pipeline compounds. Nodes carry structured metadata; many also have full analytical writeups (summary, mechanism, trial design, probability-of-success estimate, risks, assessment) with citations, and link to targets, companies, revenue, and trial outcomes. Start with search_nodes, then get_node / get_writeup; find_by_phase, find_by_target, and get_company_portfolio handle portfolio queries; get_coverage reports what data is and isn't populated. IMPORTANT - read before relying on anything: BioCosm is an AI-powered, automatically generated research tool. Despite substantial data-quality engineering (cross-source checks, citation verification, deduplication), individual facts may be incomplete, out of date, or outright wrong. Coverage is uneven - e.g. only ~100 drugs have revenue data, and PoS scores cover pipeline drugs. An empty or missing field means 'not in BioCosm's data,' NEVER a real-world zero. Treat everything as a research starting point, verify against primary sources (ClinicalTrials.gov, FDA, SEC filings), and note this is not investment or medical advice.

Tools

13 advertised

search_nodes
Advertised by the server during the last successful anonymous check.

Search BioCosm nodes by name, gene symbol, target, therapeutic area, or company. Results are ranked: exact name/brand matches first, then partial name matches, with a node-type prior (canonical drug/diagnostic nodes rank above gene-target nodes, which rank above ChEMBL salt-form duplicates). Nodes matched only via description/company/area rank last. Each result includes a `name` field for disambiguation.

search_nodes input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 20,
      "description": "Maximum results to return (default 20, max 100)"
    },
    "query": {
      "type": "string",
      "description": "Search term (e.g. \"breast cancer\", \"pembrolizumab\", \"Merck\")"
    }
  },
  "additionalProperties": false
}
search_nodes output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "x-fastmcp-wrap-result": true
}
get_node
Advertised by the server during the last successful anonymous check.

Get full details for a single BioCosm node: identity and all name aliases, classification, gene targets and mechanism, therapeutic areas, companies, revenue history where available (sparse: ~100 drugs, mostly blockbusters, as annualized quarterly estimates; source links when present), probability-of- success predictions for pipeline drugs (with confidence intervals and contributing factors), structured clinical trial outcomes, external cross-references, and writeup availability. Empty fields mean "not in BioCosm's coverage," NOT zero or absent in reality.

get_node input schema
{
  "type": "object",
  "required": [
    "node_id"
  ],
  "properties": {
    "node_id": {
      "type": "string",
      "description": "The node identifier (e.g. \"pembrolizumab\", \"trastuzumab\")"
    }
  },
  "additionalProperties": false
}
get_node output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "x-fastmcp-wrap-result": true
}
get_writeup
Advertised by the server during the last successful anonymous check.

Get the full writeup for a BioCosm node, including all sections, citations, structured data, and validation score.

get_writeup input schema
{
  "type": "object",
  "required": [
    "node_id"
  ],
  "properties": {
    "node_id": {
      "type": "string",
      "description": "The node identifier (e.g. \"pembrolizumab\")"
    }
  },
  "additionalProperties": false
}
get_writeup output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "x-fastmcp-wrap-result": true
}
list_by_therapeutic_area
Advertised by the server during the last successful anonymous check.

List all nodes in a given therapeutic area.

list_by_therapeutic_area input schema
{
  "type": "object",
  "required": [
    "area"
  ],
  "properties": {
    "area": {
      "type": "string",
      "description": "Therapeutic area to search (e.g. \"breast cancer\", \"non-small cell lung cancer\")"
    },
    "limit": {
      "type": "integer",
      "default": 50,
      "description": "Maximum results (default 50)"
    }
  },
  "additionalProperties": false
}
list_by_therapeutic_area output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "x-fastmcp-wrap-result": true
}
get_company_portfolio
Advertised by the server during the last successful anonymous check.

Get a company's full drug/diagnostic portfolio from BioCosm.

get_company_portfolio input schema
{
  "type": "object",
  "required": [
    "company_name"
  ],
  "properties": {
    "company_name": {
      "type": "string",
      "description": "Company name (e.g. \"Merck\", \"Roche\", \"Illumina\")"
    }
  },
  "additionalProperties": false
}
get_company_portfolio output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "x-fastmcp-wrap-result": true
}
get_stats
Advertised by the server during the last successful anonymous check.

Get a high-level overview of the BioCosm database: total nodes, writeups, companies, breakdowns by type/status/domain, validation scores, and recent pipeline runs.

get_stats input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
get_stats output schema
{
  "type": "object",
  "additionalProperties": true
}
get_staleness_report
Advertised by the server during the last successful anonymous check.

Get writeup staleness report: overall stats, top stale nodes, data source freshness.

get_staleness_report input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 20,
      "description": "Number of top stale nodes to return (default 20)"
    }
  },
  "additionalProperties": false
}
get_staleness_report output schema
{
  "type": "object",
  "additionalProperties": true
}
get_node_freshness
Advertised by the server during the last successful anonymous check.

Get freshness details for a single node: writeup age, enrichment hash match, staleness score, validation score.

get_node_freshness input schema
{
  "type": "object",
  "required": [
    "node_id"
  ],
  "properties": {
    "node_id": {
      "type": "string",
      "description": "The node identifier (e.g. \"pembrolizumab\")"
    }
  },
  "additionalProperties": false
}
get_node_freshness output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "x-fastmcp-wrap-result": true
}
find_by_target
Advertised by the server during the last successful anonymous check.

Find all drugs that target a specific gene/protein.

find_by_target input schema
{
  "type": "object",
  "required": [
    "target_gene"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 50,
      "description": "Maximum results (default 50, max 200)"
    },
    "target_gene": {
      "type": "string",
      "description": "Gene symbol or target name (e.g. \"EGFR\", \"KRAS\", \"PD-1\")"
    }
  },
  "additionalProperties": false
}
find_by_target output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "x-fastmcp-wrap-result": true
}
find_by_phase
Advertised by the server during the last successful anonymous check.

List drugs/diagnostics at a specific clinical phase.

find_by_phase input schema
{
  "type": "object",
  "required": [
    "phase"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 100,
      "description": "Maximum results (default 100, max 500)"
    },
    "phase": {
      "type": "string",
      "description": "One of \"approved\", \"on_market\", \"phase3\", \"phase2\", \"phase1\",\n   \"in_development\", \"cleared\", \"ldt\", \"ruo\""
    },
    "node_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional filter — \"drug\", \"pipeline\", \"diagnostic\", \"target\""
    }
  },
  "additionalProperties": false
}
find_by_phase output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    }
  },
  "x-fastmcp-wrap-result": true
}
find_related
Advertised by the server during the last successful anonymous check.

Find nodes connected to a given node. Three relationship types are derived on-the-fly: - "drug_target": for a drug, the targets it hits (and vice versa for a target node, the drugs that hit it) - "same_company": drugs sharing a company with this node - "same_target_class": drugs with the same mechanism_class

find_related input schema
{
  "type": "object",
  "required": [
    "node_id"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 30,
      "description": "Maximum results per link type (default 30)"
    },
    "node_id": {
      "type": "string",
      "description": "Source node identifier"
    },
    "link_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional filter — one of \"drug_target\", \"same_target_class\",\n       \"same_company\". If None, returns all three groups."
    }
  },
  "additionalProperties": false
}
find_related output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "x-fastmcp-wrap-result": true
}
get_pos_score
Advertised by the server during the last successful anonymous check.

Get the Probability of Success estimate for a node, including the base rate, adjustment factors with reasoning, confidence interval, and model version. Returns None for nodes without a PoS score (typically only late-stage pipeline drugs are scored).

get_pos_score input schema
{
  "type": "object",
  "required": [
    "node_id"
  ],
  "properties": {
    "node_id": {
      "type": "string",
      "description": "Node identifier"
    }
  },
  "additionalProperties": false
}
get_pos_score output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "x-fastmcp-wrap-result": true
}
get_coverage
Advertised by the server during the last successful anonymous check.

Report BioCosm's actual data coverage so you never mistake missing data for a real-world zero. An empty or absent field on a node means "not in BioCosm's data," never a true zero. BioCosm is AI-generated and may contain errors.

get_coverage input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
get_coverage output schema
{
  "type": "object",
  "additionalProperties": true
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
584 ms
95th percentile latency
584 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 584 ms · metadata changed · 13 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http biocosm-mcp https://biocosm-mcp.fly.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add biocosm-mcp --url https://biocosm-mcp.fly.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable biocosm-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "biocosm-mcp": {
      "url": "https://biocosm-mcp.fly.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "biocosm-mcp": {
      "type": "streamableHttp",
      "url": "https://biocosm-mcp.fly.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start biocosm-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "biocosm-mcp": {
      "type": "http",
      "url": "https://biocosm-mcp.fly.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http biocosm-mcp https://biocosm-mcp.fly.dev/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://biocosm-mcp.fly.dev/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "biocosm-mcp": {
      "serverUrl": "https://biocosm-mcp.fly.dev/mcp"
    }
  }
}

Let your agent find its tools

Find servers like BioCosm MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.