MCP Server

ctx

io.github.vanshulgoyal101/ctx
Developer Tools Knowledge & Documentation Public & reachable MCP 2026-07-28

What this MCP does

Packs and searches GitHub repositories and documentation sites into agent-ready context, with file retrieval and documentation crawling.

get_file
Return the full text of a single file in a repository, by path. Use after list_files or search_context to drill in.
Input schema
{'type': 'object', 'required': ['repo', 'path'], 'properties': {'ref': {'type': 'string', 'description': 'Optional branch, tag or commit SHA (defaults to the default branch).'}, 'path': {'type': 'string', 'description': 'File path within the repo.'}, 'repo': {'type': 'string', 'description': 'A GitHub repo as "owner/repo" or a github.com URL.'}}}
list_files
List the text files ctx would include for a repository (after stripping binaries, lockfiles and build dirs), with their byte sizes. Cheap way for an agent to see the layout before packing.
Input schema
{'type': 'object', 'required': ['repo'], 'properties': {'ref': {'type': 'string', 'description': 'Optional branch, tag or commit SHA (defaults to the default branch).'}, 'repo': {'type': 'string', 'description': 'A GitHub repo as "owner/repo" or a github.com URL.'}, 'exclude': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional glob patterns (support **, *, ?).'}, 'include': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional glob patterns (support **, *, ?).'}}}
pack_docs
Crawl a documentation site from a start URL and return it as one agent-ready context blob: each page extracted to clean Markdown, concatenated with its URL. Stays within the same site section; bounded by depth and page count. Use max_tokens to fit a budget.
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'The absolute http(s) URL to start crawling from (e.g. a docs index).'}, 'depth': {'type': 'number', 'description': 'How many link hops to follow (0–3, default 1).'}, 'max_pages': {'type': 'number', 'description': 'Max pages to fetch (1–30, default 10).'}, 'max_tokens': {'type': 'number', 'description': 'Stop adding pages once the estimate exceeds this many tokens.'}}}
pack_repo
Fetch a GitHub repository and return it as one agent-ready context blob: text files concatenated with clear "==== path ====" headers, binaries/lockfiles/build dirs stripped, with a token estimate. Use include/exclude globs to focus, and max_tokens to fit a budget.
Input schema
{'type': 'object', 'required': ['repo'], 'properties': {'ref': {'type': 'string', 'description': 'Optional branch, tag or commit SHA (defaults to the default branch).'}, 'repo': {'type': 'string', 'description': 'A GitHub repo as "owner/repo" or a github.com URL.'}, 'exclude': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional glob patterns (support **, *, ?).'}, 'include': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional glob patterns (support **, *, ?).'}, 'max_tokens': {'type': 'number', 'description': 'Stop adding files once the estimate exceeds this many tokens.'}}}
search_context
Search a GitHub repository and return only the passages that match a query — each with its file path, line number and a relevance score. Far more token-efficient than pack_repo when you need a specific detail (e.g. "where is auth handled?").
Input schema
{'type': 'object', 'required': ['repo', 'query'], 'properties': {'ref': {'type': 'string', 'description': 'Optional branch, tag or commit SHA (defaults to the default branch).'}, 'repo': {'type': 'string', 'description': 'A GitHub repo as "owner/repo" or a github.com URL.'}, 'query': {'type': 'string', 'description': 'Space-separated search terms; matching is case-insensitive.'}, 'exclude': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional glob patterns (support **, *, ?).'}, 'include': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional glob patterns (support **, *, ?).'}, 'max_matches': {'type': 'number', 'description': 'Max passages to return (1–50, default 5).'}, 'context_chars': {'type': 'number', 'description': 'Per-passage character budget (80–4000, default 500).'}}}
search_docs
Crawl a documentation site and return only the passages that match a query — each with its page URL, line and a relevance score. Token-efficient way to answer a question from docs without packing the whole site.
Input schema
{'type': 'object', 'required': ['url', 'query'], 'properties': {'url': {'type': 'string', 'description': 'The absolute http(s) URL to start crawling from.'}, 'depth': {'type': 'number', 'description': 'How many link hops to follow (0–3, default 1).'}, 'query': {'type': 'string', 'description': 'Space-separated search terms; matching is case-insensitive.'}, 'max_pages': {'type': 'number', 'description': 'Max pages to fetch (1–30, default 10).'}, 'max_matches': {'type': 'number', 'description': 'Max passages to return (1–50, default 5).'}, 'context_chars': {'type': 'number', 'description': 'Per-passage character budget (80–4000, default 500).'}}}
Added
search_docs
Sept. 17, 2026, 12:52 p.m.
Added
pack_docs
Sept. 17, 2026, 12:52 p.m.
Added
get_file
Sept. 17, 2026, 12:52 p.m.
Added
list_files
Sept. 17, 2026, 12:52 p.m.
Added
search_context
Sept. 17, 2026, 12:52 p.m.
Added
pack_repo
Sept. 17, 2026, 12:52 p.m.