SourceTap
Allows AI agents to learn and search any library directly from its GitHub repository by downloading and indexing documentation files (Markdown/MDX) and performing keyword search.
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., "@SourceTapsearch the docs of https://github.com/tiangolo/fastapi for 'dependency injection'"
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.
SourceTap
SourceTap is an MVP of a Model Context Protocol (MCP server that lets your AI assistant learn and search any library directly from its GitHub repository or documentation URL.
Features
This project provides two tools:
query_docs(url, query): A RAG (Retrieval-Augmented Generation) tool.Input: Takes a URL to a ZIP archive (e.g., a GitHub repo archive) and a search query.
Process:
Downloads the ZIP file (cached via SQLite to prevent redundant downloads).
Extracts
.mdand.mdxcontent.Indexes the content in-memory using
minsearch(TF-IDF/Keyword search).
Output: Returns the full content of the top 5 most relevant documentation files.
Use Case: Helps AI agents understand libraries that are too new, private, or obscure for their base references.
fetch_web_content(url): A reader tool.Input: Any webpage URL.
Process: Proxies the request through
r.jina.aito convert HTML to clean, LLM-friendly Markdown.Output: The text content of the page.
Use Case: Inspecting specific documentation pages, blog posts, or issue threads.
Related MCP server: Search Docs MCP
Installation
To use this tool with your AI assistant (e.g., Claude Desktop, Cline), add the following configuration to your MCP Settings file:
{
"mcpServers": {
"sourcetap": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/sourcetap",
"run",
"python",
"main.py"
]
}
}
}Note: Replace
/absolute/path/to/sourcetapwith the actual path to this directory on your machine. Theuvcommand will automatically handle dependency installation and environment setup when the server starts.
Project Architecture
The Tech Stack
MCP Framework: FastMCP (Python)
Web Scraping: Jina Reader API (via httpx)
Search Engine: minsearch (TF-IDF/Keyword search)
Caching: SQLite with WAL mode
Used MCP: Context7
AI Assistant: Google Gemini 3 Flash + Antigravity IDE
Caching Strategy
The project uses SQLite for persistent caching of downloaded ZIP files.
WAL Mode: Write-Ahead Logging enabled for better concurrent read/write performance.
Search Implementation
Uses minsearch for in-memory document search.
Text Fields: Indexes both
contentandfilenamefor comprehensive search.TF-IDF Scoring: Ranks documents by term frequency-inverse document frequency.
Top-K Retrieval: Returns the 5 most relevant documents per query.
Memory Efficient: Index is rebuilt per query (no persistent index storage).
Limitations & Possible Improvements
Keyword-Only Search: Currently uses TF-IDF. Semantic search with embeddings (e.g.,
all-MiniLM-L6-v2) would enable conceptual matching.Full-File Retrieval: Returns entire files. Smart chunking by headers would improve precision.
Markdown-Only: Only indexes
.mdand.mdxfiles. Code parsing (.py,.ts) would enable technical implementation queries.ZIP Archives: Downloads full repositories. GitHub Tree API would enable sparse downloading of only needed files.
No Persistent Index: Index is rebuilt per query. Persistent indexing would improve performance for repeated queries.
Single-Threaded Cache: SQLite cache is synchronous. Async cache operations would improve throughput.
Available Tools
2 toolsfetch_web_contentC
Download content of any web page using Jina reader.
Args: url: The URL of the web page to fetch content from.
| Name | Required | Description | Default |
|---|---|---|---|
| url | 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 for behavioral disclosure. It only says 'using Jina reader' and does not mention potential failures, rate limits, authentication needs, content-size limits, or how errors are surfaced.
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 short and front-loaded with the core action. The Args section is slightly redundant with the schema but does not bloat the description.
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 tool is simple, has only one parameter, and provides an output schema, which reduces the need to document return values. Still, missing usage guidance and behavioral caveats leave some room for ambiguity about correct invocation.
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 should compensate. However, 'url: The URL of the web page to fetch content from' adds little beyond what the parameter name 'url' and the tool purpose already imply; no format, examples, or constraints are given.
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 a specific verb ('Download') and resource ('content of any web page'), making the core purpose obvious. It does not explicitly differentiate from the sibling query_docs, but the target of web pages versus docs is reasonably distinct.
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?
There is no guidance about when to use this tool instead of query_docs, nor any mention of limitations or conditions. The agent must infer usage from the tool name and one-liner.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_docsA
Index and search documentation from a ZIP archive URL.
Args: url: URL to a ZIP file (e.g. GitHub archive) query: Search query
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| 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 of disclosing behavior. It does not state whether the operation is read-only, whether it downloads or indexes the archive persistently, what side effects occur, or what happens on large or inaccessible archives. The word 'Index' hints at possible stateful behavior but this is never clarified.
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: a one-sentence purpose followed by a compact argument list. It contains no filler and every part adds useful information. The format is easy to scan and directly actionable for an agent.
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 tool is simple, has an output schema, and its parameter semantics are mostly covered. Still, because there are no annotations and no usage-vs-alternative guidance, the description leaves gaps around side effects, network behavior, and when to prefer this over 'fetch_web_content'. It is minimally viable but not fully 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 adds useful meaning for 'url' ('URL to a ZIP file, e.g. GitHub archive') and a minimal gloss for 'query' ('Search query'). The query parameter semantics are still thin, with no detail on search syntax, scope, or matching behavior, but the basics are covered.
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 a specific action ('Index and search documentation') on a specific resource ('ZIP archive URL'), which clearly distinguishes this tool from its sibling 'fetch_web_content'. It immediately tells an agent what the tool does and what input domain it operates on.
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 intended usage is implied: use this when you have a ZIP archive URL containing documentation you want to query. However, there is no explicit guidance about when not to use it, nor any mention of the sibling tool 'fetch_web_content' as an alternative. The exclusion of alternatives is left to inference.
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.
2 tool updates
v0.1.0- First observed
fetch_web_content - First observed
query_docs
TDQS
The two tools have clearly distinct purposes: fetch_web_content retrieves any web page, while query_docs specifically indexes and searches documentation from a ZIP archive. Although both accept URLs, the actions and outputs are unambiguous.
Both tools follow the same verb_noun pattern with lower_snake_case: fetch_web_content and query_docs. The verbs differ but the structure is consistent and predictable.
With only two tools, the server feels quite thin. This is borderline for a useful MCP server, though the tools themselves are substantial and well-defined.
The server covers two distinct capabilities: web content retrieval and documentation search. Potential gaps include lacking a way to list or manage indexed docs and no broader web search beyond direct URL fetching, but the core scope is reasonably served.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Versioned documentation registry and semantic search for AI tools and coding assistants.
@latest documentation and code examples to 9000+ libraries for LLMs and AI code editors in a singl…
A cited wiki of your GitHub repo: search, read pages, find symbols and ask, with line citations.
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceScrapes and indexes documentation websites to provide AI assistants with searchable access to documentation content, API references, and code examples through configurable URL crawling.-
- FlicenseAqualityDmaintenanceEnables semantic search across multiple AI library documentations to keep coding assistants up-to-date.11-
- FlicenseNot gradedqualityCmaintenanceEnables retrieval and cleaning of official documentation for AI/Python libraries using search and LLM-based HTML cleaning.-
- AlicenseAqualityDmaintenanceProvides AI assistants with up-to-date documentation for popular libraries and frameworks, enabling them to generate more accurate code using less common or newly released libraries.55336MIT
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/maxvoltage/sourcetap'
If you have feedback or need assistance with the MCP directory API, please join our Discord server