mcp-doc-search
Planned integration with SingleStore as a retrieval backend for scalable documentation 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., "@mcp-doc-searchsearch docs for MCP"
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.
MCP Doc Search
MCP Document Search Server
Overview
This project was built as a hands-on exercise to understand the Model Context Protocol (MCP) by implementing all three core MCP primitives:
Prompts
Tools
Resources
The final outcome is a simple documentation search MCP server that exposes:
A
search_docstool for searching documentationDynamic resources representing documents stored in a local
docs/folder
The server can be tested and explored using the MCP Inspector.
Related MCP server: RootApp Documentation MCP Server
MCP Concepts Learned
1. Prompts
Prompts are reusable instruction templates exposed by an MCP server.
Pattern:
prompts/listprompts/get
Example:
simpleA client can discover available prompts and retrieve the prompt content.
2. Tools
Tools expose executable functionality.
Pattern:
tools/listtools/call
Examples implemented during learning:
fetch
add
multiply
search_docsA tool receives arguments, performs some action, and returns structured results.
3. Resources
Resources expose data that can be read by a client.
Pattern:
resources/listresources/read
Examples:
```text
docs://mcp
docs://architecture
docs://retrievalResources represent existing data and are analogous to files or documents.
MCP Mental Model
Tool = Function
Resource = File
Prompt = TemplateExamples:
search_docs("MCP") -> Tool
docs://mcp -> Resource
code-review-template -> PromptCurrent Architecture
MCP Client
│
├── search_docs(query) [Tool]
│
└── docs://* [Resources]
│
└── read_resource()Search Flow
User Query
↓
search_docs("MCP")
↓
Returns matching resource URIs
↓
docs://mcp
↓
read_resource("docs://mcp")
↓
Returns document contentThis demonstrates the common MCP pattern:
Tool → Resource ChainProject Structure
doc-search/
│
├── README.md
├── pyproject.toml
│
└── mcp_doc_search/
│
├── __init__.py
├── __main__.py
├── server.py
│
└── docs/
├── architecture.txt
├── retrieval.txt
└── mcp.txtFeatures
Tool: search_docs
Input:
{
"query": "MCP"
}Behavior:
Searches all
.txtfiles in thedocsdirectoryPerforms a case-insensitive search
Returns matching resource URIs
Example output:
docs://mcpResources
Resources are generated dynamically from the docs directory.
Examples:
docs://mcp
docs://architecture
docs://retrievalReading a resource returns the document content.
Testing
The server can be tested using MCP Inspector.
Example configuration:
Command:
uvArguments:
run python -m mcp_doc_searchThe Inspector can then:
List tools
Call
search_docsList resources
Read resources
Key Takeaways
MCP follows a consistent discovery and execution pattern.
Tools are used for actions and discovery.
Resources are used for retrieving known content.
Prompts are reusable instruction templates.
Many knowledge and retrieval servers follow a Tool → Resource architecture.
The MCP layer remains stable even when the retrieval implementation evolves from simple file search to BM25, vector search, hybrid search, or databases.
Future Improvements
BM25 search
Vector search
Hybrid search
SingleStore integration
Result ranking and scoring
Resource metadata
Claude Desktop / Cursor integration
Retrieval-Augmented Generation (RAG)
create venv: uv venv Go to correct toml file and run: uv sync uv run python -m mcp_simple_prompt --help
uv run python -m mcp_doc_search --help
Install inspector: npx @modelcontextprotocol/inspector and runs it port:6274 (For stdio transport, Inspector itself launches the server, so need not run uv run mcp-simple-prompt in another terminal) or run python -m mcp_doc_search in the arguments
Enter the proxy token or launch the Proxy configured url and enter-> Command: uv and arguments: run mcp-simple-prompt
Available Tools
1 toolsearch_docsDocs SearcherC
Search the query text in the docs
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Query to search |
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 only restates the search action and does not mention return format, pagination, case sensitivity, error behavior, or any other behavioral trait, leaving the agent without critical context for using the tool safely.
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 short sentence, so it is concise and front-loaded. However, it is so terse that it borders on under-specification, merely paraphrasing the title without adding meaningful information. It is appropriately short but lacks substance.
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 tool with only one parameter, no output schema, and no annotations, the description should at least hint at what the search returns or how results are presented. It does not, leaving the agent without essential context about the tool's behavior and output, making the description incomplete for a truly usable 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 100% (the only parameter 'query' has a description), so the baseline is 3. The tool description adds minimal semantic value by tying 'query' to 'query text', but it does not clarify format, required length, or any constraints beyond what the schema already provides.
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 uses a clear verb 'Search' and specifies the resource 'the docs', which conveys the tool's primary function. However, 'docs' is somewhat ambiguous (documentation vs. documents), and there are no sibling tools to differentiate from, so it doesn't fully distinguish itself from potential alternatives.
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 on when to use this tool vs. alternatives, no prerequisites, and no mention of limitations or edge cases. The description only states what it does, not when it should be invoked, making it no more helpful than the name itself.
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.
1 tool update
v0.1.0- First observed
search_docs
TDQS
With only one tool, there is no possibility of confusing it with another. The tool's purpose is clear from its name and description.
The single tool uses a consistent verb_noun pattern, and there are no other tools to introduce inconsistency.
The server has just one tool, which is thin but appropriate for a narrowly-focused search-only service. It falls on the borderline of being too sparse.
Only search is supported, with no way to fetch or list documents. This creates a significant gap: after searching, the agent cannot retrieve the actual content of a result.
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
Political Comms documentation MCP server: search docs, query the docs filesystem. No auth.
Provides access to Google's public developer documentation.
Search and fetch AgendaForge public documentation and marketing content. No authentication needed.
Read-only MCP server for the OrchestKit docs: full-text search + Markdown fetch. No auth.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to access and read mdbook documentation, including structure, content, and search.203MIT
- AlicenseNot gradedqualityDmaintenanceServes RootApp documentation files with search and retrieval capabilities, enabling users to access specific docs, browse directory structure, and search across file names and content.AGPL 3.0
- FlicenseNot gradedqualityCmaintenanceEnables searching and retrieving pages from the Suitest documentation via full-text search without live network calls.-
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with direct access to local Markdown documentation libraries, enabling them to list, read, and search through docs on demand.MIT
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/gituser5525/mcp-doc-search'
If you have feedback or need assistance with the MCP directory API, please join our Discord server