Productivity
trip2g.com
A tool for searching, reading, and exploring notes and connected knowledge bases.
ENDPOINT 1
https://trip2g.com/_system/mcp
MCP server metadata
- Name
- trip2g-mcp
- Version
- 1.0.0
You are connected to the trip2g documentation base (trip2g.com). trip2g is a Markdown publishing platform: it turns an Obsidian vault into a website with subscriptions, Telegram publishing, and this MCP server for AI agents. This base holds the trip2g user guides (`en/user/`, `ru/user/`), the changelog, developer docs (`dev/`), and design plans (`plans/`). Answer from retrieved sources, not memory. Follow the loop below: it keeps every read to one section (~300 tokens) instead of a whole note (3,000+). ## The retrieval loop 1. `search(query)` — up to 6 results; the top 3 carry `matches[]`, each with a `snippet` and a `toc_path` (breadcrumb to the matching section). 2. Read only that section: `note_html(pid=<note_id>, toc_path=<match.toc_path>)`. 3. Pointer looks off, or you want to survey the note first? `expand(pid=N)` lists its top-level sections; `expand(pid=N, toc_path=["Section"])` lists that section's subsections. Descend to a leaf, then read it with `note_html(toc_path=...)`. 4. Read a whole note (`note_html(pid=N)` with no `toc_path`) only when `expand` shows it has no sections. Worked example — the user asks "how do I connect a private federation peer?": ``` search("private federation peer HMAC secret") → 1. MCP Federation, note_id=658, match toc_path=["Adding a private peer (two-step exchange)"] note_html(pid=658, toc_path=["Adding a private peer (two-step exchange)"]) → one section; answer from it, cite https://trip2g.com/en/user/federation ``` ## Other tools — one-line triggers - `similar(pid=N)` — you found one good note and want its neighbors. Example: after the federation guide, `similar(pid=658)` surfaces the protocol guide and the RU twin. - `federated_search(query)` — local `search` found nothing relevant, or a result had `kind: "federation_kb"` (a pointer to a connected base). It fans the query out across all connected bases; pass `kb_id="..."` to target one. Nested bases use `/`: `kb_id="philosophers/nietzsche"` routes through the `philosophers` peer into the base it federates (recursive), up to 3 levels deep by default (kb_id path segments; configurable via `mcp-federation-max-depth`) — a deeper path is rejected. A base reached _through_ a hub is addressed `<hub>/<base>` (a `philosophers` hub note advertising `kb_id: montaigne` is `philosophers/montaigne` from here). Every result carries an absolute `kb_id` in your frame — use it verbatim. Follow-up reads go through `federated_note_html` / `federated_expand` / `federated_similar`, and each of those requires the `kb_id`. Canonical descent: `federated_search(kb_id="philosophers/<author>", query)` → `federated_note_html(kb_id="philosophers/<author>", path=<result.note_path>)` — the way to reach real content in a leaf corpus, not hub cards. Call the `instructions` tool for the full argument reference. ## Guardrails - Never open a note without `toc_path` (or `match_id`) on the first read. A section is ~10x cheaper and lands at the top of your context, where recall is best. - A wrong `toc_path` does not error — it silently returns the whole note. If a `note_html` response is much longer than one section, your pointer missed: stop, call `expand(pid=N)` to see the real headings, and re-read with an exact title from that list. - `toc_path` entries must match headings exactly, punctuation included. Copy them from `search` matches or `expand` children; never guess or translate them. - Prefer `toc_path` over `match_id`. A `match_id` gives a focused chunk window only in its `pN:cM` form; `pN:mM` ids do not resolve. - Ignore `demo/` notes — that is a Marcus Aurelius / Meditations showcase, not trip2g documentation — unless the user asks about the demo itself. - Ground answers only in sections you actually read, and cite the note URL. If the docs do not cover something, say so briefly. - Answer in the user's language. Guides exist as `en/user/` and `ru/user/` mirrors; prefer the one matching the user.
Known tools 10
federated_similarFind remote notes similar to a known note reference inside a connected knowledge base.
Inferred read-onlyfederated_expandWalk a remote note's table of contents level by level inside a connected knowledge base (progressive disclosure), same as expand.
Inferred read-onlyfederated_instructionsFetch the instructions/guidance for a federated knowledge base by kb_id (e.
Inferred read-onlyCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.trip2g-mcp]
url = "https://trip2g.com/_system/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"trip2g-mcp": {
"type": "http",
"url": "https://trip2g.com/_system/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: trip2g-mcp
Remote MCP URL: https://trip2g.com/_system/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"trip2g-mcp": {
"url": "https://trip2g.com/_system/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"trip2g-mcp": {
"type": "http",
"url": "https://trip2g.com/_system/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "trip2g-mcp",
"transport": "streamable-http",
"url": "https://trip2g.com/_system/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Loading Trust v2 evidence…
Checking the associated registrable domain. The BuiltWith key remains server-side.
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.