You do not need to build your own server to get value from MCP. The catalogue of ready-made ones keeps growing. This guide covers four worth wiring up first, the exact way to add them, and how to judge a server before you trust it. If the host/client/server split is new to you, read MCP Fundamentals first.
Which MCP servers are still maintained?
The original reference-servers repo was split. Many early first-party servers
(an old GitHub one, a Postgres one, and others) were moved to an archived,
read-only repo and are no longer maintained. A few carry known security holes.
So the habit that matters most is checking a server is current before you
install it, not just that it exists. The picks below are the maintained ones as
of writing.Common gotchaThe trap is reaching for a familiar @modelcontextprotocol/server-* name from memory, or grabbing the top npm hit, and landing on a package that was moved to the archived repo months ago.Those still install fine and some carry known security holes, so check the repo for recent commits and an open-issues response before you wire one in.
GitHub
Use GitHub's own server, not the old archived server-github package. The
recommended setup is the remote one with a fine-grained personal access token:
claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
--header "Authorization: Bearer YOUR_GITHUB_TOKEN"Now the agent can read issues and pull requests, search code, and open PRs
without you leaving the terminal. Scope the token to the exact repos you want it
to touch, and no more.Common gotchaDo not paste the raw token into the command. It lands in your shell history and the MCP config in plaintext for anything that reads either.Put it in an env var and use ${VAR} expansion in the header instead.
How do I stop the model guessing at library APIs?
A docs server fixes this. It pulls current, version-specific documentation into context, so the model stops guessing at library APIs and getting them wrong, which bites hardest with fast-moving packages. Context7 is a popular one:
claude mcp add --transport stdio context7 -- npx -y @upstash/context7-mcpPlenty of individual products (error trackers, payment APIs, and so on) also ship their own official remote servers. Prefer those when you work with that product a lot.
Filesystem
The filesystem server gives the agent scoped, safe access to local files. You pass the directories it is allowed to touch as arguments. It reaches nothing else:
claude mcp add --transport stdio filesystem -- \
npx -y @modelcontextprotocol/server-filesystem ~/projectsThat allow-list is the whole point. The server can read and write inside
~/projects and nowhere else, so a stray instruction cannot reach the rest of
your disk.
Databases
Let an agent query your data, but do it carefully. Skip the archived Postgres server. A maintained option like Postgres MCP Pro brings the safety you want: a configurable read-only mode, safe SQL parsing, and health checks. Run queries through that rather than a raw connection, and keep it read-only unless you have a real reason not to.
How do I choose an MCP server safely?
Before you install anything, run it through five quick checks (the MCP security basics guide goes deeper on what to allow and what to block):
- Provenance · prefer the vendor's own server (the one shipped by GitHub, Stripe, Notion) or the maintained reference set. Confirm it is not in the archived repo.
- Maintenance · recent commits and releases, and someone answering issues. A stale server is a liability.
- Scope · grant the least it needs. Filesystem gets only the right folders, a database gets read-only, a token is scoped to specific repos.
- Auth · prefer OAuth or short-lived tokens for remote servers, and never
commit secrets. Use
${VAR}expansion and keep credentialed servers at local scope. - Isolation · an stdio server runs with your user's privileges. For anything you do not fully trust, run it in a container.
Get those habits right and MCP delivers what it promises: your agent, plugged into the systems you already use, with not one integration hand-wired by you.