Crashes, 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 minuteWindows 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 reinstallThe quickest way to build an MCP server is to start with an official SDK example, expose a small typed tool, and run it locally through stdio. Use Streamable HTTP instead when clients need to reach a server over a network. This guide walks through minimal Python and TypeScript patterns, how to inspect and test them, how to connect a host such as GitHub Copilot, and what to change before deployment.
Choose an SDK and transport before writing the server
MCP servers can expose tools, resources, and prompts to AI clients. Official SDKs are available for ten languages. The official SDK page classifies TypeScript, Python, C#, and Go as Tier 1; Java, Rust, and Ruby as Tier 2; and Swift, PHP, and Kotlin as Tier 3. The tiers are the page’s support categories, not a measure of how suitable a language is for your project. See the official SDK list.
| Decision | Good starting point | What it means |
|---|---|---|
| Language | Python or TypeScript | Both have direct, well-documented server examples in the official material. |
| Local host starts the server process | stdio | The host launches your program and exchanges MCP messages over standard input and output. |
| Clients connect over a network | Streamable HTTP | The server is reachable as a remote network service. Stateful sessions can support resumability; stateless mode is simpler but does not support resumability. |
| Need a learning reference | Official examples | Use them to understand patterns and verify behavior, then make deployment decisions for your own application. |
Use the SDK version and installation instructions for the language you select. The Python repository identifies v2 as its current stable release line, supports the 2026-07-28 MCP specification and earlier revisions, and requires Python 3.10 or newer. The TypeScript documentation likewise identifies v2 as stable for the 2026-07-28 specification; its server package is @modelcontextprotocol/server. These are version details stated by the official documentation, so check the linked project pages when selecting a package for a later specification revision.
Build a minimal Python MCP server
This example defines a typed tool and a templated resource in one file. The Python SDK uses type annotations to derive the tool schema and handles request parsing, validation, and protocol work.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →#1 Best Overall
1. Create server.py
from mcp.server import MCPServer
mcp = MCPServer("Demo")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
@mcp.resource("greeting://{name}")
def greeting(name: str) -> str:
"""Greet someone by name."""
return f"Hello, {name}!"
The add function is a callable tool. The greeting://{name} resource is a URI template that lets a client request a greeting for a particular name. Neither example performs external I/O, which makes the first protocol check easy to reason about.
2. Install and launch the Inspector
uv add "mcp[cli]"
uv run mcp dev server.py
If you use pip instead of uv, install the same extra with pip install "mcp[cli]". The mcp dev command opens the server in the MCP Inspector, where you can connect and exercise its exposed capabilities. The official Python README documents this workflow: Python SDK README.
3. Verify each capability
- Call
addwith integer inputs such as 2 and 3; verify the result is 5. - Read a resource using a URI such as
greeting://Ada; verify the returned text includes the name. - If the tool does not appear, confirm the file is the one passed to
mcp dev, the environment contains the installed SDK, and the server process starts without an import or syntax error.
Build the equivalent TypeScript server
The TypeScript server workflow is consistent across transports: create an McpServer, register tools, resources, and prompts, create a transport, then connect the server to it. The v2 docs use Zod schemas in their one-file example. This sketch focuses on the essential local stdio connection; install the v2 server package with npm install @modelcontextprotocol/server and follow the current API in the official docs for imports and schema helpers.
import { McpServer } from "@modelcontextprotocol/server";
import { StdioServerTransport } from "@modelcontextprotocol/server/stdio";
import { z } from "zod";
const server = new McpServer({ name: "demo", version: "1.0.0" });
server.tool(
"add",
"Add two numbers",
{ a: z.number(), b: z.number() },
async ({ a, b }) => ({ content: [{ type: "text", text: String(a + b) }] })
);
const transport = new StdioServerTransport();
await server.connect(transport);
SDK APIs can evolve across releases. Treat the package’s current documentation as authoritative for exact imports, registration signatures, and supported schema libraries; do not mix a v1 example with a v2 package. The official TypeScript guide covers both stdio and Streamable HTTP: Build an MCP server.
Free tools Windows power users keep installed
One-click scans. No signup required.
Rank #2
Use stdio locally or Streamable HTTP remotely
stdio for process-spawned integrations
Choose stdio when an MCP host starts your server as a child process on the same machine. The host configuration supplies the executable and its arguments; the host and server then communicate through the process streams. This avoids exposing a network endpoint for a local integration. Keep standard output reserved for protocol traffic: send diagnostic logging to standard error so it does not corrupt the connection.
Streamable HTTP for network access
Choose Streamable HTTP when clients need to contact a remote service. In the TypeScript guide, a NodeStreamableHTTPServerTransport is connected to the server. A session ID generator enables stateful sessions; passing undefined selects stateless mode. Stateful HTTP supports resumability, while stateless mode is simpler and does not.
Remote access changes the operational boundary: your service must be reachable by intended clients, and you must decide how it handles identity, authorization, network failures, and concurrent requests. The cited server-guide example establishes transport choices, not a complete security or hosting configuration. Apply the authentication and deployment requirements of your own environment rather than assuming the minimal example is production-ready.
Connect the server to a host
For local integrations, hosts commonly launch the server from configuration. GitHub’s Copilot SDK documentation demonstrates MCP configuration by specifying a server command and its arguments, with examples for Node.js/TypeScript and Python. The key pattern is that the host owns process startup and communicates using the configured transport. Consult the host’s documentation for its exact configuration format and supported options: GitHub Copilot SDK.
Other MCP-capable hosts include Claude Code, VS Code, Cursor, or a custom application, as described in the TypeScript v2 documentation. Do not assume that one host’s configuration file can be copied unchanged into another; command fields, environment handling, and transport support are host-specific.
Find runnable examples and judge their maturity
The TypeScript SDK repository points to examples/README.md for runnable, self-verifying client/server pairs, with support for Node.js, Bun, and Deno. Use these when you want to see both ends of a connection rather than only a server stub: TypeScript SDK repository.
The separate official server collection is useful as educational reference material, but its README draws a clear boundary: “They are meant to serve as educational examples for developers building their own MCP servers, not as production-ready solutions.” Before adapting any example for a live service, review its error handling, access controls, secret handling, dependency maintenance, and deployment model for your use case. Official MCP servers collection.
Practical design checks before deployment
- Keep tool inputs narrow. Use explicit types or schemas and reject invalid values before doing work.
- Separate tools from resources. Tools perform requested actions; resources provide addressable data. Give each capability a clear name and description so a client can select it correctly.
- Handle slow and failing operations. Define sensible timeouts for downstream work, return useful errors, and avoid leaving clients waiting indefinitely.
- Protect credentials and side effects. Do not hard-code secrets in source or allow an unconstrained tool to perform privileged actions.
- Match transport to deployment. Use process-spawned stdio for local integrations and a network transport for remote clients; account for session behavior when choosing stateful or stateless HTTP.
- Test against the actual host. Inspector success confirms a useful development path, but host configuration and behavior can differ.
Troubleshoot common setup failures
The Inspector cannot start the Python server
Check that Python is 3.10 or newer, that the mcp[cli] extra was installed in the same environment used by uv run or your shell, and that the path to server.py is correct. Run the command from the project directory or pass the correct file path.
A tool is missing or inputs are rejected
Confirm the tool decorator is applied to the function and the server module imports successfully. In Python, check the annotations and values against the inferred types. In TypeScript, check that the registered schema matches the values the host sends and that you are following the API for the installed SDK major version.
The stdio connection breaks after adding logs
Move diagnostic output off standard output. Stdio carries protocol messages, so ordinary log text in that stream can make the host interpret invalid data.
A remote client cannot reconnect or resume
Check the server’s transport mode. Stateless Streamable HTTP is the simpler option, but the documented behavior does not include resumability. If resumability is required, use a stateful setup and configure its session handling as the guide describes.
A host does not launch the process
Verify its configured command and arguments, executable availability, working directory, and environment variables. Test the same command directly in a terminal, then compare the host’s expected transport with the server’s transport.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Best Value
Or skip the browser setup
If your MCP tool needs a website screenshot, ScreenshotNeo provides a website screenshot API and MCP server. Its one-call API example is:
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 the endpoint and options. Cookie banners are accepted or removed before the shot, along with supported newsletter popups and chat widgets; bot checks, blank pages, and failed loads are never billed. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents. The free plan includes 1,000 screenshots a month with no card, and paid plans start at $5 for 3,000. Learn more at ScreenshotNeo, or sign up free for 1,000 screenshots a month with no card.
Frequently Asked Questions
Which programming languages have official MCP SDKs?
The official SDK page lists TypeScript, Python, C#, Go, Java, Rust, Ruby, Swift, PHP, and Kotlin.
Does the MCP Inspector replace testing in the target host?
No. It is useful for inspecting and exercising a server during development, but you should also test the host configuration and behavior you plan to use.
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.

