# trip2g MCP server

Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-trip2g-trip2g
- Repository: https://github.com/trip2g/trip2g
- Website: https://trip2g.com

## Install
- Endpoint: https://trip2g.com/_system/mcp
- Auth: Not captured

## Setup notes
- Remote endpoint: https://trip2g.com/_system/mcp

## Tools
- search - Search notes by query. Returns snippets with a heading breadcrumb (title > section > subsection) that locates the approximate section, plus a precise toc_path per match. Each result carries note_path (string) and note_id (integer); each match carries match_id (string, form "p<pid>:c<chunk>"). Drill-down workflow: 1) search to find the approximate section via the breadcrumb; 2) call note_html(path=<result.note_path>, toc_path=[...]) to read the matched section, or expand(path=<result.note_path>, toc_path=[...]) to navigate the note's structure level by level; 3) note_html(path=<result.note_path>, match_id=<match.match_id>) for a focused chunk window. Endpoint: https://trip2g.com/_system/mcp
- similar - Find related notes from a known note reference. Preferred: path (a search result's note_path field). Use this after opening a promising note when you need nearby context. Endpoint: https://trip2g.com/_system/mcp
- note_html - Read a note. Canonical calls, copying fields verbatim from a search result: search(query) -> note_html(path=<result.note_path>) reads the whole note; search(query) -> note_html(match_id=<match.match_id>) reads just the focused chunk around a hit (cheaper, targeted); expand(path=<result.note_path>, toc_path=[...]) -> note_html(path=<result.note_path>, toc_path=[...]) reads one exact section. Only pass pid/note_id if you already copied that exact integer from a result's note_id field — never invent one. path is a string like "concepts/x.md"; match_id is "p<pid>:c<chunk>"; a value like ":" or "/hub/goethe.md" is a PATH, not a note_id. Endpoint: https://trip2g.com/_system/mcp
- expand - Walk a note's table of contents level by level (progressive disclosure). Canonical call: expand(path=<result.note_path>, toc_path=[...]) — copy path verbatim from a search result's note_path field. Returns the direct children of a TOC node: omit toc_path (or pass []) for the top-level sections, or pass a toc_path to list that section's subsections. Each child has title, level, path, and has_children. Drill down with expand, then read a leaf with note_html(path=..., toc_path=[...]) — no need to load the whole note or its full flat TOC. Endpoint: https://trip2g.com/_system/mcp
- federated_search - Search connected knowledge bases. Returns snippets with heading breadcrumbs (title > section > subsection) and a precise toc_path per match, same as search; results also carry an absolute kb_id (string) to use verbatim on follow-up calls. Pass kb_id for one base, kb_ids for selected bases, or omit both to fan out. Nested bases are addressed with '/': kb_id "philosophers/nietzsche" routes through the 'philosophers' peer to the base it federates (recursive), up to 3 levels deep. Canonical call: federated_search(kb_id="philosophers/<author>", query) -> federated_note_html(kb_id="philosophers/<author>", path=<result.note_path>) — the standard way to descend into a leaf corpus and read real content, not hub cards. Endpoint: https://trip2g.com/_system/mcp
- federated_similar - Find remote notes similar to a known note reference inside a connected knowledge base. Preferred: path (a federated_search result's note_path field). Endpoint: https://trip2g.com/_system/mcp
- federated_note_html - Read a remote note inside a connected knowledge base. Canonical call, copying fields verbatim from a federated_search result: federated_search(kb_id="philosophers/<author>", query) -> federated_note_html(kb_id="philosophers/<author>", path=<result.note_path>) — the standard way to descend into a leaf corpus and read real content there, not hub cards. federated_note_html(kb_id=..., match_id=<match.match_id>) reads just the focused chunk around a hit. Only pass pid/note_id if you already copied that exact id from a result. path is a string like "concepts/x.md"; match_id is "p<pid>:c<chunk>"; a value like ":" or "/hub/goethe.md" is a PATH, not a note_id. Endpoint: https://trip2g.com/_system/mcp
- federated_expand - Walk a remote note's table of contents level by level inside a connected knowledge base (progressive disclosure), same as expand. Canonical call: federated_expand(kb_id=..., path=<result.note_path>, toc_path=[...]). Omit toc_path for the top level, or pass a toc_path to list that node's subsections. Endpoint: https://trip2g.com/_system/mcp
- federated_instructions - Fetch the instructions/guidance for a federated knowledge base by kb_id (e.g. "philosophers/nietzsche") — read a base's own conventions before searching it. Nested bases are addressed with '/' and the call routes through each peer recursively. Endpoint: https://trip2g.com/_system/mcp
- instructions - Full tool reference for the trip2g documentation base Endpoint: https://trip2g.com/_system/mcp
- wiki - Wiki Knowledge Base Instructions Endpoint: https://trip2g.com/_system/mcp

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: io.github.trip2g
- Version: 1.0.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jul 19, 2026
- Source: https://registry.modelcontextprotocol.io
