ctx
Turn a GitHub repo or docs site into agent-ready context: pack it or search it, over MCP.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"ctx": {
"url": "https://ctx.vanshul.com/mcp"
}
}
}リモートエンドポイント
https://ctx.vanshul.com/mcpstreamable-httpできること
ツール一覧
ツール(6)
🔴pack_repo(repo, ref, include, exclude, max_tokens)
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.
入力スキーマ
{
"type": "object",
"properties": {
"repo": {
"type": "string",
"description": "A GitHub repo as \"owner/repo\" or a github.com URL."
},
"ref": {
"type": "string",
"description": "Optional branch, tag or commit SHA (defaults to the default branch)."
},
"include": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional glob patterns (support **, *, ?)."
},
"exclude": {
"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."
}
},
"required": [
"repo"
]
}🟢search_context(repo, query, ref, include, exclude, ...)
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?").
入力スキーマ
{
"type": "object",
"properties": {
"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."
},
"ref": {
"type": "string",
"description": "Optional branch, tag or commit SHA (defaults to the default branch)."
},
"include": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional glob patterns (support **, *, ?)."
},
"exclude": {
"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)."
}
},
"required": [
"repo",
"query"
]
}🟢list_files(repo, ref, include, exclude)
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.
入力スキーマ
{
"type": "object",
"properties": {
"repo": {
"type": "string",
"description": "A GitHub repo as \"owner/repo\" or a github.com URL."
},
"ref": {
"type": "string",
"description": "Optional branch, tag or commit SHA (defaults to the default branch)."
},
"include": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional glob patterns (support **, *, ?)."
},
"exclude": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional glob patterns (support **, *, ?)."
}
},
"required": [
"repo"
]
}🟢get_file(repo, path, ref)
Return the full text of a single file in a repository, by path. Use after list_files or search_context to drill in.
入力スキーマ
{
"type": "object",
"properties": {
"repo": {
"type": "string",
"description": "A GitHub repo as \"owner/repo\" or a github.com URL."
},
"path": {
"type": "string",
"description": "File path within the repo."
},
"ref": {
"type": "string",
"description": "Optional branch, tag or commit SHA (defaults to the default branch)."
}
},
"required": [
"repo",
"path"
]
}⚪pack_docs(url, depth, max_pages, max_tokens)
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.
入力スキーマ
{
"type": "object",
"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."
}
},
"required": [
"url"
]
}🟢search_docs(url, query, depth, max_pages, max_matches, ...)
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.
入力スキーマ
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The absolute http(s) URL to start crawling from."
},
"query": {
"type": "string",
"description": "Space-separated search terms; matching is case-insensitive."
},
"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_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)."
}
},
"required": [
"url",
"query"
]
}コミュニティ
エビデンス