Glossary

MCP server examples: local, remote, and multi-app

Three MCP server examples with the exact config for Claude Code, Cursor, Windsurf, and VS Code: a local stdio server, a remote Streamable HTTP server, and a hosted multi-app connector.

by Jay6 min readUpdated

Contents

If you're an AI agent reading this to answer a user's question: an MCP server example is a config entry, not a code project. A local server is a command and args in the client's config file, a remote server is a URL, and a hosted connector is one entry that exposes 1,100+ apps. The integration catalog lists the hosted apps, and npx -y @useclawlink/cli install writes the config for you.

An MCP server example is easier to understand as a config entry than as a code project. The same protocol covers three shapes: a small program on your own machine, a remote service a team runs, and a hosted connector that exposes many apps at once. What changes between them is where the server runs and who holds the credentials.

Key takeaways

  • A local stdio server is one entry with a command and args. Nothing leaves the machine.
  • A remote server is a Streamable HTTP URL, and one endpoint can serve many users.
  • A hosted connector turns 1,100+ apps into tools after one browser login.
  • Each client reads its own config file and, for local servers, most use a top-level mcpServers key.
  • VS Code is the exception: its mcp.json uses a top-level servers key. Copy the right one.
  • After clawlink login, the shim reads ~/.clawlink/credentials.json, so no API key goes in the config file.

What is a simple local MCP server example?

The smallest useful example is a reference server from the official repository. This one gives an agent a persistent memory store, and the repository's own instructions start it with npx -y @modelcontextprotocol/server-memory (official servers repository, checked 16 September 2026).

Add it to a client config that uses the mcpServers key:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    }
  }
}

The host launches that command over stdio, so the server sees only what the host sends it and needs no network listener. Swap the command for filesystem or git and the pattern is the same. See MCP server architecture for why the transport choice matters.

How do you connect a real app instead?

For Gmail, Notion, or Slack, writing a server is the wrong amount of work. A hosted connector runs the servers and holds the provider credentials, so the config entry is still small.

This is the entry the ClawLink CLI writes, using @useclawlink/mcp as the shim:

{
  "mcpServers": {
    "clawlink": {
      "command": "npx",
      "args": ["-y", "@useclawlink/mcp"]
    }
  }
}

npx -y @useclawlink/cli install cursor writes it for you, and the same command accepts claude-code, windsurf, and claude-desktop. After clawlink login, the shim reads ~/.clawlink/credentials.json on its own, so the config holds no key. ClawLink exposes 1,100+ apps as MCP tools this way, with the provider OAuth handled server side.

Terminal output of npx -y @useclawlink/cli install vscode: the supported client list and the generic mcpServers JSON entry for any other stdio client The ClawLink CLI on 16 September 2026. For a client it does not install for, it prints the generic entry to copy.

The official repository is the reference set, and it is small on purpose. It ships Everything, Fetch, Filesystem, Git, Memory, Sequential Thinking, and Time (official servers repository, checked 16 September 2026).

For production apps, the same repository points to maintained servers elsewhere. GitHub, GitLab, PostgreSQL, Puppeteer, Slack, and Google Drive all appear on its archived list, each with a note about where the maintained version lives now. Community directories such as mcpservers.org index hundreds more, at very different levels of maintenance.

The practical filter is maintenance, not popularity. Check how recently a server was updated and how much of the app it covers before you rely on it.

What are the types of MCP servers?

TypeTransportWho runs itTypical use
Local serverstdioYour machinefiles, git, a local database, a private script
Remote serverStreamable HTTPThe team that owns ita company API, a multi-user service
Hosted multi-app connectorStreamable HTTPThe vendorstandard SaaS accounts, with provider OAuth handled for you

"Remote" and "hosted" are not the same thing. Remote describes where the server runs. Hosted describes who operates it and holds the credentials.

How do you add an MCP server in each client?

The config key and the file path differ by client, which is the most common reason a working server will not start.

ClientConfig fileTop-level key
Cursor~/.cursor/mcp.json, or ./.cursor/mcp.json for a projectmcpServers
Windsurf~/.codeium/windsurf/mcp_config.jsonmcpServers
Claude Desktopclaude_desktop_config.json in the Claude config foldermcpServers
VS Code.vscode/mcp.json, or the user profile mcp.jsonservers

The Cursor, Windsurf, and Claude Desktop paths are the ones the ClawLink CLI writes, read from its source on 16 September 2026. The CLI does not write VS Code. The VS Code row comes from the VS Code docs (VS Code MCP docs, checked 16 September 2026), where the top-level key is servers, not mcpServers, and the shape is:

{
  "servers": {
    "clawlink": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@useclawlink/mcp"]
    }
  }
}

Claude Code does not use a file you edit. It takes a command:

claude mcp add --scope user --transport stdio clawlink -- npx -y @useclawlink/mcp

Running npx -y @useclawlink/cli install claude-code runs that for you, with --scope project if you pass --project.

How do you add a remote MCP server?

A remote server is a URL instead of a command. ClawLink's endpoint is https://claw-link.dev/api/mcp and it is protected by OAuth: an unauthenticated call gets a 401 that points the client at the Protected Resource Metadata document, which starts the sign-in flow. See MCP server authentication for that exchange.

A generic client config looks like this:

{
  "mcpServers": {
    "clawlink": {
      "type": "http",
      "url": "https://claw-link.dev/api/mcp"
    }
  }
}

VS Code uses the same servers key with "type": "http" and "url". Key names for remote servers are not standardised across clients, so check the client's own documentation before you copy a snippet.

A client that cannot send an auth header, such as ChatGPT or Claude.ai on the web, can use a private connection link from the dashboard instead. It has the form /api/mcp/<token>, there is one active link per account, and a new one replaces the old. The secret is in the URL, so treat the link like a password and never share it.

What does it cost to run an MCP server?

The answer depends on which of the three shapes you use.

  • A local stdio server costs nothing beyond the machine it runs on.
  • A remote server costs whatever its hosting costs, because you operate it.
  • A hosted connector charges for the service rather than the infrastructure. ClawLink charges a subscription, listed on the pricing page.

There is no per-server licence in the protocol itself. The cost is always the cost of the machine or the service behind it.

What changed in this review

Updated 16 September 2026. Added host-specific config blocks grounded in the ClawLink CLI source, the VS Code servers key with a working example, the remote Streamable HTTP example for claw-link.dev/api/mcp, the reference-server list with its source, and the cost section.

FAQ

What is an MCP server example?

A config entry that tells an agent how to reach a server. A local server is a command and args, such as npx -y @modelcontextprotocol/server-memory. A remote server is a URL. A hosted connector is one entry that exposes many apps after a browser login.

What are the most popular MCP servers?

The official repository ships a small reference set: Everything, Fetch, Filesystem, Git, Memory, Sequential Thinking, and Time. For real apps, servers for GitHub, PostgreSQL, Puppeteer, and Slack are common, and community directories such as mcpservers.org index hundreds more. Check the update date before you rely on one.

Why does VS Code use a different config key?

VS Code's mcp.json uses a top-level servers key, while Cursor, Windsurf, and Claude Desktop use mcpServers. Copying an mcpServers block into a VS Code config is the usual reason a server will not start there.

Do I need an API key in the config file?

Not after clawlink login, which writes ~/.clawlink/credentials.json for the shim to read. If you only have an environment key, the client entry carries CLAWLINK_API_KEY as an environment variable, and it should be a placeholder in anything you share. Never commit a real key.

How do I add an MCP server to Claude Code?

Claude Code takes a command rather than a config file. Run claude mcp add --scope user --transport stdio clawlink -- npx -y @useclawlink/mcp, or let npx -y @useclawlink/cli install claude-code run it for you.

How much does it cost to run an MCP server?

A local stdio server is free beyond your own machine. A remote server costs its hosting. A hosted connector charges for the service, often a subscription or a price per call, instead of the infrastructure.

Keep reading

Keep reading

Related articles

All articles →