Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

An MCP server is the protocol-side application that exposes capabilities to an MCP client. Its core primitives are tools (operations a model can invoke), resources (contextual data an application can provide), and prompts (reusable interaction templates a user can select). Around those primitives, a working server needs identity metadata, capability declarations, registrations and handlers, a message transport, and protocol lifecycle behavior.

The exact classes, function names and handshake rules depend on the SDK and protocol revision. Treat the architecture below as the stable mental model, then verify the version-specific API in the SDK you deploy.

The core components at a glance

Component What it provides Typical controller Context or operation?
Tools Callable functions that retrieve information or perform an action Model-controlled Operation
Resources Structured content such as files, records or Git history Application-controlled Context
Prompts Named templates or instructions for starting an interaction User-controlled Instructions
Metadata and capabilities Server identity and the features it advertises Negotiated with the client Configuration
Registrations and handlers The definitions and code that implement each feature Server implementation Behavior
Transport and lifecycle Message delivery, initialization and session rules Client and server together Connectivity

These pieces are related but not interchangeable. A tool definition without a handler is only a description; a handler without an advertised capability may never be exposed to a client.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Tools: model-invoked operations

A tool is an executable function. The model can discover its name, description and input schema, decide when it is useful, and request an invocation through the client. The server validates the arguments, runs the implementation and returns a structured result or an error.

#1 Best Overall
Tecmojo 12U Open Frame Network Rack for IT & AV Gear, AV Rack Floor Standing or Wall Mounted,with 2 PCS 1U Rack Shelves & Mounting Hardware,Network Rack for 19" Networking,Audio and Video Device
  • 【Powerful Load-bearing】12U Network Rack Open Frame is constructed from durable cold rolled steel; Rack shelf supports enhance stability, wall-mounted capacity of 130lbs, the ground-mounted up to 260lbs
  • 【Considerate Designs】Open-frame layout, including a top panel adding space, anti-slip shelf stops fixing devices and compatible racks for stack and expansion to meet requirements of home server rack
  • 【Complete Accessories】A 12U open frame server rack, two ventilated shelves, four shelf stops, four velcro straps and a set of equipment mounting screws
  • 【Versatile Application】Ideal for space-efficient multi-device setups in warehouses, retail, classrooms, offices and more; Excellent choices as AV Rack/IT Rack
  • 【Effortless Setup】 Network Rack includes hardware, a comprehensive manual, mounting hole drilling template and an online assembly video to simplify setup

What belongs in a tool definition

  • Name: stable and specific, such as search_issues rather than run.
  • Description: explain the action, data source and important limits in language a model can use for selection.
  • Input schema: required and optional fields, types, allowed values and constraints.
  • Result shape: text, structured JSON, links or other content blocks supported by the SDK.

What a tool is not

Tools are not automatically safe merely because they are exposed through MCP. A tool that writes files, sends email or changes a cloud resource still needs authorization, input validation, logging and an explicit policy for destructive operations. The protocol overview uses API requests and file writing as examples of possible tools, not requirements for every server.

Resources: application-selected context

Resources expose information for the model or user to inspect, such as a document, configuration file, database record or Git history. The official overview characterizes resources as application-controlled: the host decides when and how available content is selected and presented, rather than asking the model to execute an arbitrary function for every read.

Resource identity and content

A resource normally has an identifier (often a URI), a human-readable name and metadata describing its media type or purpose. Reading it should return the content in a predictable encoding. Large or sensitive data can be summarized, paged or filtered by the host instead of being dumped into every model context.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Resources versus tools

Use a resource when the main job is supplying stable context. Use a tool when obtaining the result requires an operation, parameters, side effects or an external call. A server might expose a repository file as a resource and also provide a run_tests tool; the first is context, while the second performs work.

Prompts: reusable, user-controlled instructions

Prompts are predefined templates for model interactions. A client can present them as choices such as “summarize this incident” or “review this pull request.” The user selects the template, and the host supplies any arguments before sending the resulting messages to the model.

Why prompts are separate from tools

A prompt does not execute a server-side operation. It standardizes wording, role instructions and expected context. Keeping it separate lets users choose the interaction while tools remain available for the model to call during that interaction.

Rank #2
Sale
StarTech 42U 4-Post Open Frame Rack, 19in, 22-40in, 1323lb/600kg
  • ADJUSTABLE DEPTH: 4-Post 42U open frame server rack with 4 vertical rails and adjustable mounting depth 22" to 40" (56,0cm to 101,7cm); Compatible with various servers / switches / data / AV and other IT equipment; EIA/ECA-310-E Compliant
  • EASY ASSEMBLY: Mobile network rack with easy-to-follow assembly instructions and online video; Compact flat-pack shipping to avoid damage and facilitate installation; Total product height of 80.3in (204 cm) with casters, 78in (198cm) without casters
  • COLD ROLLED STEEL: Durable 4 Post 19in open frame rack designed for ventilation with 42U mounting height and 1320lb (600kg) weight capacity (stationary); 3 install options included: casters, levelling feet, or base-plate to secure rack to the floor
  • HARDWARE INCLUDED: Rolling computer/data rack includes cage nuts and screws to mount equipment, easy to read Units (U) and depth adjustment markings, cable management hooks for organization, and required assembly tools
  • THE IT PRO'S CHOICE: Designed and built for IT Professionals, this 42U rack is backed for 2-years, including free lifetime 24/5 multi-lingual technical assistance

Identity and capability declarations

Before using features, a client needs to know which server it connected to and what the server supports. Server metadata commonly includes a name and version. Capability declarations indicate whether the implementation offers tools, resources, prompts and optional features such as completions or logging.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The Java SDK guide demonstrates this pattern by configuring server information and capability flags, then registering the available features. The names and builder methods differ between SDKs, so copy the concept rather than assuming a Java-specific API exists in TypeScript, Python or Go.

Advertise only what is implemented

  • Declare a capability only when the corresponding operation is registered and tested.
  • Keep server version metadata aligned with the deployed build.
  • Do not infer that a client supports every capability your server advertises; capability negotiation is two-sided.

Registrations and handlers: connecting declarations to code

Registration binds a public feature definition to executable behavior. A typical server startup sequence creates the server object, registers tool/resource/prompt definitions, attaches handlers, and then connects a transport.

Handler responsibilities

  • Validate arguments against the declared schema.
  • Apply authentication and authorization before accessing a system.
  • Call the underlying API, filesystem or database with timeouts and cancellation.
  • Normalize successful results into protocol content blocks.
  • Return actionable errors without leaking secrets or internal stack traces.

Some SDKs combine registration and implementation in one call; others separate a catalogue from handler functions. Both are valid implementation patterns.

Transport: how protocol messages travel

Transport carries protocol messages between the client and server. The Java guide describes STDIO, SSE and Streamable HTTP implementations, each suited to different deployment models.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

STDIO

STDIO runs the server as a child process and exchanges messages over standard input and output. It is convenient for local desktop hosts because process startup and credentials stay on the same machine. Keep stdout reserved for protocol traffic; send diagnostics to stderr.

Rank #3
VEVOR 12U Open Frame Server Rack, 23-40 in Adjustable Depth, Free Standing or Wall Mount Network Server Rack, 4 Post AV Rack with Casters, Holds All Your Networking IT Equipment AV Gear Router Modem
  • Adjustable Depth: 23-40'' adjustable depth is used for servers and network equipment, ensuring enough space for AV equipment, components, and cabling, while allowing you to access ports and equipment from multiple sides.
  • Strong Load Capacity: Ground-Mounted Load Capacity: 500 lbs, Wall-Mounted Load Capacity: 150 lbs. The av rack is made of carbon steel for better weldability performance and can help save space while meeting your need to place multiple devices.
  • User-friendly Design: Ergonomic design makes the open frame av rack easier to use. The additional top panel is able to place other items with more available space. Roller design moves anywhere and anytime, is convenient, and is more energy-saving.
  • Complete Accessories: We provide the accessories you need, including 2 x Pallets, 145 x M5*10 Cross Head Screws, 4 x Casters, 4 x M10*50 Expansion Screws,10 x M6*12 Cage Nuts, 1 x Grounding Wire, 1 x User Manual.
  • Wide Application: The server rack wall mount maximizes the use of available space, suitable for retail venues, classrooms, offices, and other places where space is limited.

SSE

Server-Sent Events provide a streaming HTTP connection for server-to-client messages, with a complementary path for client requests. This model can fit a separately hosted service, but requires careful handling of reconnects, authentication and proxy timeouts.

Streamable HTTP

Streamable HTTP uses HTTP as the connection model while allowing streamed protocol messages. It is suitable for services behind normal HTTP infrastructure, provided the deployment preserves request identity, authorization and any required streaming behavior.

The evidence establishes that these transports coexist; it does not establish a universal performance or security ranking. Choose based on where the server runs, how clients connect and what your hosting environment supports.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Lifecycle and protocol version

Lifecycle rules are version-dependent. Older protocol revisions use an initialize handshake in which client and server exchange protocol versions and capabilities before normal requests. The Go SDK documentation describes this legacy flow through versions up to 2025-11-25.

The same guide describes a stateless model introduced with the 2026-07-28 protocol revision. The TypeScript SDK v2 documentation identifies v2 as its stable release line implementing that 2026-07-28 specification. Do not mix examples from those models: a client expecting initialization state and a stateless endpoint can disagree about sessions, capabilities or request ordering.

Practical version checklist

  1. Identify the protocol revision implemented by your client and server.
  2. Confirm the SDK release line and its lifecycle documentation.
  3. Use the matching initialization or stateless connection pattern.
  4. Test reconnects, cancellation and capability negotiation with the same revision used in production.

What happens during a request

  1. Connect: the client opens STDIO, SSE or HTTP transport.
  2. Negotiate: the parties exchange protocol/version and capability information when required by that revision.
  3. Discover: the client obtains the server’s available tools, resources and prompts.
  4. Select: the host presents resources or prompts, while the model may choose a tool.
  5. Dispatch: the server routes the request to the registered handler.
  6. Respond: the handler returns content or a protocol error through the transport.
  7. Close or continue: the connection follows the lifecycle rules of the negotiated model.

Designing a small MCP server

Start with the contract

Write down the capabilities clients need before choosing an SDK. For each tool, specify inputs, side effects and failure behavior. For each resource, define identifiers, access rules and size limits. For each prompt, document arguments and the user outcome it is intended to produce.

Rank #4
AxcessAbles 12U Network Rack with Wheels - 500lb Capacity, 18" Depth | 19-Inch Open Frame AV Rack Case with 3” Caster Wheels | Screws, Spacer, Tool Included
  • Universal 19” Rack Mount Compatibility – Perfect for pro audio, video, IT, and network gear. Compatible with mixers, routers, patch panels, servers, power amps, and more.
  • Heavy-Duty Load Capacity – Built to support up to 550 lbs. Ideal for studio gear, DJ setups, server equipment, and AV components that demand serious stability.
  • Robust Steel Frame & Design – Made with 1.5mm thick steel and weighs 36 lbs for maximum durability, reduced vibration, and long-term reliability in any setting.
  • Mobile & Secure – Preinstalled with 3” industrial-grade caster wheels (lockable), making it easy to move and position your rack exactly where you need it.
  • All-In-One Setup Kit Included – Comes with 34 rack screws (5mm & 6mm), a 1U blank spacer, and an assembly tool—ready for fast installation out of the box.

Separate policy from implementation

Keep authorization, rate limits and audit logging outside individual business calls where possible. A shared policy layer prevents one handler from accidentally bypassing checks applied to another.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Make failures explicit

  • Reject malformed arguments before making an external request.
  • Use bounded timeouts for network and database calls.
  • Return a clear “not found” result rather than an empty success when a resource is missing.
  • Distinguish authentication failures, permission failures and upstream outages.
  • Log correlation IDs, but never log access tokens or private resource contents.

Security, reliability and operations

An MCP server inherits the risks of every system behind its handlers. Restrict filesystem paths, use least-privilege credentials, validate URLs and shell arguments, and require confirmation for destructive tools. Treat resource content as untrusted input: documents can contain instructions that should not override the host’s policy.

For reliability, make handlers idempotent when practical, support cancellation, and avoid blocking the transport thread during long work. For remote transports, configure proxy and load-balancer timeouts longer than the expected request duration, and test reconnect behavior. Capability discovery should be deterministic so a client does not see a different interface on each connection.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Common implementation problems

The client shows no tools

Check that the server advertised the tools capability, registered at least one tool, and completed the version-appropriate lifecycle. In STDIO mode, remove diagnostic prints from stdout.

A resource reads successfully but has no useful content

Verify the resource identifier, media type and encoding returned by the handler. Add pagination or summarization for large content instead of silently truncating it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Initialization or connection errors

Confirm that both sides use compatible protocol revisions and transport implementations. A legacy initialize client cannot be assumed to work with a stateless 2026-07-28 endpoint without an adapter or matching SDK configuration.

Best Value
VEVOR 9U Open Frame Server Rack, 23''-40'' Adjustable Depth, Free Standing or Wall Mount Network Server Rack, 4 Post AV Rack with Casters, Holds All Your Networking IT Equipment AV Gear Router Modem
  • Adjustable Depth: Depth adjustable from 23" to 40", this open frame server rack accommodates servers and network equipment while providing ample space for A/V gears and cable management. Enjoy easy access to ports and devices from multiple angles.
  • High Weight Capacity: Supports up to 300 lbs on the floor (200 lbs when adjusted to maximum depth) and 200 lbs when wall-mounted (depth cannot be adjusted in wall-mounted mode). Made from carbon steel for superior welding performance and durability, this open frame rack is designed to save space while accommodating multiple devices.
  • User-Friendly Design: Designed with your convenience in mind, this open frame server rack features an top shelf for extra storage and improved space utilization. The rolling casters let you move it effortlessly wherever you need it, making setup and movement a breeze.
  • Widely Applicable: Maximize your space with this adaptable open frame server rack, designed to make the most of every inch. Ideal for retail spots, classrooms, offices, and any area where space is at a premium, it delivers practical solutions for your storage needs.
  • Everything You Need: Our open-frame rack comes with fully equipped accessory kit for easy setup and secure installation: 2 x Trays, 4 x Casters, 1 x set of Screws, 16 x M6*12 Cage Nuts, 1 x Grounding Wire, 1 x Internal & External Hex Wrenches, and 1 x User Manual.

Tool calls fail intermittently

Inspect upstream timeouts, cancellation handling and connection reuse. Return structured errors, retry only operations that are safe to retry, and include a request ID in server logs and client-visible diagnostics.

Using an MCP server for clean website screenshots

If your MCP client needs visual evidence from a website, ScreenshotNeo provides an MCP server with take_screenshot, get_page_info and capture_pdf tools for Claude, Cursor and other MCP clients. It also exposes a screenshot API, so the same capability can be called without embedding browser automation in your own server.

Or skip the browser setup

Use one GET request; the URL can return PNG, JPEG, WebP or a PDF. See the ScreenshotNeo documentation for all parameters.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python

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)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

Before capture, cookie and consent banners, newsletter popups and chat widgets are removed. Bot checks, blank pages, failed loads and cache hits are not billed, and response headers identify the page verdict and billing result. The service includes full-page and element capture, device and viewport settings, custom CSS or JavaScript, waits, request blocking, authentication headers and cookies, PDFs, caching, signed links, asynchronous jobs, bulk capture and a usage API. Every feature is on every plan: 1,000 screenshots per month are free with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.

Choosing the right mental model

When debugging an MCP integration, ask three questions in order: Is the capability advertised? Is its definition registered? Can its handler complete over the negotiated transport and lifecycle? That sequence separates catalogue problems from business-logic failures and from connection-version mismatches.

Frequently Asked Questions

Does every MCP server need tools, resources and prompts?

No. They are the central primitives, but a server can expose only the subset its use case requires. Its capability declaration should match what is actually implemented.

Are MCP resources the same as files on disk?

No. A file is one possible source. A resource is protocol-visible contextual content and may come from a database, API, Git history or another system.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Which transport should a production server use?

Choose according to deployment: STDIO for a local child process, SSE or Streamable HTTP for hosted connections. The protocol material does not establish a universal performance winner.

Why must protocol revision be checked before copying an example?

Lifecycle behavior changed between the legacy initialize model and the stateless model introduced in the 2026-07-28 revision. SDK examples are therefore version-specific.

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.