github-code-rag-mcp
This server lets an AI agent search and learn from real GitHub repositories in real time, then reuse code and manage a local code index.
Search GitHub for repositories via the official API (
search_github) or an unlimited HTML fallback (web_search_github), sorted by stars and filterable by language/stars.Browse repository file structure with
list_github_filesto explore directories without cloning.Read file contents from any repo with
read_github_file, automatically attributing the source and indexing the code locally.Search previously read code using
search_codeto find reusable implementations across indexed files (filterable by repo).Check search history by category (
search_history) to see what projects were previously consulted and reuse the knowledge.Inspect the local index with
index_statusanddb_inspectto see what files/tables are stored.Manage the local database with
db_cleanup(stats, purge by category/repo, purge all, vacuum) to keep the index tidy.Follow a built-in methodology that encourages searching before coding, judging requirement clarity, and asking clarifying questions—preventing bad guesses and reinventing the wheel.
Provides tools for searching GitHub repositories, browsing repository files, reading file contents, and indexing code for full-text search, enabling code retrieval and reuse from GitHub.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@github-code-rag-mcpSearch GitHub for examples of using SQLite FTS5 in Python"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
In One Sentence
An MCP server that lets your AI search GitHub repositories in real time. Writing auth? Search first. Writing middleware? Search first. Writing payment integration? Search first. Before AI writes any code, it finds the best projects on GitHub — no reinventing the wheel. Also includes a "requirements analysis Agent" methodology so AI researches before answering, no guessing.
Core Capabilities
Real-time GitHub repo search — sorted by stars, filterable by language and star count.
Read files from any repo —
read_github_filefetches file content with automatic source attribution.Dual-channel fallback — GitHub Search API first; auto-degrade to the official search page (free, unlimited) on rate limits.
Bonus: Requirements Analysis Agent — the system prompt hardcodes a workflow so AI judges requirement clarity, searches first, and asks one question at a time before concluding.
Zero git clone · 1 dependency — all via GitHub REST API; only
mcp>=1.0at runtime; starts in < 1s.
Tools
Tool | Description |
| GitHub official API repo search, sorted by stars |
| GitHub official search page fallback, free unlimited quota |
| Read file content from a repo, with source attribution |
Development
git clone https://github.com/suyu-creator/github-code-rag-mcp.git
cd github-code-rag-mcp
uv sync
uv run --with pytest pytest
uv run github-code-ragEnvironment variables:
GITHUB_TOKEN=ghp_xxx # GitHub API Token (recommended)参与贡献
发现 Bug → 提 Issue
有新想法 → 先开 Issue 讨论
代码贡献 → Fork + PR
觉得好用 → 点个 star,让更多人看到
Related MCP server: MCP Code Intelligence
中文
一句话介绍
一个让 AI 实时搜 GitHub 仓库的 MCP 服务器。 写认证?搜一下。写中间件?搜一下。写支付?搜一下。 AI 写每一行代码之前,先去 GitHub 找最好的项目参考,禁止从零造轮子。 还内置了一套「需求分析 Agent」方法论,让 AI 先调研再动手,不瞎猜。
核心能力
🔥 实时搜 GitHub 仓库 + 读代码
按 star 排序,优先挑最成熟的项目。支持按语言、star 数筛选(如 python stars:>1000)。
选定仓库后用 read_github_file 读关键文件,实现思路直接抄,来源自动标注。
用户:帮我找个 FastAPI 数据库连接的开源项目
↓
AI:search_github("fastapi sqlalchemy database stars:>1000")
↓
AI:我找到了这些高 star 项目:
1. tiangolo/fastapi — Python | ⭐ 80000 | FastAPI framework
2. sqlalchemy/sqlalchemy — Python | ⭐ 10000 | The Python SQL Toolkit
...
↓
AI:read_github_file("tiangolo/fastapi", "docs_src/sql_app/main.py")
↓
AI:我参考了 FastAPI 官方示例,给你写好了:
# Source: tiangolo/fastapi/docs_src/sql_app/main.py
from sqlalchemy import create_engine
...🔄 GitHub API + 官方搜索页双路兜底,不怕限流
GitHub Search API:质量最高,按 star 排序(60 次/时免费,配 Token 5000 次/时)
GitHub 官方搜索页兜底:免费无限额度,限流自动降级
零 git clone:全部走 REST API,不占本地磁盘
🧠 附赠:需求分析 Agent —— 先调研再动手
系统提示词硬编码了工作流,AI 不会上来就瞎写。 它会先判断需求是否明确,搜同类项目,基于真实项目反问你需求,确认清楚了才给结论。
⚡ 零 git clone · 仅 1 个依赖
全部走 GitHub REST API,不需要 clone 仓库
运行时只依赖
mcp>=1.0,其他全是 Python 标准库启动 < 1 秒,内存 < 50MB
快速开始
1. 安装
# 推荐:pipx 一键安装(隔离环境)
pipx install github-code-rag
# 或者 uv
uv tool install github-code-rag
# 或者 pip
pip install github-code-rag2. 配置 Token(可选但推荐)
export GITHUB_TOKEN=ghp_your_token_here没有 Token 也能用 —— 内置 GitHub 官方搜索页兜底,免费无限额度。 有 Token 的话 GitHub API 额度从 60 次/时 → 5000 次/时。
3. 配置到你的 AI 客户端
见下面的「客户端配置」章节。
4. 试试这个
装好后跟你的 AI 说:
"帮我找个 React 管理后台的开源项目,先去 GitHub 搜一下"
看看它会不会先搜 GitHub,再基于搜到的项目给你推荐。
客户端配置
以下配置均为 stdio 模式。配置完成后重启客户端即可使用。 不确定安装路径?运行
which github-code-rag(macOS/Linux)或where github-code-rag(Windows)查看。
Claude Code
编辑 ~/.claude.json,添加:
{
"mcpServers": {
"github-code-rag": {
"command": "github-code-rag",
"env": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}Claude Desktop
打开设置 → Developer → Edit Config,添加:
{
"mcpServers": {
"github-code-rag": {
"command": "github-code-rag"
}
}
}macOS 配置文件路径:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows 配置文件路径:
%APPDATA%\Claude\claude_desktop_config.json
Cursor
项目级配置(仅当前项目):在项目根目录创建 .cursor/mcp.json:
{
"mcpServers": {
"github-code-rag": {
"command": "github-code-rag"
}
}
}全局配置:设置 → MCP → Add new server → Stdio → 填入 github-code-rag
Codex CLI
编辑 ~/.codex/config.toml,添加:
[mcp_servers.github-code-rag]
command = "github-code-rag"所有支持 MCP 协议的客户端都能用。如果你用的客户端不在上面列表里,配置方式基本一样 —— 把 command 指向
github-code-rag即可。
工具列表
工具 | 说明 |
| GitHub 官方 API 搜索仓库,按 star 排序 |
| GitHub 官方搜索页兜底,免费无限额度 |
| 读取仓库文件内容,自动标注来源 |
工作原理
┌───────────────────────────────────────────────────────────┐
│ 你的 AI 客户端 │
│ (Claude Code / Cursor / Codex / Claude Desktop / ...) │
└───────────────────────────┬───────────────────────────────┘
│ MCP protocol (stdio)
┌───────────────────────────▼───────────────────────────────┐
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 系统提示词(需求分析 Agent 方法论) │ │
│ │ · 先判断需求清晰度 · 先搜再问 │ │
│ └───────────────────────┬─────────────────────────┘ │
│ │ 指导 AI 怎么用工具 │
│ ┌───────────────────────▼─────────────────────────┐ │
│ │ 3 个 MCP 工具 │ │
│ │ search_github / web_search_github / read_file │ │
│ └───────────┬───────────────────────────┬─────────┘ │
│ │ │ │
│ ┌────────────▼───────────┐ ┌───────────▼──────────┐ │
│ │ GitHub Search API │ │ GitHub 官方搜索页 │ │
│ │ 按 star 排序 │ │ 免费无限兜底 │ │
│ │ 零 git clone │ │ │ │
│ └────────────────────────┘ └──────────────────────┘ │
│ │
└───────────────────────────────────────────────────────────┘项目结构
├── server/
│ ├── mcp_server.py # MCP 服务器 + 系统提示词(3 个工具)
│ └── __main__.py
├── github/
│ └── connector.py # GitHub API 封装(纯 urllib,零依赖)
├── core/
│ └── models.py # 数据模型
├── tests/
│ └── test_search.py # 两个搜索工具的测试
├── .well-known/mcp.json # SSE 模式配置
└── pyproject.toml开发
# 克隆
git clone https://github.com/suyu-creator/github-code-rag-mcp.git
cd github-code-rag-mcp
# 安装依赖
uv sync
# 运行测试
uv run --with pytest pytest
# 手动启动(stdio 模式)
uv run github-code-rag环境变量:
GITHUB_TOKEN=ghp_xxx # GitHub API Token(推荐)FAQ
支持哪些 MCP 客户端?
所有支持 MCP 协议的 —— Claude Code、Claude Desktop、Cursor、Windsurf、Cline、Codex、Gemini CLI、OpenCode… 只要能配 MCP server 就能用。
我的代码会上传吗?
不会。本工具只做仓库搜索,GitHub API 只用来查询公开仓库元数据,你的代码不会发出去。
为什么不直接用 gh CLI?
因为 MCP 工具要对 AI 透明 —— AI 不需要知道你装了什么 CLI,它只需要调用工具就行。而且纯 Python 实现,零系统依赖。
GitHub API 限流了怎么办?
自动降级到 GitHub 官方搜索页,免费无限额度,不需要额外配置。
Available Tools
9 toolsdb_cleanupA
整理数据库表,清理不需要的历史数据。
当 db_inspect 发现数据太多或过时了,用这个工具清理。
Args: action: 操作类型 - "stats" 查看各表数据量(默认) - "purge_category" 删除指定类别的搜索历史(需传 category) - "purge_repo" 删除指定仓库的所有数据(需传 repo,格式 owner/repo) - "purge_all" 清空所有数据(慎重!) - "vacuum" 压缩数据库,回收空间 repo: 仓库名,格式 "owner/repo",配合 action="purge_repo" 使用 category: 类别名,配合 action="purge_category" 使用
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | ||
| action | No | ||
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries the burden. It discloses destructive actions (purge_all with warning '慎重') and vacuum behavior, but does not mention reversibility, permissions, error handling, or return format. Adequate but not deep.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Structured with a brief overview followed by a bulleted list of parameters. Each line is purposeful, no redundancy, and front-loaded with the main purpose. Fits within a reasonable length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given multiple actions and dependencies, description covers the main functionality well. Has output schema so return details are not required. Missing edge cases like validation, partial failures, but overall complete enough for a cleanup tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage and only default values, but the description provides detailed explanations for all parameters including valid action values and their prerequisites (category for purge_category, repo for purge_repo). Fully compensates for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool cleans up database tables and lists specific actions (stats, purge_category, purge_repo, purge_all, vacuum). It uses a specific verb 'cleanup' targeting a resource, and differentiates from sibling db_inspect which inspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions when to use: 'when db_inspect finds data is too much or outdated, use this tool to clean'. It references an alternative tool (db_inspect) implicitly, but lacks explicit 'when not to use' or exclusions. Clear context but incomplete exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_inspectA
查看数据库表结构和内容概况(所有表、字段、记录数、最近记录)。
想看当前索引了哪些数据时用这个。比 index_status 更详细,展示完整表结构。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It goes beyond the name by detailing exactly what data is returned (all tables, fields, record counts, recent records), implying a read-only inspection. This is useful context, though it doesn't explicitly note side-effect freedom or any potential performance implications, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, then adds usage guidance and a comparison to a sibling tool. Every sentence earns its place, and there is no redundancy or unneeded detail. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists (so return values need not be explained), the description covers all essential aspects: what it does, what it shows, and when to use it relative to a sibling. It is fully complete for a zero-parameter inspection tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema is an empty object, so the baseline for parameter semantics is 4. The description itself doesn't need to explain parameters since there are none, and it doesn't add anything beyond that, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('查看' / view) and resource ('数据库表结构和内容概况'), enumerating what it includes (all tables, fields, record counts, recent records). It also distinguishes itself from the sibling tool 'index_status' by noting it is more detailed and shows complete table structure, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool: '想看当前索引了哪些数据时用这个' (use this when you want to see which data is currently indexed). It also provides an alternative comparison, stating it is more detailed than 'index_status', which helps an agent choose between the two. This satisfies the 'when' and 'alternatives' criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
index_statusA
查看当前本地索引了哪些代码文件。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It indicates a read-only viewing operation, but does not explicitly state it is non-destructive or mention any side effects. For a simple status query, this minimal information is sufficient, but it adds no extra context beyond the bare action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that fully communicates the tool's function with no extraneous detail. It is appropriately sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is adequate. It explains what the tool does, and since an output schema is present, return values are already documented. However, it could benefit from a note that this is a read-only operation, but that is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to explain any. The baseline of 4 is appropriate because there is nothing to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to view which code files are currently indexed locally. The verb '查看' (view) is specific, and it differentiates from sibling tools like search_code or read_github_file by focusing on index status rather than file content or searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or related tools. The usage context is implied (e.g., checking what is available before searching) but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_github_filesA
浏览 GitHub 仓库的文件列表。
找到仓库后,用本工具看目录结构。找到文件后再用 read_github_file 读内容。 禁止用 gh CLI 或 curl 代替。
Args: url: 仓库 URL (来自 search_github 的结果,如 https://github.com/owner/repo) path: 子目录路径(留空看根目录)
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'browse file list' without explicitly stating it's read-only, what it returns, or any side effects. While the output schema may cover return format, the description lacks safety/behavioral details like rate limits or destructive potential. Compared to the calibration example where annotations existed, here the burden is on the description and it is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, structured in two paragraphs plus an args list, and front-loaded with the core purpose. Each sentence contributes to usage or parameter guidance with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool and the presence of an output schema, the description covers the essential workflow and parameter semantics. It doesn't elaborate on edge cases or return formats, but the output schema likely handles that. Minor missing: no mention of pagination or max results, but for a directory listing this is acceptable. Score 4 due to slight lack of behavioral detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description explains both parameters clearly: 'url' is the repository URL from search_github results, and 'path' is the subdirectory path with empty meaning root. This adds significant meaning beyond the schema's generic titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists files in a GitHub repository ('浏览 GitHub 仓库的文件列表'), and explicitly says '看目录结构' (view directory structure). It distinguishes from read_github_file by noting it is to be used before reading content, and from search tools by implying it operates on a known repo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit workflow: after finding a repo, use this tool to see directory structure, then use read_github_file to read content. Also forbids using gh CLI or curl as alternatives. This clearly guides when to use and when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_github_fileA
读取 GitHub 仓库中某个文件的内容。
读到的代码可以直接复用,需要在代码中标注来源。 文件内容会自动索引到本地,之后可用 search_code 搜索。
Args: url: 仓库 URL (如 https://github.com/owner/repo) path: 文件路径 (如 "src/main.py")
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses non-obvious behaviors: file content is automatically indexed locally for later search_code, and code reuse requires source attribution. It does not cover auth or rate limits, but the disclosed side effects are meaningful for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a one-sentence purpose, two sentences of behavioral notes, and a concise Args list. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-file tool with an output schema, the description covers purpose, parameters, side effects, and usage context. It lacks auth/size caveats, but these are not critical given the tool's simplicity and available schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by explaining both parameters: url as 'repository URL (e.g., https://github.com/owner/repo)' and path as 'file path (e.g., "src/main.py")'. These examples add meaning beyond bare property names, though advanced options like branch/ref are not mentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '读取 GitHub 仓库中某个文件的内容' (read a file's content from a GitHub repository), with a specific verb and resource. It distinguishes itself from sibling tools by noting that the content is auto-indexed locally and can later be searched with search_code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: read code can be reused with source attribution, and content is auto-indexed for later search_code. However, it does not explicitly mention when not to use it or name alternatives like list_github_files, so it stops short of fully explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codeA
在已读过的代码中搜索关键词。
写代码前先搜一下有没有现成的实现,有就直接复用,禁止从零编写。 只能搜到之前用 read_github_file 读过的文件。
Args: query: Search keywords repo: Optional filter by repository name top_k: Number of results (default: 5, max: 20)
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | ||
| query | Yes | ||
| top_k | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It clearly discloses the indexing dependency on read_github_file and implies this is a read-only search over local scope. It doesn't mention edge cases like missing index or result ordering, but the core behavioral boundary is clearly communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: one-sentence summary, clear usage instruction, search scope constraint, and a compact Args list. Every sentence serves a purpose and no unnecessary filler is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter search tool with an output schema, the description covers scope, prerequisites, when to use, and limitations. It is sufficiently complete for an agent to decide when to invoke this tool and what to expect, although it could mention what happens when there are no previously read files.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the Args section in the description is essential. It explains all three parameters: query, repo, and top_k, with top_k's default and max limit. The descriptions are not very detailed but they do add practical meaning beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states '在已读过的代码中搜索关键词' which clearly identifies a search operation scoped to previously read code. It distinguishes itself from sibling tools like search_github or web_search_github by explicitly limiting results to files read with read_github_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: search before writing code and reuse existing implementations instead of writing from scratch. It also clarifies the limitation that only files read via read_get_file are searchable, but it does not explicitly name alternative tools for cases where code has not been read yet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_githubA
在 GitHub 搜索仓库,返回仓库 URL。
这是搜索 GitHub 的唯一途径,禁止使用 gh CLI 或 curl。 找到仓库后,用 list_github_files 浏览文件,read_github_file 读代码。
Args: query: Search keywords (中文或英文均可) limit: Maximum results (default: 10, max: 30)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly indicates a read-only search operation returning URLs, but it does not explicitly state that it has no side effects, nor does it mention any rate limits or potential errors. While the operation is obviously non-destructive, the description lacks explicit behavioral disclosures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It uses two short sentences to convey purpose, exclusivity, and follow-up actions, followed by a compact list of parameters. There is no redundant or verbose wording; every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is contextually complete for a search tool. It explains the workflow with sibling tools (list_github_files, read_github_file), sets expectations for the return value (repository URL), and provides parameter definitions. It does not describe error handling or pagination, but for a simple search operation, this level of detail is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only titles and defaults, with no descriptions for 'query' or 'limit'. The description adds meaningful semantics: 'query' is search keywords (can be Chinese or English) and 'limit' is maximum results with a default and max value. This clarifies the purpose and constraints of both parameters, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '在 GitHub 搜索仓库,返回仓库 URL' (search GitHub repositories and return the repository URL). It explicitly distinguishes itself from alternatives by declaring it is the only way to search GitHub and forbids using gh CLI or curl, making the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it states when to use the tool (it is the only search method) and what to do after finding a repository (use list_github_files to browse files and read_github_file to read code). It also gives a clear directive not to use other methods, fully informing the agent about appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_historyA
查询某个类别之前读过什么项目。
用户说"做个XX"时,第一步调本工具查历史记录。 有记录 → search_code 搜代码,无记录 → search_github 搜新仓库。
Args: category: Search category (e.g. "电商web", "点餐小程序")
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states the tool queries history (implying read-only) but lacks details on return format, pagination, or side effects. Adequate but not exhaustive for a query tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is brief, front-loaded with the purpose, and includes usage context. Every sentence earns its place, though the Args section repeats schema name but adds example.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description provides necessary context including trigger scenario and next steps. Missing some behavioral details but complete enough for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and description adds example for category ('电商web'), but does not specify allowed values or format beyond the example. With a single parameter, this is acceptable but not enriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states '查询某个类别之前读过什么项目' (query previously read projects by category), distinguishing it from sibling tools like search_code and search_github by specifying its role in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to use: '用户说"做个XX"时,第一步调本工具查历史记录' and provides decision logic for alternatives (有记录 → search_code, 无记录 → search_github), which is excellent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_search_githubA
通过 GitHub 官方搜索页搜索开源项目(免费,无需 API Key,无限额度)。
当 search_github 限流时用这个替代。搜索 GitHub 上的仓库。 解析 github.com/search 的 HTML 结果页,不依赖第三方搜索引擎。
Args: query: 搜索关键词 (如 "电商网站 React") limit: 返回结果数 (default: 10, max: 20)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the mechanism (parsing HTML) and the free/unlimited nature, but doesn't mention potential rate limits on the HTML scraping itself, pagination behavior, or what happens if the HTML structure changes. It's adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the key purpose and advantage. The Args section is clear. Minor redundancy: '搜索 GitHub 上的仓库' repeats the purpose already stated, but overall it's efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 params, no annotations, output schema exists), the description covers the essential purpose, usage context, and parameter semantics. It doesn't describe the output structure, but the output schema exists, so that's acceptable. It could mention error cases (e.g., if search page is blocked) but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains query as search keywords with an example, and limit as result count with default and max. This adds meaning beyond the bare schema, but doesn't specify the format of results or how limit interacts with pagination. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches GitHub open-source projects via GitHub's official search page, explicitly noting it's free, requires no API key, and has unlimited quota. It distinguishes itself from sibling tool search_github by being a fallback when rate-limited, and from search_code by targeting repositories rather than code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool when search_github is rate-limited, providing a clear alternative. It also clarifies it parses github.com/search HTML results and doesn't rely on third-party search engines, giving the agent context on when this is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
v0.1.0- First observed
db_cleanup - First observed
db_inspect - First observed
index_status - First observed
list_github_files - First observed
read_github_file - First observed
search_code - First observed
search_github - First observed
search_history - First observed
web_search_github
TDQS
Most tools are distinct, but search_github and web_search_github both search GitHub repos, and index_status and db_inspect both inspect the local index, creating ambiguous pairs. Descriptions help differentiate them but the overlap could cause misselection.
Tool names mix patterns: most use verb_noun (search_code, read_github_file), but some are noun-first (index_status, db_inspect, db_cleanup) and one uses a prefix (web_search_github). All are snake_case and readable, but the conventions are not uniform.
With 9 tools, the count is well within the ideal 3-15 range and appropriately covers the workflow of searching repos, reading files, indexing, and managing the local database. Each tool serves a clear purpose in the RAG pipeline.
The core workflow is covered: search repos, browse and read files, index code, search indexed code, and manage the database. Minor gaps exist, such as no bulk indexing or a way to query history by repository, but these are not critical for the intended use case.
Maintenance
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
MCP server for static security analysis of Android source code
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceSelf-hosted MCP server for indexing and searching code repositories via hybrid search and deep code understanding.2118MIT
- AlicenseNot gradedqualityDmaintenanceIntelligent code search MCP server with AST analysis, call graphs, dependency tracking, and semantic embeddings for developers.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP server for semantic code search and dependency graph analysis. Indexes codebases into a knowledge graph with vector embeddings for AI-powered code understanding.38MIT
- AlicenseAqualityAmaintenanceMCP server for semantic code search with AST-aware chunking, hybrid vectors, and query syntax.121Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/suyu-creator/github-code-rag-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server