{
  "markdown": "# mosaic-mcp\n\n<!-- mcp-name: io.github.sourabhnk/mosaic-mcp -->\n\nPre-clinical drug discovery intelligence as an MCP server. Query 760+ drug targets, 70K+ compounds, 48K+ papers, 18K+ clinical trials, and 16K+ patents through 44 specialized tools — 16 free for discovery, 28 Pro for competitive landscapes, whitespace, and thesis-grade analysis.\n\n## Which one do you want?\n\n**This package is bring-your-own-database.** It is the MCP tool layer only —\nit ships the queries, not the data. You point it at a PostgreSQL instance you\ncontrol and it serves 44 tools over it. There is no public read-only\ncredential for Mosaic's knowledge graph, and earlier versions of these docs\nimplied otherwise.\n\n**If you want Mosaic's actual curated KG** — 760+ targets, 70K+ compounds,\n48K+ papers, 18K+ trials, 16K+ patents, kept current by a monthly refresh —\nuse the **hosted server** instead. It needs no database and no local install:\n\n- Remote MCP: `https://mcp.getmosaic.dev/sse`\n- Sign in / API keys: <https://getmosaic.dev>\n\n## Quick Start (self-hosted)\n\n```bash\npip install mosaic-mcp\n```\n\n### With Claude Desktop\n\nAdd to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"mosaic\": {\n      \"command\": \"mosaic-mcp\",\n      \"env\": {\n        \"DATABASE_URL\": \"postgresql://USER:PASSWORD@YOUR-HOST:5432/mosaic_db?sslmode=require\"\n      }\n    }\n  }\n}\n```\n\n### With Claude Code\n\n```bash\nclaude mcp add mosaic -- mosaic-mcp\n```\n\n### Standalone\n\n```bash\nexport DATABASE_URL=\"postgresql://...\"   # your own Postgres\nexport MOSAIC_API_KEY=\"msk_...\"          # Optional — for Pro tools\nmosaic-mcp                               # stdio transport\n```\n\nThis package is **stdio-only**. `--transport sse` exits with\n`NotImplementedError`; remote transport is served by the hosted endpoint\nabove, not by this package. The flag was previously documented as working.\n\n## Tools\n\n### Free Tier (16 tools) — discovery + workspace\n\n| Tool | Description |\n|------|-------------|\n| `mosaic_search_targets` | Search drug targets by name, gene symbol, or keyword |\n| `mosaic_get_target_profile` | Comprehensive target dossier (biology, compounds, scores) |\n| `mosaic_get_target_compounds` | Compounds tested against a target with SAR data |\n| `mosaic_get_target_patents` | Patent landscape for a target |\n| `mosaic_get_target_papers` | Literature for a target |\n| `mosaic_get_target_structure` | 3D structure and ligandability summary for a target |\n| `mosaic_kg_stats` | Knowledge graph overview statistics |\n| `mosaic_list_indications` | Available disease indications |\n| `mosaic_list_subindications` | Sub-indications within an indication area |\n| `mosaic_subindication_breakdown` | Per-target activity across sub-indications |\n| `mosaic_target_scores` | Target attractiveness scoring |\n| `mosaic_target_wishlist_add` | Add a target to your personal wishlist |\n| `mosaic_watchlist_create` | Create a watchlist |\n| `mosaic_watchlist_add_item` | Add an item to a watchlist |\n| `mosaic_watchlist_get` | Retrieve a watchlist |\n| `mosaic_watchlist_list` | List your watchlists |\n\n### Pro Tier (28 additional tools) — analysis + whitespace\n\nThe committed-verdict layer. Includes the whitespace and differentiation tools:\n`mosaic_synthetic_lethal_whitespace`, `mosaic_modality_gaps`,\n`mosaic_resistance_bypass_map`, `mosaic_find_undruggable_targets`,\n`mosaic_talent_migration`, `mosaic_emerging_signals`, and\n`mosaic_assess_druggability`.\n\nPlus the full analysis set: competitive landscape, pathway context, compound\nselectivity, indication landscape, target validation, clinical pipeline,\ncompound analogs, target comparison, similar-target search, opportunity\nfinding, organization portfolio, target network, mechanism of action, evidence\nmaps, relation search, polypharmacology, clinical trial results, FDA regulatory\nstatus, drug comparison, drug repurposing candidates, and KOL discovery.\n\n## Data Coverage\n\n| Entity | Count |\n|--------|-------|\n| Drug Targets | 764 (oncology + neuroscience + cardiovascular) |\n| Compounds | 71,512 |\n| Clinical Trials | 18,580 |\n| Papers | 48,773 |\n| Patents | 16,189 |\n| Semantic Relations | 13,704 |\n| Indications | 24,949 |\n| Organizations | 36,691 |\n\n<sub>Counts as of 2026-07-18. The live figures are always\n`mosaic_kg_stats`; run it rather than trusting this table. Targets went 802 →\n764 when duplicate and malformed rows were merged, and organizations\n153,852 → 36,691 when affiliation parsing was corrected — both are the count\ngetting more honest, not the corpus shrinking.</sub>\n\n## Configuration\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `DATABASE_URL` | Yes | PostgreSQL connection string — your own instance |\n| `MOSAIC_API_KEY` | No | API key for Pro tool access |\n| `MOSAIC_TIER` | No | Override tier (`free`, `pro`, `enterprise`) |\n\n## Changelog\n\nFull history in [CHANGELOG.md](CHANGELOG.md). Latest: **1.6.0** — adds\n`mosaic_start_here`, a free, ungated orientation tool that maps all 44 tools and\nstates plainly that this package is bring-your-own-database. Selected older\nentries below.\n\n### 1.2.0 — breaking change to the watchlist tools\n\n**`owner_key` must now be `anon:<token>`.** It was previously free text\ndocumented as \"user id, email, or `anon:<token>`\", which meant one caller\ncould name another and read their lists. A bare id or email is now refused.\n\nGenerate a random token, keep it, and pass the same one every time — it is\nwhat proves a list is yours. Calls that pass an email or bare id now fail\nwith a message telling you this; they do not silently return someone else's\ndata, which is what the old behaviour risked.\n\nAlso in 1.2.0:\n\n- Watchlist reads are owner-scoped **in the SQL**, so a watchlist UUID is no\n  longer sufficient for read or write access, and they are excluded from the\n  response cache (a cache hit would otherwise return before the ownership\n  check ran).\n- `mosaic_synthetic_lethal_whitespace` now returns `candidates` and\n  `coupled_unassessed` as two separate lists. Partners outside the curated\n  universe carry null counts instead of zeros — an unmeasured competitor\n  count previously read as \"no competition.\"\n- Project metadata now points at `getmosaic.dev`. 1.1.0 and earlier pointed\n  at a domain that is not ours.\n- Query/response layer resynced to the hosted server. This includes the\n  protein-protein-interaction reader fix: 1.1.0 counted PPIs from the legacy\n  `target_interactions` table, while the hosted server had already moved to\n  the populated `target_interactions_ext` table. Driven against hosted on\n  2026-07-19, EGFR reports 50 interactions at confidence 0.999; the 1.1.0\n  reader does not read that table for the profile count.\n\n## License\n\nApache 2.0 for the MCP server tools. The hosted knowledge graph data requires a subscription for Pro-tier access.\n",
  "bytes": 6793,
  "sha": "13370beaa6a3976b4b9c9f9aecca53267f750a641c6bee5eef5b101a389d5682",
  "repo_slug": "sourabhnk/mosaic-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_sourabhnk_mosaic_mcp_4ba569d9/readme"
}