MCP-серверы в 2026: как проектировать tools, resources и prompts, когда выбирать stdio или Streamable HTTP, как тестировать через Inspector и где чаще всего ломается server design.
MCP-сервер в 2026 уже не стоит воспринимать как "маленький bridge к одной функции". Хороший MCP server теперь чаще проектируют как capability surface для agent stack: с tools, resources, prompts, transport choice, security boundaries, test tooling и иногда remote deployment path.
Из-за этого статья про MCP-серверы уже не должна сводиться к одному примеру на TypeScript. Намного важнее понять, какой server surface вообще стоит публиковать, чем просто научиться вызвать server.tool().
MCP-сервер — это адаптер между AI-приложением и внешней системой. Он делает ваши данные и действия доступными через общий протокол, чтобы Claude, IDE, agent runtime или другое MCP-совместимое приложение могли работать с ними единообразно.
Самый частый anti-pattern — брать внутренний REST API и механически выставлять его 1:1 как набор MCP tools. Обычно это даёт шумный, небезопасный и неудобный server surface. MCP-сервер должен проектироваться под agent use case, а не быть слепой обёрткой вокруг всех endpoint'ов.
local или remote transport: stdio или Streamable HTTP;
какие trust boundaries и permissions;
как тестировать через Inspector;
как сделать contracts короткими, различимыми и безопасными.
Практическая рамка:
tools для actions;
resources для readable context;
prompts для reusable task scaffolding;
stdio для local developer/server cases;
Streamable HTTP для remote and service-style deployments.
ПромптMCP server review
Когда плохая идея публиковать 40 внутренних endpoint'ов как 40 MCP tools?
Ответ модели
Когда агенту не нужен весь этот surface и descriptions начинают пересекаться. Обычно лучше сделать меньше, но более task-oriented tools с ясными contracts и ограниченными правами.
Плохой MCP server
Один endpoint сервиса = один tool. Названия абстрактные, output шумный, права широкие, transport выбран случайно.
Нормальный MCP server
Server surface спроектирован вокруг agent tasks: tools различимы, resources полезны как context layer, transport соответствует deployment mode, а test path проходит через Inspector.
Больше всего проблем в MCP-серверах приносит не transport, а poorly designed tools.
Нормальный tool contract обычно:
имеет узкое имя;
описывает use case, а не только техническое действие;
не перегружен аргументами;
возвращает короткий структурированный результат;
чётко сообщает про failure.
Плохой tool
name: update_record
description: обновляет запись
Нормальный tool
name: create_incident_ticket
description: Create a new incident ticket in the internal tracker. Use for outages, service degradation, or operational incidents. Returns ticket id, title, severity, and current status.
Если сомневаетесь, начните с меньшего server surface. Один хороший resource и два ясных tools обычно полезнее, чем каталог из двадцати vaguely defined возможностей.
Плюсы
Переиспользуемый capability layer для разных MCP hosts
Чистый способ публиковать tools и context для agent stack
Inspector делает testing и debugging намного проще
stdio и Streamable HTTP покрывают local и remote deployment paths
Resources позволяют давать context без лишних side effects
Минусы
Плохой design быстро превращает server в noisy adapter
Нужно отдельно проектировать boundaries и permissions
Transport choice и hosting уже становятся архитектурной задачей
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: "status-server",
version: "1.0.0",
});
server.tool(
"get_service_status",
"Return current status for a named service.",
{ service: z.string() },
async ({ service }) => ({
content: [
{
type: "text",
text: JSON.stringify({ service, status: "healthy" }),
},
],
})
);
const transport = new StdioServerTransport();
await server.connect(transport);
Этого достаточно для первого local server. Дальше важнее не расширять код бездумно, а понять, какие capabilities реально нужны агенту.