MCP Server с нуля: полное руководство по разработке AI-инструментов (2026)
Если вы хотите, чтобы Claude, GPT или Cursor запрашивали вашу БД, вызывали API или искали в локальных заметках—but каждой модели нужен свой адаптер—you попадаете в ту же N×M стену интеграции, которую MCP призван убрать. Этот практический гид для backend- и AI-разработчиков с базой Python или TypeScript. К концу вы соберёте, отладите и задеployите продакшен-ready MCP Server с Tools, Resources, Prompts, HTTP-транспортом, проектом базы знаний и пятиступенчатым Mac cloud Runbook.
Содержание
- 1. Введение: зачем AI нужны внешние инструменты
- 2. Что такое MCP? Протокол до кода
- 3. Настройка окружения
- 4. Hello World: ваш первый MCP Server
- 5. Tools: пять практических примеров
- 6. Resources: динамический контент для AI
- 7. Prompts: библиотека переиспользуемых шаблонов
- 8. HTTP-транспорт: удалённые MCP Server
- 9. Отладка и тесты
- 10. Продакшен-деploy
- 11. Проект: MCP Server личной базы знаний
- 12. Перспективы экосистемы MCP
- 13. Проверяемые факты для цитирования
- 14. Заключение
1. Введение: зачем AI нужны внешние инструменты
LLM — мощные текстовые движки, но слепы к вашим live-системам: training cutoffs блокируют realtime-данные, и модели не могут выполнять side effects без Tool Use. Вы хотите ассистента, который читает Markdown vault, выполняет SQL или бьёт во внутренние API—без переписывания интеграций при каждом переходе с Claude на GPT или с Cursor на другую IDE.
Три ключевые боли до MCP
- Фрагментированная проводка tools. OpenAI Function Calling, Claude Tool Use и LangChain Tools определяют схемы по-разному—N моделей × M tools = N×M адаптеров.
- Нет runtime discovery. REST endpoints в статичных docs; AI не может вызвать
tools/list, чтобы узнать доступное mid-session. - Зависимость от локального Host. Cursor и Claude Desktop запускают STDIO подпроцессы на macOS; Linux VPS или закрытый ноутбук рвут цепочку.
Model Context Protocol (MCP) стандартизирует, как Hosts обнаруживают и вызывают Tools, читают Resources и загружают Prompt templates через JSON-RPC 2.0. Этот туториал ведёт от нуля к deployable Server—not только теория. За протокольным «почему MCP — HTTP эры AI» см. наш глубокий разбор протокола MCP.
2. Что такое MCP? Протокол до кода
Anthropic open-sourced MCP в ноябре 2024. Он стоит между AI Clients (Claude Desktop, Cursor, custom apps) и Server, который вы строите—с тремя типами capabilities:
- Tools — вызываемые функции (поиск, вычисление, SQL)
- Resources — адресуемые read-only данные по URI (
file://,config://) - Prompts — параметризованные prompt templates, которые Host может inject
Lifecycle: initialize handshake → capability negotiation → request/response → graceful shutdown. Транспорты: STDIO (локальный подпроцесс) или HTTP + SSE / streamable HTTP (remote).
MCP vs Function Calling vs LangChain Tools
| Измерение | MCP | OpenAI Function Calling | LangChain Tools |
|---|---|---|---|
| Стандартизация | Открытый протокол | Vendor-specific | Framework-bound |
| Транспорт | STDIO / HTTP | Только HTTP | Только HTTP |
| Cross-model | Да | Нет | Частично |
| Resources / Prompts | Нативно | Не поддерживается | Не поддерживается |
| Runtime discovery | tools/list | Статическая schema | Статическая schema |
3. Настройка окружения
Выбор языка
Python (рекомендуется для этого гида): официальный SDK mcp с FastMCP decorators. TypeScript: @modelcontextprotocol/sdk для Node-native команд.
Структура проекта
Инструменты отладки
- MCP Inspector —
npx @modelcontextprotocol/inspector - Claude Desktop —
claude_desktop_config.json - Cursor —
.cursor/mcp.json
4. Hello World: ваш первый MCP Server
Запуск и inspect:
Подключение в Cursor (.cursor/mcp.json):
Перезапустите Cursor, откройте MCP settings и убедитесь, что say_hello в списке tools.
5. Tools: пять практических примеров
Tools — это действия. Сигнатуры функций плюс docstrings становятся JSON Schema для модели. Pydantic models для сложных inputs.
Tool 1 — Калькулятор
Tool 2 — Чтение/запись файлов
Tool 3 — HTTP запрос (async)
Tool 4 — Запрос к БД
Tool 5 — Время и timezone
Best practices: возвращайте JSON-serializable типы; structured error strings вместо голых stack traces; timeouts на network и DB calls; валидируйте paths и SQL против injection.
6. Resources: динамический контент для AI
Resources поставляют данные; Tools выполняют действия. MCP адресует их по URI.
Mime types: text/plain, application/json или binary для PDFs/images. Для filesystem Server expose directory listings и file contents как Resources, чтобы модель читала context без мутации state через Tools.
7. Prompts: библиотека переиспользуемых шаблонов
Prompts упаковывают multi-turn templates с параметрами—полезно для code review, incident triage или interview prep.
Hosts вызывают prompts/list и prompts/get для inject consistent instructions—меньше prompt drift между sessions.
8. HTTP-транспорт: удалённые MCP Server
| Характеристика | STDIO | HTTP + SSE / streamable HTTP |
|---|---|---|
| Деплой | Локальный подпроцесс | Remote server |
| Латентность | Очень низкая | Зависит от сети |
| Multi-client | Один Host process | Много clients |
| Лучше для | Cursor, Claude Desktop | Team SaaS, shared tools |
Nginx или cloud load balancer спереди для TLS termination. Никогда не expose unauthenticated MCP HTTP endpoint в публичный internet.
9. Отладка и тесты
Workflow MCP Inspector
- Старт:
npx @modelcontextprotocol/inspector python server.py - Вызвать
tools/listи проверить schemas - Invoke каждый Tool с edge-case inputs
- Inspect JSON-RPC request/response pairs в UI
Пример автоматизированного теста
Частые ошибки
| Ошибка | Причина | Исправление |
|---|---|---|
| Tool missing в Host | Неверный path в mcp.json | Absolute paths; restart Host |
| JSON serialize failure | Non-serializable return | Return str или dict |
| Timeout disconnect | Slow sync Tool | Make async; add timeout |
| Permission denied | Path outside allowlist | Configure allowed roots |
10. Продакшен-деploy
Пятиступенчатый продакшен Runbook
Шаг 1 — Containerize
Шаг 2 — Transport и authentication
Enable streamable HTTP; require Bearer Token или API Key на каждый request; restrict CORS к known Host origins.
Шаг 3 — Test before ship
Run MCP Inspector plus pytest suite; record tools/call p95 latency baselines.
Шаг 4 — Observability
Structured JSON logs, Prometheus counters per tool name, Sentry для unhandled exceptions, /health endpoint для orchestrators.
Шаг 5 — Host на durable infrastructure
Для STDIO workflows с Cursor используйте launchd на always-on Mac node с CPU и memory limits. Для HTTP mode deploy на Railway, Render, Cloud Run или за Nginx на VPS—with TLS и auth enforced.
Declare MCP protocol version в initialize responses и version Tools carefully, чтобы не ломать existing Clients.
11. Проект: MCP Server личной базы знаний
Цель: Cursor отвечает «Что я писал про MCP на прошлой неделе?» через поиск локальных Markdown notes.
Stack
- Vector store: ChromaDB или Qdrant
- Embeddings:
text-embedding-3-smallили local model - File watch:
watchfilesдля re-index on save
Core Tools
Expose vault files как Resources (note://{slug}) для read-only preview. В Cursor задавайте natural-language questions; модель вызывает semantic_search и цитирует snippets из vault.
12. Перспективы экосистемы MCP
К середине 2026 MCP поддерживается в Claude Desktop, Cursor, VS Code Copilot extensions, OpenAI Responses API tooling и растущем marketplace. Reference Servers для изучения:
mcp-server-filesystem— sandboxed file opsmcp-server-github— repos, PRs, issuesmcp-server-brave-search— web searchmcp-server-postgres— SQL over MCPmcp-server-slack— team messaging
Enterprise adoption движет auth standards (OAuth 2.1, scoped API keys) и audited Server registries. Next steps: read spec на modelcontextprotocol.io, publish Server на GitHub, combine MCP с Agent orchestration frameworks.
13. Проверяемые факты для цитирования (2026-06-16)
- Protocol origin: MCP open-sourced Anthropic в ноябре 2024; built on JSON-RPC 2.0 с STDIO и HTTP transports.
- Official SDKs: Python (
mcp) и TypeScript (@modelcontextprotocol/sdk) maintained atgithub.com/modelcontextprotocol. - Three primitives: Every Server exposes Tools (actions), Resources (read URIs), Prompts (templates)—discoverable at runtime via
tools/list,resources/list,prompts/list. - Inspector: Official debug UI via
npx @modelcontextprotocol/inspector; supports live JSON-RPC tracing without Host.
14. Заключение: от туториала к production-grade MCP
У вас полный путь: protocol mental model, Python SDK setup, пять Tools, Resources, Prompts, HTTP mode, Inspector testing, Docker packaging и knowledge-base reference project. Running entirely на local laptop works для demos—but lid-close sleep kills STDIO sessions, path и permission quirks multiply across teammates, и Linux VPS или Docker-only stacks cannot host native Cursor/Claude Desktop subprocesses или Apple toolchain sidecars без painful workarounds.
Для stable, auditable, 7×24 MCP Server, которые Cursor и Claude Desktop reach reliably, deploy на dedicated VPSMAC M4 Mac cloud node: bare-metal macOS, launchd KeepAlive, SSH in minutes, pin-able Python environments, room для HTTP gateways plus STDIO side-by-side. Это production-grade 2026 path—more controllable чем betting on primary machine staying awake, и far simpler чем forcing macOS Host workflows onto Linux VPS.