PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteA small documentation MCP server needs three jobs: help a client find relevant pages, return the source content it needs, and preserve enough identifying information to cite or revisit that content. A practical starting point is a search_docs tool plus a focused retrieval path, with MCP resources added when clients should discover and read URI-addressable documents. Keep stable source identifiers and provenance metadata in every result; treat resource URIs and access permissions as security boundaries.
Choose the MCP interface around the client workflow
MCP distinguishes callable tools from contextual resources. A tool is appropriate for a query-driven workflow such as ranking documentation for a search phrase. A resource is appropriate when content has a stable URI that a client can list and read. These are complementary primitives, not competing definitions of a docs server. The 2025-06-18 MCP resource specification describes resource listing and reading; the MCP tools documentation describes tools as functions clients can invoke.
As an Amazon Associate I earn from qualifying purchases.
| Design choice | Best fit | What the client does |
|---|---|---|
| Search and retrieval tools | Query-based discovery, ranking, filters, or retrieval of a selected passage | Calls a search tool, then uses a returned source ID or URI with a retrieval tool |
| MCP resources | Documents that have stable, addressable URIs and suit client-mediated discovery and reading | Lists resources, then reads selected resource URIs |
| Both | Corpora where users need ranked search as well as direct access to known source URIs | Searches for candidates or lists resources, then reads the selected source |
Start with a compact search-and-retrieve workflow
For a small server, a useful initial contract is a search_docs tool that accepts a query and only the filters your corpus needs. Return a short excerpt with each result so the client can judge relevance without loading entire pages. Include a stable source ID, canonical URI, and title. A second tool such as get_doc or get_source can retrieve a full page or a relevant passage on demand. This split is an implementation choice, not a protocol requirement: it keeps search results focused while giving the client a clear way to obtain source material.
Use resources when URI-based reading helps
With resources, listing and reading are separate operations. A client calls resources/list to discover available resources and can follow pagination when the list is large; it calls resources/read with a URI to retrieve content. This pattern is a natural fit when the client already knows a URI, or when discovery by resource metadata is useful. It does not replace search ranking unless you build search separately.
#1 Best Overall
Keep source identity attached to retrieved content
Do not rely on a display title alone: titles can change or collide. Give each document a durable source key and retain its canonical URI separately. The MCP resource specification defines metadata fields including URI, name, title, description, and MIME type, and its examples include a lastModified annotation. Return the metadata that is available and meaningful for your corpus.
Metadata to preserve
- Stable source ID: a durable key your server can resolve even if the page title changes.
- Canonical URI: where the source is identified or located, validated against the corpus your server is allowed to expose.
- Title or name: a human-readable label for result display and citation.
- MIME type: the content type clients should expect.
- Version or modification date: include it when the upstream source provides a reliable value.
- Passage pointer: for extracted text, preserve a link back to the document and, if available, a section heading or offset. This is a useful citation design, though MCP does not mandate a passage-record schema.
Dates help clients display or sort sources, but only if they describe the upstream content accurately. A date generated when your server indexed a page is not automatically the page’s last-modified date; label server-side timestamps accordingly.
Rank #2
Bound retrieval and make corpus changes explicit
A client usually needs enough content to decide what to read, not an entire documentation corpus in every result. Return focused excerpts from search, then let the client retrieve a full page or a selected range. For resource discovery, use pagination rather than attempting to send an unbounded list at once.
If your corpus changes, update the index or source store deliberately. The dated resource specification allows servers to advertise list-change notifications or resource subscriptions where appropriate; these capabilities are optional. Do not imply that results are live or current unless your implementation actually refreshes its data. If a requested source is missing, return a clear error: the resource specification identifies -32002 for resource not found and -32603 for internal errors.
Rank #3
Protect resource URIs and sensitive documents
A resource URI is not merely a lookup string: it can become a boundary into the corpus. The 2025-06-18 resource specification states, “Servers MUST validate all resource URIs,” and calls for access controls for sensitive resources. Validate that each incoming URI resolves only to an allowed document or identifier; do not let a caller turn a URI into an arbitrary filesystem path or unrestricted upstream fetch. Where the corpus contains private material, authorize the caller before returning content.
Choose local or hosted deployment for the actual environment
The protocol does not require a hosted service. A local stdio server can suit a corpus and client running in the same environment; a remote endpoint can suit a shared service or centrally managed corpus. Choose based on where documents live, who should be able to access them, and which transport the target client supports.
Rank #4
- Server 2022 Standard 16 Core
| Deployment pattern | Documented example | Considerations |
|---|---|---|
| Local stdio | The TypeScript SDK v2 documentation includes a one-file stdio server example and lists Node.js, Bun, and Deno. | Useful for a small server launched by a local client; distribution and access controls depend on your environment. |
| Hosted Streamable HTTP | OpenAI documents a hosted documentation MCP endpoint using Streamable HTTP. | Useful when the service is remote; plan for endpoint access, authorization, and client connectivity. |
The MCP TypeScript SDK v2 documentation labels v2 the stable release line implementing the 2026-07-28 specification and documents Node.js, Bun, and Deno. TypeScript is one implementation option, not an MCP requirement. Since both SDK and protocol guidance can evolve, check the current versions and client support when implementing.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteLearn from documentation-server precedents without copying their assumptions
Official documentation services show that search plus source retrieval is a workable pattern, but their APIs are examples rather than universal MCP requirements.
Best Value
- OpenAI Docs MCP is a read-only service for documentation on developers.openai.com, platform.openai.com, and learn.chatgpt.com. Its documentation describes search and page-content access over a hosted Streamable HTTP endpoint.
- Google Developer Knowledge MCP documents a global endpoint at
https://developerknowledge.googleapis.com/mcpand tools namedsearch_documents,answer_query, andget_documents. Its reference saysget_documentscan retrieve one document or as many as 20 in a call; the reference page was updated 2026-08-19 UTC. - Microsoft Learn MCP provides search and fetch tools for Learn documentation and code samples. Its repository recommends that clients fetch current tool definitions at runtime, refresh definitions after errors suggesting a stale or missing schema, and respond to list-change notifications.
These examples support a small, focused interface; they do not mean every server needs the same tool names, batch limits, transport, or discovery behavior. Keep client-specific assumptions out of the server where possible, and let clients discover the current tools and capabilities they can use.
Quick Recap
A practical build sequence
- Define the corpus boundary. Decide which documents the server may expose, how stable IDs map to them, and whether any content requires authorization.
- Implement search. Accept a query and only the filters your corpus needs; return ranked, concise results with stable IDs, canonical URIs, titles, and excerpts.
- Implement retrieval. Resolve a source ID or URI to a page or passage, preserve its metadata, and return a clear not-found error when the source no longer exists.
- Add resources if useful. Expose URI-addressable documents through listing and reading when client-mediated resource access adds value; paginate larger listings.
- Set freshness behavior. Choose when the index refreshes, how modifications are reflected, and whether list-change or subscription capabilities are warranted.
- Choose runtime and transport. Use a local stdio process or a hosted transport based on corpus location and client needs; verify the current SDK and specification versions.
- Check traceability and access. Test that each result points back to the intended source, metadata dates mean what their labels say, and unauthorized URIs cannot retrieve protected content.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




