🧠 All Things AI
Intermediate

MCP Servers, Tools & Resources

The MCP ecosystem exploded in 2025 — from a handful of reference servers at launch to over 16,000 community servers indexed by mid-2025. This page covers the most important pre-built servers, how to evaluate servers from the ecosystem, and what you need to know to build your own MCP server.

Official Pre-Built Servers

Anthropic released the first set of production-quality reference MCP servers alongside the protocol. These serve as both practical integrations and reference implementations for how MCP servers should be structured.

ServerWhat it connects toKey toolsTransport
FilesystemLocal files and directoriesread_file, write_file, list_directory, search_filesstdio
GitHubGitHub repositories, issues, PRssearch_repos, get_file, create_issue, list_prsstdio
GitLocal git repositoriesgit_log, git_diff, git_status, git_blamestdio
PostgresPostgreSQL databasesquery, list_tables, describe_tablestdio
SlackSlack workspacessend_message, read_channel, list_channels, search_messagesstdio
Google DriveGoogle Drive files and docssearch_files, read_file, list_folderstdio
PuppeteerWeb browsers (headless)navigate, screenshot, click, extract_textstdio

The Community Ecosystem

Beyond official servers, the community built 16,000+ servers covering nearly every major SaaS product, database, API, and developer tool by mid-2025. Unofficial registries like mcp.so index these servers and provide discovery, ratings, and install instructions.

Popular community server categories

  • Databases: MySQL, SQLite, MongoDB, Redis, Supabase, PlanetScale
  • Dev tools: Jira, Linear, Notion, Confluence, Sentry, Datadog
  • Cloud providers: AWS, GCP, Azure resource management
  • Communication: Discord, Teams, Email (SMTP/IMAP), Telegram
  • Data: CSV files, Excel/Sheets, Airtable, Salesforce
  • APIs: Stripe, Twilio, HubSpot, Shopify

Evaluating community servers

  • Check GitHub star count and recent commit activity — abandoned repos are common
  • Review what credentials the server requests — avoid servers that request broad scopes when narrow scopes would suffice
  • Read the tool descriptions carefully — misleading descriptions are a security vector (see MCP Security page)
  • Prefer servers with pinned dependencies and published checksums
  • Run community servers in sandboxed environments, not with production credentials

Writing MCP Tool Definitions

When building your own MCP server, the quality of your tool definitions determines whether the AI uses your tools correctly. The name and description are what the LLM reads to decide when and how to call your tool — they are more important than the implementation.

Good tool definition principles

  • Name: verb_noun format, unambiguous — search_files not files
  • Description: explain when to use this tool (not just what it does); include what it returns
  • Parameters: use enum for constrained values; mark required vs optional clearly
  • One tool, one responsibility: avoid multi-purpose tools that take a mode parameter
  • Return format: document what the response looks like so the AI knows how to parse it

Common tool definition mistakes

  • Vague description: "does file stuff" — AI cannot reliably decide when to use it
  • Overloaded tool: one tool that reads, writes, and deletes based on a mode param
  • No return type documentation — AI cannot interpret the result
  • Missing required/optional distinction — AI hallucinates required parameters
  • No error cases documented — AI doesn't know what to do when the tool fails

MCP Resources in Depth

Resources expose data that the AI reads as context — files, database rows, documents, API responses. Unlike tools (pull data by executing code), resources are more like a content addressable store identified by URIs.

Resource URI patterns:

  • file:///home/user/docs/spec.md — local file
  • postgres://mydb/public/users/42 — database row
  • github://anthropics/mcp/blob/main/README.md — repository file
  • slack://workspace/channel/general — channel history

Resources can be static (file contents) or dynamic (database query results). Dynamic resources are fetched at access time. The AI requests a resource by URI; the MCP server returns the content.

MCP Transport Options

TransportHow it worksBest forNotes
stdioParent process spawns server as subprocess; communicates via stdin/stdoutLocal tools, desktop apps (Claude Desktop, Cursor)Simple, zero network config; default for local servers
HTTP + SSEHTTP requests + Server-Sent Events for streaming responsesRemote/shared servers, web deploymentsStandard web stack; requires authentication
WebSocketPersistent bidirectional connectionLow-latency real-time tool interactionsMore complex to set up; useful for streaming tool results

Building Your Own MCP Server

Minimal MCP server checklist:

  1. Choose an SDK: @modelcontextprotocol/sdk (TypeScript/Node), mcp (Python)
  2. Define your tools with name, description, and JSON Schema for parameters
  3. Implement tools/list — returns your tool definitions
  4. Implement tools/call — receives tool name + arguments, executes, returns result
  5. Optionally implement resources/list and resources/read for data access
  6. Choose transport: stdio for local tools, HTTP+SSE for remote
  7. Add error handling: always return a structured error, never crash the server
  8. Test with Claude Desktop or mcp inspector (official debugging tool)

Before publishing to the ecosystem:

Review the MCP Security page — tool descriptions and return values are injection vectors. Your server's tool descriptions appear directly in the AI's context; a compromised or malicious description can redirect the AI's behaviour.

Checklist: Do You Understand This?

  • Name five pre-built official MCP servers and what each one connects to.
  • What five questions should you ask before using a community MCP server in production?
  • What is the difference between a Tool and a Resource in MCP?
  • What are the three transport options for MCP, and when would you choose each?
  • What makes a good MCP tool description, and what does a bad one look like?
  • What does the mcp inspector tool do, and when in your development process should you use it?