In-house set
Write against the API that exists today
The worst failure in third-party integration work does not look like a failure. The call is idiomatic, the types line up, and the method was removed two majors ago. Two sources of truth on two different clocks, and the case that matters is not when they disagree but when one of them is silent.
The failure this is for
An agent integrating someone else's API does not usually get stuck. It writes a call that is syntactically correct, idiomatic for the library, correctly typed, and aimed at a method that was renamed two major versions ago. Nothing complains until runtime, and in the worst version nothing complains at runtime either because the endpoint still exists and quietly no-ops.
This is a confidently-wrong failure rather than a visibly-stuck one, which makes it the expensive kind. The model is not hallucinating. It genuinely learned that API. It learned an older one.
| The failure | What it looks like | What answers it |
|---|---|---|
| Training data froze the API | idiomatic call to a renamed method | version-pinned docs at write time |
| The docs lag the release | the page still lists a removed endpoint | releases, tags, closed issues |
| The docs are silent on a removal | nothing to read, so nothing looks wrong | the release notes, which say it |
Two clocks, not two lookups
The pair is the whole stack, and the lazy version of it picks one and calls it done.
Context7 answers what the current documentation says. It is fast, covers an enormous range, and is a curated snapshot maintained by somebody else. The GitHub server answers what the source actually shipped, which is slower, needs you to know the repository, and is primary. When those two disagree the second one is right, and the case that matters is not disagreement but silence: a documentation site that has not mentioned a removal is indistinguishable from one where nothing was removed, and the release notes can tell those apart.
There is no item here for making an HTTP request
There was nearly a fifth item: an MCP server that wraps curl and returns the status, headers and raw body as typed JSON, so the agent sees the real response rather than an SDK's parsed idea of it. It is a real need. An agent that only ever sees a doc example's abbreviated JSON does not learn that the field is null in practice, or that pagination lives in a header nobody documented.
It is not here because the agent already has a shell, and the candidate was a 136-star wrapper around a command that has been installed on every machine for thirty years. Recommending it would have made this set look more complete without making anybody's integration work better.
What the search changed
Checked 2026-08-13.
This page had four items. Two of them were mocks: MockServer for standing where the vendor stands and failing on purpose, Keploy for standing where your application stands and recording real flows. The page argued they were less redundant than they looked.
Every stack in this directory then went through one grounded question: does any public source describe somebody running this combination, rather than these tools individually. Two things came back.
The first is that Context7 and the GitHub MCP server are genuinely paired in the wild, more than once, including in setups that add a filesystem server and name neither mock. That is the trio-minus-one shape: the documentation clock and the source clock travel together and the mocking layer is a separate decision people make separately.
The second is worse for the old page. Keploy's own material positions MockServer as an alternative to it, not as a complement. This stack was recommending two substitutes side by side and explaining at length why they were not the same thing. The vendor of one of them disagrees, in public.
That is a construction error rather than a taste difference, so both are gone. What remains is the pair the sources actually support, and the argument this page was always strongest on: two clocks, and silence on one of them is the case that costs you.
Nothing here should be read as a claim that mocking an API is unnecessary. It is that the choice between record-and-replay and stand-in-and-misbehave is a real fork, and a stack that hands you both without saying so is not selection.
Two items, and each one removed leaves a hole with a name.
Take the lot
1 of 2, in order
claude mcp add context7 -- npx -y @upstash/context7-mcpSome of these are the commands their projects publish and some are assembled from repository paths. Each one is labelled where it appears below. Nobody here has run them as a set.
What is in it
Their picking, our numbers
Context7MCP server
upstash/context7/io.github.upstash/context760,787★ repoMIT
The default move, and it is the right default. Version-pinned documentation fetched at the moment of writing, rather than recalled from whenever the model last saw this library. Worth pointing at the version the project actually installs, because "latest" is its own way of being wrong.
claude mcp add context7 -- npx -y @upstash/context7-mcpAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
GitHubMCP server
github/github-mcp-server/io.github.github/github-mcp-server32,051★ repoMIT
The second opinion, and it is a different clock rather than a backup. Documentation is a rendering of the code and it lags. Release notes, tags, and a closed issue titled "removed in v5" are the code. Reach for this the moment the docs are silent on something, because silence in documentation is not evidence of absence.
No install line here. This server does not publish one we could copy, and it has no package name recorded, so anything shown here would be a guess at whether it runs from npm, PyPI, a container or a hosted URL.
The repository will have the real instructions: github.com/github/github-mcp-server
More of these
Stacks are written by hand and there are not many. The catalog underneath is large, and its default ordering puts whatever has been picked at the front.