The second the documentation calls the recommended one - roots, which the client reports to the server. An important detail: roots sent by the client completely replace the server-side allowed list rather than adding to it. In exchange they can change at runtime, with no server restart.
And a caveat that is easy to hit: if the server starts without arguments and the client does not support roots or sends an empty list, the server throws an error during initialisation. That is deliberate - with no explicitly allowed directories it will not start at all.
It carries about fifteen tools: reading text and media files, reading several files at once, writing, editing, creating a directory, listing, listing with sizes, moving, searching, a directory tree, file metadata, and a separate tool that reports the list of allowed directories.
Versions by Date
The versioning scheme here is unusual and explains why different servers carry different numbers.
Versions look like dates: 2026.8.18, 2026.7.10, 2026.7.4. Each package is released on its own, so server-everything may sit on an August version while server-memory sits on a July one. The set has no shared number.
The publishing method is documented separately: packages go to the registries through OIDC trusted publishing straight from CI, with no registry tokens. A small thing, but for an official repository with this many forks, the right small thing.
What to Know in Advance
The licence is dual. New contributions are Apache 2.0, while existing code stays MIT. GitHub does not classify that combination automatically, so the repository carries no ordinary licence badge.
There are a lot of open issues. As of 25 August 2026 there are 542 of them against seven servers. The number includes pull requests, but the order of magnitude is telling: a repository with this many stars collects reports about the whole protocol, not just about its seven servers.
Memory is a graph, not a notepad. The persistent-memory server works in entities, relations and observations, and its README includes an example system prompt explaining to the model how to use it. Without that prompt it is of little use.
Everything exists for testing a client. It is the one server whose job is to show every protocol feature at once: prompts, resources and tools. If you are writing your own client, that is where debugging starts.
The source reads as a textbook. Since the servers are declared educational examples, reading their code is a perfectly legitimate use. Seven different servers across two languages give a more honest picture of the protocol than any description.
First-Encounter Mistakes
Looking for a server catalog here. There is none; the README points you to the protocol registry in its very first block.
Putting a reference server into production as-is. The project says outright these are educational examples, not finished solutions.
Copying the extended configuration example wholesale. It contains two archived servers, one of which asks for a GitHub token.
Expecting archived servers to be supported. Eleven of the thirteen are maintained by no one, and no security guarantees are provided for them.
Starting Filesystem with no allowed directories. It will not run - and that is correct behaviour, not a bug.
Assuming roots add to the command-line arguments. They replace them entirely.
Forgetting the cmd /c wrapper on Windows. For every npx entry, but not for uvx.
Looking for a shared version number for the set. There is none; each package is versioned by its own release date.
To put it in one sentence: this is not a shop but a display case of samples - and its value is that the samples are official, taken apart in detail, and shipped with an honest warning that finishing the job is on you.
Sources
This article was checked against the modelcontextprotocol/servers repository (branch main) on 25 August 2026: the README, the src/ directory tree, src/filesystem/README.md, src/memory/README.md, and the archived servers-archived repository. The server count was recounted from the tree. Package release dates were taken from the npm and PyPI registries the same day, and stars and open-issue counts through the GitHub API. Packages are released individually and versioned by date, so different servers carrying different numbers is normal.