An MCP (Model Context Protocol) server is the server-side program that makes tools, data, or reusable prompts available to an AI application through the MCP standard. The AI host connects an MCP client to the server; the model can then discover the capabilities the server declares and, when permitted, call a tool or read a resource. The server performs the operation and returns the result. It is not the language model and does not have to be a complete AI application.
The official MCP TypeScript SDK describes MCP as “an open standard that connects AI applications to the systems where your data and tools live.” See the TypeScript SDK v2 documentation and the server specification for the current reference material.
What an MCP server does
An MCP server wraps an existing capability—such as a database query, filesystem operation, weather lookup, or screenshot service—in a protocol interface. The host application (for example, an AI desktop app or coding environment) owns the conversation and model. Its MCP client connects to one or more servers, obtains their declarations, and forwards approved requests.
A typical request path is:
- The host starts or connects to an MCP server.
- The client learns which tools, resources, and prompts the server exposes.
- The model chooses a declared capability when the user’s request fits it.
- The client sends schema-valid arguments.
- The server validates and executes the operation.
- The server returns text, structured data, or another supported content item to the client.
Authorization, secrets, rate limits, and access to local systems remain deployment concerns. A host’s support for a particular transport or capability must be checked in that host’s current documentation.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minute#1 Best Overall
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
The three MCP server primitives
| Primitive | Purpose | Typical example | Who normally invokes it |
|---|---|---|---|
| Tool | Requests an action or an on-demand retrieval. | Run a SQL query, create a ticket, fetch weather data, or take a screenshot. | The model, through the client, after the user’s request and host policy allow it. |
| Resource | Exposes contextual data managed by the application. | A document, configuration record, or generated report identified by a URI. | The application can present or read it as context. |
| Prompt | Provides a reusable prompt template, usually surfaced for a user to choose. | A code-review or incident-summary template with defined arguments. | Normally the user or application selects it; it is not simply an automatic tool call. |
These roles are deliberately different: a tool changes or retrieves something on request, a resource supplies context, and a prompt standardizes user-invoked instructions.
How an MCP connection is deployed
stdio for a local process
With standard input/output (stdio), the host launches the server as a child process and exchanges protocol messages over its stdin and stdout. This is a natural fit for a local utility that reads the user’s files or runs on the same machine. Log messages must go to stderr so they do not corrupt the protocol stream.
Streamable HTTP for a remote server
Streamable HTTP lets a client reach a server over a network. It is the usual choice when the server is separately deployed, shared by several users, or protected by network authentication. The older v1 TypeScript SDK guide also documents HTTP plus server-sent events (SSE) as a backward-compatibility path.
Do not assume that every host supports every transport. Confirm the host’s current setup instructions, authentication model, and whether it permits local process spawning.
Protocol and SDK versions matter
The stable TypeScript SDK v2 documentation identifies v2 as the SDK line for the 2026-07-28 specification. The older monolithic v1 package and its examples target an earlier protocol shape. Keep the package, example, and migration guidance from the same version together.
Rank #2
- Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM)
- Includes Pre-Loaded 32GB EVO+ Micro SD Card (Class 10), USB MicroSD Card Reader
- CanaKit Premium High-Gloss Raspberry Pi 4 Case with Integrated Fan Mount, CanaKit Low Noise Bearing System Fan
- CanaKit 3.5A USB-C Raspberry Pi 4 Power Supply (US Plug) with Noise Filter, Set of Heat Sinks, Display Cable - 6 foot (Supports up to 4K60p)
- CanaKit USB-C PiSwitch (On/Off Power Switch for Raspberry Pi 4)
The announcement for the 2026-07-28 specification describes changes that are easy to miss when copying an old tutorial: that version retires the initialize/initialized exchange and the Mcp-Session-Id header, adds an optional server/discover RPC, and uses self-contained requests. List and resource-read responses in that specification can include ttlMs and cacheScope metadata. Those statements apply to that specification version; they are not safe assumptions for an older client or v1 sample.
Working TypeScript example (SDK v2)
The following is the shape of the one-file server shown in the official v2 guide: construct McpServer, register a named tool with a description and input schema, then implement its callback. The exact package exports and helper names can change, so check the current v2 guide before installing. This example is intentionally a small weather lookup with a deterministic result; replace the handler with your real operation.
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "weather-example",
version: "1.0.0"
});
server.registerTool(
"get_weather",
{
title: "Get weather",
description: "Return a short weather report for a city",
inputSchema: {
city: z.string().min(1).describe("City name")
}
},
async ({ city }) => ({
content: [{ type: "text", text: `Weather lookup requested for ${city}.` }]
})
);
const transport = new StdioServerTransport();
await server.connect(transport);
Save it as a TypeScript entry point, install the v2 SDK and Zod using the versions specified by the v2 documentation, and run it under the host that supports stdio. The host discovers get_weather, supplies a JSON object such as {"city":"London"}, and receives the returned text. The callback is where you would call an API, query a database, or enforce application-specific authorization. Never print debugging text to stdout in a stdio server.
What makes the example a tool
get_weatheris the stable name the client discovers.- The description helps the model decide when the tool is relevant.
- The schema rejects an empty city before the handler runs.
- The callback receives validated arguments and returns MCP content.
For a complete end-to-end runnable server and interactive client covering tools, resources, prompts, and additional features, use the matching v1 quickstart in the v1 SDK documentation. Start simpleStreamableHttp.ts, then run its companion client in another terminal. Do not combine v1 package names or handshake assumptions with a v2 example.
Building a production MCP server
Define a narrow capability contract
Give each tool a specific name, a useful description, required and optional fields, bounds, and an explicit return shape. Validate again inside the handler when the operation is security-sensitive; a schema is not a substitute for authorization.
Rank #3
- Not including the Raspberry Pi 5 (8GB), the Crowpi advanced version comes with the Raspberry Pi 5
- ELECROW Black Case for the Raspberry Pi 5, CrowPi is equipped with a 9-inch HD touchscreen along with a camera; All the regular components used in DIY electronics are packed into the CrowPi development board, such as LCD, LED matrix, buzzer, light sensor, PIR sensor, ultrasonic sensor, IR sensor, etc
- Raspberry Pi Sensors: The Crowpi raspberry pi 5 programming kit is jam-packed with lots of buttons such as 19 different sensors in a tidy easy to use package; You don't have to wait and wire things
- Build Quality: Solid ABS shell and well made components in one place make it strong and convenient to travel
- Programming Lessons: This raspberry pi 5 learning kit ships with step by step instructions and provides 21 lessons to take you through identifying components reading code and running it in the terminal
Separate permissions from model choice
Allow-list filesystem roots, database operations, outbound domains, and destructive actions. Require confirmation for writes or deletes where the host supports confirmation. Keep API keys in the server’s environment or secret manager, never in a prompt.
Choose output deliberately
Short human-readable text is convenient for a chat response. Structured output is better when a downstream client must reliably consume fields. Return actionable errors without leaking credentials, SQL text, or internal stack traces.
Operate the transport safely
For remote HTTP, terminate TLS at a trusted proxy or service, authenticate callers, apply rate limits, and log request IDs and durations. For stdio, use stderr for diagnostics and close resources when the process exits.
Or skip the browser setup: ScreenshotNeo as an MCP-capable example
If your tool needs website images, ScreenshotNeo provides a screenshot API and an MCP server for AI agents such as Claude, Cursor, and other MCP clients. Its MCP tools include take_screenshot, get_page_info, and capture_pdf. Before capture it accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing result.
One direct request is enough:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for authentication, output formats, and options. Equivalent calls are:
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
Options cover full-page captures with lazy images, CSS-selector elements, dark mode, 12 device presets or custom viewports, retina scale, PDF paper and page ranges, HTML/CSS rendering, custom JavaScript and CSS, clicks, waits, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparency, resizing, chosen cache TTLs, signed image links, asynchronous webhooks, bulk capture of up to 100 URLs per call, usage reporting, and an OpenAPI specification. Every feature is on every plan: 1,000 shots per month free with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Rank #4
- Fully assembled for plug-and-play operation
- Includes Raspberry Pi 5 with 8GB RAM
- 256 GB PCIe Pi NVMe SSD (Pre-loaded with Pi 64-Bit OS)
- M.2 HAT+
- CanaKit Turbine Black Case for the Pi 5
Troubleshooting an MCP server
The host cannot start the server
Check the executable path, working directory, environment variables, and file permissions. Run the same command manually. A stdio host usually expects a long-running process, not a script that exits immediately.
The server starts but no capabilities appear
Confirm that registration runs before the transport connects, the tool name is unique, and the host and server use compatible SDK/protocol versions. Do not use a v1 handshake example with a v2 implementation.
JSON or protocol errors appear in the log
Move all diagnostics to stderr. Any banner, debug print, or stack trace written to stdout can make a stdio stream unreadable.
A tool call fails validation
Compare the arguments with the declared schema, including required property names and types. Add bounds and return a clear error for an unknown identifier instead of silently coercing it.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Remote HTTP requests are rejected
Verify TLS, authentication headers, proxy routing, origin policy, and the transport supported by the client. A server may be healthy while the selected host simply lacks Streamable HTTP support.
The result is stale
Review application caching and, for the 2026-07-28 protocol, the ttlMs and cacheScope metadata on list or resource-read responses. Cache policy is part of the particular server and protocol version, not a universal MCP guarantee.
Best Value
- 【What you Get】You will get 1*Pi 5 8GB Single Board,1*RasTech Case,1*Active Cooler,1*Screwdriver,1*Installation instructions,12-month free warranty, lifetime service, 24-hour prompt and friendly response.
- 【More Connectors】There are two USB 3.0 ports(5Gbps simultaneously) and two USB 2.0 ports, which triple total bandwidth ,support any combination of up to two cameras or displays. Peak SD card performance is doubled through support for the SDR104 high-speed mode. It provides a smooth desktop experience for you. Offer Gigabit Ethernet and a PCIe interface, along with dual-band Wi-Fi and Bluetooth 5.0/BLE wireless capability. The RasTech Pi 5 Kit use the new 27W 5.1V 5A USB-C power connector.
- 【 Support Dual 4Kp60 Display 】Each of the two microHDMI sockets can control a 4K display at 60 Hertz, now support HDR, offering super HD video for media streaming projects. RPi 5 is the first RPi model that comes with a PCI Express port (PCIe 2.0 x1 with 500 MB/s) to attach SSDs (requires separate M.2 HAT).
- 【 Excellent Chips And Applications】Pi 5 is a full-size Pi computer using silicon built in-house at Pi. The RP1 “southbridge” provides the bulk of the I/O capabilities for Pi 5. Pi 5 is more friendly and convenient in the development of Internet of Things, Web development, machine identification, automatic control and other electronic equipment applications and network.
- 【 Faster CPU, Better GPU 】 Pi 5 features a Broadcom BCM2712 64-bit quad-core Arm Cortex-A76 processor running at 2.4GHz, it delivers a 2–3× increase in CPU performance relative to RaspberryPi 4. The 800MHz VideoCore VII GPU is compatible to OpenGL ES 3.1 and Vulkan 1.2, substantial uplift in graphics performance. Pi 5 Offers lightning-fast CPU speed, a PCI Express interface, a Real Time Clock (RTC) and a power button and runs significantly cooler than Pi 4.
FAQ
Is an MCP server the same as an AI model?
No. It exposes operations or context; the host supplies the model and conversation.
Can one host use several MCP servers?
Yes, when that host supports multiple connections. Each server contributes its own declared capabilities and security boundary.
Recommended Free Tools
Should every operation be a tool?
No. Use a resource for application-managed context and a prompt for a reusable, user-selected template.
Which transport should a new project use?
Use stdio for a locally spawned process and Streamable HTTP for a network service, then verify the target host’s current support and authentication requirements.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

