Atlas / MCP servers / dbcls / togomcp

togomcpCAUTION

mcp/dbcls/togomcp

MCP server for life-science knowledge graphs

Verdict
CAUTION
Grade
B
Trust score
80 /100
Exposed tools
5 5r · 0w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
18
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

An MCP (Model Context Protocol) server that gives AI assistants (Claude, etc.) access to biological and biomedical RDF databases via SPARQL at the RDF Portal, as well as selected REST APIs (NCBI E-utilities, UniProt, ChEMBL, PDB, Reactome, Rhea, MeSH, and more).

Quick Start: Remote Server (No Installation)

You can use the hosted TogoMCP server directly — no local setup needed. See https://togomcp.rdfportal.org/ for connection instructions.

Local Installation

Prerequisites

  • Python >= 3.11
  • uv package manager

1. Install uv

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

2. Clone and install

git clone https://github.com/dbcls/togomcp.git
cd togomcp
uv sync

3. Set NCBI API Key (required for NCBI tools)

Obtain your NCBI API key and export it:

export NCBI_API_KEY="your-key-here"

Configuration

Claude Desktop

Edit your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: ~\AppData\Roaming\Claude\claude_desktop_config.json
{
"mcpServers": {
"togomcp": {
"command": "/path/to/uv",
"args": [
"--directory",
"/path/to/togomcp",
"run",
"togo-mcp-local"
],
"env": {
"NCBI_API_KEY": "your-key-here"
}
}
}
}
Tip: Run which uv (macOS/Linux) or where uv (Windows) to find the full path
Read from source at commit 6933741f07e7OBSERVED · 2026-10-10
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add togo-mcp --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env ANTHROPIC_AUTH_TOKEN=${ANTHROPIC_AUTH_TOKEN} --env NCBI_API_KEY=${NCBI_API_KEY} --env TOGOMCP_STATS_PASSWORD=${TOGOMCP_STATS_PASSWORD} -- uvx togo-mcp
claude-desktop
{
  "mcpServers": {
    "togo-mcp": {
      "command": "uvx",
      "args": [
        "togo-mcp"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "ANTHROPIC_AUTH_TOKEN": "${ANTHROPIC_AUTH_TOKEN}",
        "NCBI_API_KEY": "${NCBI_API_KEY}",
        "TOGOMCP_STATS_PASSWORD": "${TOGOMCP_STATS_PASSWORD}"
      }
    }
  }
}
03

Exposed tools (5)

5 read · 0 write · 0 destructive.

ToolRiskDescription
TogoMCP_Usage_Guideread
get_compound_attributes_from_pubchemread
get_pubchem_compound_idread
get_sparql_endpointsreadGet the available SPARQL endpoints for RDF Portal.
mie-refreshreadBatch-build/revise MIE files (one mie-builder agent per database), then independently re-validate each against the live endpoint
04

Trust audit

CAUTIONgrade B · trust 80/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (9 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (25)

MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/disease-analysis
.claude/skills/disease-analysis
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/prism
.claude/skills/prism
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/research-article-analysis
.claude/skills/research-article-analysis
Why it matters. link not followed
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
scripts/check_mie_leakage.py:260
print(f"  !  STALE waiver {w['question']} / {w['database']} / {w['token']!r} "
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.claude/skills/benchmark-runner/scripts/run_benchmark.py:132
f"http://127.0.0.1:{port}/mcp", headers={"Accept": "text/event-stream"}), timeout=5)
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.claude/skills/benchmark-runner/scripts/run_benchmark.py:240
url = PRODUCTION_URL if args.target == "production" else f"http://127.0.0.1:{args.port}/mcp"
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/deploy.sh:134
code=$(curl -s -o /dev/null -w '%{http_code}' -H "Host: $host" "http://127.0.0.1:${port}/" 2>/dev/null || true)
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
benchmark/studies/conditions/run_conditions.py:185
help="question YAML paths (default: all ../../questions/question_*.yaml)")
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/test_kegg.py:748
await pathway_neighborhood(pathway=MAP, seeds="../../get/hsa:207")
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/test_workflows.py:163
"bad", ["../SKILL.md", "/etc/passwd", "references/../../x.md", "references/x.py", "C:\\x.md"]
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
benchmark/studies/ablation/run_ablation.py:228
url = f"http://127.0.0.1:{port}/mcp"
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
benchmark/studies/ablation/run_ablation.py:296
servers["togomcp"] = {"type": "http", "url": f"http://127.0.0.1:{port}/mcp"}
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
togo_mcp/server.py:1115
decoded = _base64.b64decode(header[6:]).decode("utf-8")
LOWObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
benchmark/studies/ablation/ablation_analysis.py:552
hdr += f" {'Δsparql':>8s} {'±95%CI':>7s} {'Δcost$':>7s}"
LOWObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
benchmark/studies/ablation/ablation_analysis.py:554
hdr += f" {'Δcorr':>7s}"
LOWObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
benchmark/studies/conditions/conditions_analysis.py:166
f"Δvs {REFERENCE}: {_fmt(delta, '+.2f')}")
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
togo_mcp/data/docs/togomcp-intro.html:1630
<llm-meta-widget llm-url="https://hub.aibranch.org" tool-hub-url="https://hub.aibranch.org" model="qwen3-8-27b-fast" hub-tools="TogoMCP" default-hub-tools="TogoMCP" auth-required="false" enable-model-
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
togo_mcp/data/resources/usage_guide_v7/02b_database_catalog.md:81
**Not an RDF Portal database — KEGG.** `database="kegg"` is invalid on `run_sparql` and `get_MIE_file`: KEGG has no SPARQL endpoint and no MIE. The `kegg_*` tools exist only on a local stdio server wh
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
togo_mcp/data/resources/usage_guide_v7/references/database-catalog.md:134
**Check your tool list before offering KEGG to the user.** KEGG is OFF BY DEFAULT. The `kegg_*` tools appear only on the local stdio server (`togo-mcp-local`) AND only when the operator sets `TOGOMCP_
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.claude/skills/intro-page-updater/references/make_intro.md:106
- **Antigravity CLI** ([config docs](https://antigravity.google/docs/mcp)) — the tab formerly labelled "Gemini CLI". **Gemini CLI was retired 2026-06-18** for the free tier, Google AI Pro, Ultra and G
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
CHANGELOG.md:2712
Google Cloud access, and paid Gemini API keys. The page had carried the old instructions for six
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
benchmark/README.md:182
`add_llm_evaluation.py` (the Opus judge) uses the plain `anthropic` SDK instead, which **requires** `ANTHROPIC_API_KEY` (or `ANTHROPIC_AUTH_TOKEN` / an `ant auth login` profile) — it does not read the
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
togo_mcp/data/docs/togomcp-intro-ja.html:1088
<p><strong>Gemini CLI was retired on 18 June 2026</strong> for the free tier, Google AI Pro, Ultra and Google One, and replaced by <strong>Antigravity CLI</strong>. If that is you, use the Antigravity
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
togo_mcp/data/docs/togomcp-intro.html:1088
<p><strong>Gemini CLI was retired on 18 June 2026</strong> for the free tier, Google AI Pro, Ultra and Google One, and replaced by <strong>Antigravity CLI</strong>. If that is you, use the Antigravity
Why it matters. asks the agent to read credentials
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:24
curl -LsSf https://astral.sh/uv/install.sh | sh

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha 6933741f07e7full audit observations/trust-audit/mcp-server/dbcls__togomcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-106933741f07e7CAUTIONB80first audit
06

Questions

What is the togomcp MCP server?

MCP server for life-science knowledge graphs

What tools does togomcp expose?

5 in total: 5 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is togomcp safe to connect to an agent?

With care. The audit graded it B (80/100) and found 25 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does togomcp need?

It reads ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, NCBI_API_KEY and TOGOMCP_STATS_PASSWORD from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does togomcp run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on PyPI as togo-mcp.

How current is this page?

The grade is for one exact copy of the source (6933741f07e7), read on 2026-10-10. The repository is watched and re-audited when it changes.

Advertisement