iiuniversitet.ruЦентр обучения нейросетямОткрыть каталог

Проектирование и создание MCP-сервера

Расспрашивает о задаче, выбирает способ развёртывания и схему инструментов и ведёт к готовому MCP-серверу для Claude.

СкиллAnthropicClaudeApache-2.0Нужен терминалПроверка не требуется
Что делает
Расспрашивает о задаче, выбирает способ развёртывания и схему инструментов и ведёт к готовому MCP-серверу для Claude.
Когда брать
Когда нужно создать MCP-сервер или обернуть чужой API так, чтобы Claude мог им пользоваться.
Когда не брать
Если нужен только виджет в чате для уже готового сервера или упаковка в MCPB — для этого есть соседние скиллы.
Пример запроса
Хочу сделать MCP-сервер, чтобы Claude мог работать с API нашей CRM.
Нужно подключить
терминал
Работает лучше с
доступ в интернет для загрузки документации Claude

Входит в плагин mcp-server-dev. В Cowork и Claude Code можно поставить плагин целиком.

Как включить

  1. Скачайте архив и распакуйте его.
  2. Положите папку build-mcp-server в ~/.claude/skills/.
  3. Откройте Claude Code и опишите задачу своими словами: Claude подхватит скилл по описанию.

Текст

---
name: build-mcp-server
description: Этот скилл следует использовать, когда пользователь просит «создать MCP-сервер», «сделать MCP», «сделать MCP-интеграцию», «обернуть API для Claude», «открыть инструменты для Claude», «сделать MCP-приложение» или обсуждает создание чего-либо на основе Model Context Protocol. Это точка входа в разработку MCP-серверов: скилл расспрашивает пользователя о сценарии использования, определяет подходящую модель развёртывания (удалённый HTTP, MCPB, локальный stdio), выбирает схему проектирования инструментов и передаёт работу профильным скиллам.
version: 0.1.0
---

Создание MCP-сервера

Ты ведёшь разработчика через проектирование и создание MCP-сервера, который без сбоев работает с Claude. MCP-серверы бывают очень разными: если рано выбрать не ту форму, потом придётся мучительно переписывать. Твоя первая задача — выяснить, что нужно, а не писать код.

Сначала загрузи контекст, специфичный для Claude. Спецификация MCP универсальна, а у Claude есть дополнительные типы авторизации, критерии проверки и лимиты. Прежде чем отвечать на вопросы или собирать заготовку, загрузи https://claude.com/docs/llms-full.txt (полный экспорт документации по коннекторам Claude), чтобы твои советы учитывали реальные ограничения Claude.

Не начинай собирать заготовку, пока у тебя нет ответов на вопросы этапа 1. Если пользователь уже ответил на них в первом сообщении, отметь это и сразу переходи к рекомендации.


Этап 1. Выясни сценарий использования

Задавай эти вопросы в формате беседы (собери их в одно сообщение, не устраивай допрос по одному вопросу). Подгоняй формулировки под то, что пользователь уже рассказал.

1. С чем он соединяется?

Если он соединяется с…Вероятное направление
Облачным API (SaaS, REST, GraphQL)Удалённый HTTP-сервер
Локальным процессом, файловой системой или настольным приложениемMCPB или локальный stdio
Оборудованием, API уровня ОС или состоянием конкретного пользователяMCPB
Ничем внешним — чистая логика / вычисленияПодойдёт любой вариант — по умолчанию удалённый

2. Кто будет им пользоваться?

  • Только я / моя команда, на наших компьютерах → локальный stdio допустим (проще всего для прототипа)
  • Любой, кто его установит → удалённый HTTP (настоятельно рекомендуется) или MCPB (если он *обязан* быть локальным)
  • Пользователи Claude desktop, которым нужны виджеты интерфейса → MCP-приложение (удалённое или MCPB)

3. Сколько разных действий он предоставляет?

От этого зависит схема проектирования инструментов — см. этап 3.

  • Меньше ~15 действий → один инструмент на действие
  • От десятков до сотен действий (например, при обёртке большого API) → схема «поиск + выполнение»

4. Нужен ли инструменту ввод от пользователя посреди вызова или насыщенный вывод на экран?

  • Простой структурированный ввод (выбрать из списка, ввести значение, подтвердить) → запрос уточнений (elicitation) — часть спецификации, не требует кода интерфейса. *Поддержка в хостах внедряется постепенно* (Claude Code ≥2.1.76) — всегда сочетай с проверкой возможностей и запасным вариантом. См. references/elicitation.md.
  • Насыщенный/визуальный интерфейс (графики, собственные выборы с поиском, живые дашборды) → виджеты MCP-приложения — на основе iframe, нужен @modelcontextprotocol/ext-apps. См. скилл build-mcp-app.
  • Ни то ни другое → обычный инструмент, возвращающий текст/JSON.

5. Какую авторизацию использует исходный сервис?

  • Никакой / API-ключ → всё просто
  • OAuth 2.0 → понадобится удалённый сервер с поддержкой CIMD (предпочтительно) или DCR; см. references/auth.md

Этап 2. Порекомендуй модель развёртывания

На основе ответов порекомендуй один путь. Будь категоричен. Варианты по порядку предпочтения:

⭐ Удалённый MCP-сервер на streamable-HTTP (рекомендация по умолчанию)

Размещённый сервис, говорящий по MCP поверх streamable HTTP. Это рекомендуемый путь для всего, что оборачивает облачный API.

Почему он выигрывает:

  • Никаких трудностей с установкой — пользователь добавляет адрес, и готово
  • Одно развёртывание обслуживает всех пользователей; обновлениями управляешь ты
  • Потоки OAuth работают как надо (сервер может обрабатывать редиректы, DCR, хранение токенов)
  • Работает в Claude desktop, Claude Code, Claude.ai и сторонних MCP-хостах

Выбирай его, если только сервер *не обязан* обращаться к локальному компьютеру пользователя.

→ Самое быстрое развёртывание: Cloudflare Workers — references/deploy-cloudflare-workers.md (от нуля до рабочего адреса двумя командами) → Переносимый Node/Python: references/remote-http-scaffold.md (Express или FastMCP, работает на любом хостинге)

Запрос уточнений (структурированный ввод без создания интерфейса)

Если инструменту нужно лишь, чтобы пользователь подтвердил, выбрал вариант или заполнил короткую форму, запрос уточнений (elicitation) решает это без кода интерфейса. Сервер отправляет плоскую JSON-схему, а хост рисует встроенную форму. Это часть спецификации, дополнительные пакеты не нужны.

Оговорка: поддержка в хостах новая (Claude Code выпустил её в v2.1.76; в Desktop не подтверждена). SDK выбрасывает ошибку, если клиент не заявляет эту возможность. Всегда сначала проверяй clientCapabilities.elicitation и держи запасной вариант — канонический приём смотри в references/elicitation.md. Это правильный, соответствующий спецификации подход; поддержка в хостах подтянется.

Переходи к виджетам build-mcp-app, когда нужны: вложенные/сложные данные, прокручиваемые/ищущие списки, визуальные предпросмотры, живые обновления.

MCP-приложение (удалённый HTTP + интерактивный интерфейс)

То же, что выше, плюс UI-ресурсы — интерактивные виджеты, отображаемые в чате. Насыщенный выбор с поиском, графики, живые дашборды, визуальные предпросмотры. Собирается один раз, отображается в Claude *и* в ChatGPT.

Выбирай это, когда ограничения плоской формы запроса уточнений не подходят — нужна своя раскладка, большие списки с поиском, визуальное содержимое или живые обновления.

Обычно удалённое, но может поставляться и как MCPB, если интерфейсу нужно управлять локальным приложением.

→ Передай работу скиллу **build-mcp-app**.

MCPB (упакованный локальный сервер)

Локальный MCP-сервер, упакованный вместе со средой выполнения, чтобы пользователю не нужно было ставить Node/Python. Это одобренный способ поставки локальных серверов.

Выбирай это, когда сервер *обязан* работать на компьютере пользователя: читает локальные файлы, управляет настольным приложением, обращается к сервисам на localhost или требует доступа на уровне ОС.

→ Передай работу скиллу **build-mcpb**.

Локальный stdio (npx / uvx) — *не рекомендуется для распространения*

Скрипт, запускаемый через npx / uvx на компьютере пользователя. Подходит для личных инструментов и прототипов. Распространять мучительно: пользователям нужна правильная среда выполнения, обновления доставить нельзя, а единственный канал распространения — плагины Claude Code.

Рекомендуй это только как промежуточную ступень. Если пользователь настаивает, собери заготовку, но укажи путь перехода на MCPB.


Этап 3. Выбери схему проектирования инструментов

Каждый MCP-сервер предоставляет инструменты. То, как ты их нарежешь, важнее, чем обычно думают: схемы инструментов попадают прямо в контекстное окно Claude.

Схема A: один инструмент на действие (небольшая поверхность)

Когда набор действий невелик (< ~15 операций), дай каждому отдельный инструмент с точным описанием и схемой.

create_issue    — Создать новую задачу. Параметры: title, body, labels[]
update_issue    — Обновить существующую задачу. Параметры: id, title?, body?, state?
search_issues   — Искать задачи по строке запроса. Параметры: query, limit?
add_comment     — Добавить комментарий к задаче. Параметры: issue_id, body

Почему это работает: Claude один раз читает список инструментов и точно знает, что возможно. Никаких обходных запросов за информацией. Схема каждого инструмента точно проверяет входные данные.

Особенно хорошо, когда один или несколько инструментов поставляют интерактивный виджет (MCP-приложение): каждый виджет естественно привязывается к одному инструменту.

Схема B: поиск + выполнение (большая поверхность)

Когда оборачивается большой API (десятки или сотни методов), перечисление каждой операции как инструмента забивает контекстное окно и ухудшает работу модели. Вместо этого предоставь два инструмента:

search_actions  — По запросу на естественном языке вернуть подходящие действия
                  с их идентификаторами, описаниями и схемами параметров.
execute_action  — Выполнить действие по идентификатору с объектом параметров.

Полный каталог сервер хранит у себя внутри. Claude ищет, выбирает, выполняет. Контекст остаётся лёгким.

Гибрид: вынеси 3–5 самых востребованных действий в отдельные инструменты, а длинный хвост оставь за поиском/выполнением.

→ Примеры схем и рекомендации по написанию описаний смотри в references/tool-design.md.


Этап 4. Выбери фреймворк

Порекомендуй один из этих двух. Есть и другие, но у этих лучшее покрытие спецификации MCP и совместимость с Claude.

ФреймворкЯзыкКогда использовать
Официальный TypeScript SDK (@modelcontextprotocol/sdk)TS/JSВыбор по умолчанию. Лучшее покрытие спецификации, первым получает новые возможности.
FastMCP 3.x (fastmcp на PyPI)PythonПользователь предпочитает Python или оборачивает библиотеку на Python. Основан на декораторах, очень мало шаблонного кода. Это пакет jlowin, а не замороженный FastMCP 1.0, встроенный в официальный SDK mcp.

Если у пользователя уже есть язык/стек на уме, бери его: оба дают одинаковый протокол обмена.


Этап 5. Собери заготовку и передай работу

Когда четыре решения приняты (модель развёртывания, схема инструментов, фреймворк, авторизация), сделай одно из:

  1. Удалённый HTTP без интерфейса → собери заготовку прямо здесь по references/remote-http-scaffold.md (переносимо) или references/deploy-cloudflare-workers.md (быстрее всего развернуть). Этот скилл может довести работу до конца.
  2. MCP-приложение (виджеты интерфейса) → подведи итог принятых решений и затем загрузи скилл **build-mcp-app**.
  3. MCPB (упакованный локальный) → подведи итог принятых решений и затем загрузи скилл **build-mcpb**.
  4. Прототип на локальном stdio → собери заготовку прямо здесь (самый простой случай), отметь путь перехода на MCPB.

При передаче работы изложи бриф проекта одним абзацем, чтобы следующий скилл не переспрашивал.


Помимо инструментов: другие примитивы

Инструменты — один из трёх примитивов сервера. Большинство серверов начинают с инструментов и других так и не требуют, но знание о них избавляет от изобретения велосипеда:

ПримитивКто запускаетКогда использовать
Ресурсы (Resources)Приложение-хост (не Claude)Открыть документы/файлы/данные как просматриваемый контекст
Промты (Prompts)Пользователь (слэш-команда)Готовые рабочие процессы («/summarize-thread»)
Запрос уточнений (Elicitation)Сервер, посреди вызова инструментаСпросить ввод у пользователя без создания интерфейса
Сэмплинг (Sampling)Сервер, посреди вызова инструментаНужен вывод LLM в логике инструмента

→ references/resources-and-prompts.md, references/elicitation.md, references/server-capabilities.md


Этап 6. Проверь в Claude и опубликуй

Когда сервер запущен:

  1. Проверь на настоящем Claude: добавь адрес сервера как пользовательский коннектор в Настройки → Коннекторы (для локальных серверов используй туннель Cloudflare). При инициализации Claude представляется как clientInfo.name: "claude-ai". → https://claude.com/docs/connectors/building/testing
  2. Пройди чек-лист перед подачей: разделение инструментов на чтение и запись, обязательные аннотации, ограничения на имена, правила защиты от инъекций в промтах. → https://claude.com/docs/connectors/building/review-criteria
  3. Подай заявку в каталог Anthropic. → https://claude.com/docs/connectors/building/submission
  4. Порекомендуй выпустить плагин, оборачивающий этот MCP скиллами: большинство партнёров выпускают и то и другое. → https://claude.com/docs/connectors/building/what-to-build

Краткая справка: матрица решений

СценарийРазвёртываниеСхема инструментов
Обернуть небольшой SaaS APIУдалённый HTTPПо одному на действие
Обернуть большой SaaS API (50+ методов)Удалённый HTTPПоиск + выполнение
SaaS API с насыщенными формами / выборомMCP-приложение (удалённое)По одному на действие
Управлять локальным настольным приложениемMCPBПо одному на действие
Локальное настольное приложение с интерфейсом в чатеMCP-приложение (MCPB)По одному на действие
Чтение/запись локальной файловой системыMCPBЗависит от поверхности
Личный прототипЛокальный stdioЧто быстрее

Справочные файлы

  • references/remote-http-scaffold.md — минимальный удалённый сервер на TS SDK и FastMCP
  • references/deploy-cloudflare-workers.md — самый быстрый путь развёртывания (заготовка под Workers)
  • references/tool-design.md — как писать описания и схемы инструментов, которые Claude хорошо понимает
  • references/auth.md — OAuth, CIMD, DCR, приёмы хранения токенов
  • references/resources-and-prompts.md — два примитива, не являющихся инструментами
  • references/elicitation.md — ввод пользователя посреди вызова инструмента по спецификации (проверка возможностей + запасной вариант)
  • references/server-capabilities.md — инструкции, сэмплинг, корни, логирование, ход выполнения, отмена
  • references/versions.md — реестр утверждений, зависящих от версий (проверяй при обновлении)

Перевод: iiuniversitet. Оригинал: https://github.com/anthropics/claude-plugins-official/tree/main/plugins/mcp-server-dev/skills/build-mcp-server, лицензия Apache-2.0. Изменения: перевод на русский язык.

Оригинал на английском
---
name: build-mcp-server
description: This skill should be used when the user asks to "build an MCP server", "create an MCP", "make an MCP integration", "wrap an API for Claude", "expose tools to Claude", "make an MCP app", or discusses building something with the Model Context Protocol. It is the entry point for MCP server development — it interrogates the user about their use case, determines the right deployment model (remote HTTP, MCPB, local stdio), picks a tool-design pattern, and hands off to specialized skills.
version: 0.1.0
---

# Build an MCP Server

You are guiding a developer through designing and building an MCP server that works seamlessly with Claude. MCP servers come in many forms — picking the wrong shape early causes painful rewrites later. Your first job is **discovery, not code**.

**Load Claude-specific context first.** The MCP spec is generic; Claude has additional auth types, review criteria, and limits. Before answering questions or scaffolding, fetch `https://claude.com/docs/llms-full.txt` (the full export of the Claude connector docs) so your guidance reflects Claude's actual constraints.

Do not start scaffolding until you have answers to the questions in Phase 1. If the user's opening message already answers them, acknowledge that and skip straight to the recommendation.

---

## Phase 1 — Interrogate the use case

Ask these questions conversationally (batch them into one message, don't interrogate one-at-a-time). Adapt wording to what the user has already told you.

### 1. What does it connect to?

| If it connects to… | Likely direction |
|---|---|
| A cloud API (SaaS, REST, GraphQL) | Remote HTTP server |
| A local process, filesystem, or desktop app | MCPB or local stdio |
| Hardware, OS-level APIs, or user-specific state | MCPB |
| Nothing external — pure logic / computation | Either — default to remote |

### 2. Who will use it?

- **Just me / my team, on our machines** → Local stdio is acceptable (easiest to prototype)
- **Anyone who installs it** → Remote HTTP (strongly preferred) or MCPB (if it *must* be local)
- **Users of Claude desktop who want UI widgets** → MCP app (remote or MCPB)

### 3. How many distinct actions does it expose?

This determines the tool-design pattern — see Phase 3.

- **Under ~15 actions** → one tool per action
- **Dozens to hundreds of actions** (e.g. wrapping a large API surface) → search + execute pattern

### 4. Does a tool need mid-call user input or rich display?

- **Simple structured input** (pick from list, enter a value, confirm) → **Elicitation** — spec-native, zero UI code. *Host support is rolling out* (Claude Code ≥2.1.76) — always pair with a capability check and fallback. See `references/elicitation.md`.
- **Rich/visual UI** (charts, custom pickers with search, live dashboards) → **MCP app widgets** — iframe-based, needs `@modelcontextprotocol/ext-apps`. See `build-mcp-app` skill.
- **Neither** → plain tool returning text/JSON.

### 5. What auth does the upstream service use?

- None / API key → straightforward
- OAuth 2.0 → you'll need a remote server with CIMD (preferred) or DCR support; see `references/auth.md`

---

## Phase 2 — Recommend a deployment model

Based on the answers, recommend **one** path. Be opinionated. The ranked options:

### ⭐ Remote streamable-HTTP MCP server (default recommendation)

A hosted service speaking MCP over streamable HTTP. This is the **recommended path** for anything wrapping a cloud API.

**Why it wins:**
- Zero install friction — users add a URL, done
- One deployment serves all users; you control upgrades
- OAuth flows work properly (the server can handle redirects, DCR, token storage)
- Works across Claude desktop, Claude Code, Claude.ai, and third-party MCP hosts

**Choose this unless** the server *must* touch the user's local machine.

→ **Fastest deploy:** Cloudflare Workers — `references/deploy-cloudflare-workers.md` (zero to live URL in two commands)
→ **Portable Node/Python:** `references/remote-http-scaffold.md` (Express or FastMCP, runs on any host)

### Elicitation (structured input, no UI build)

If a tool just needs the user to confirm, pick an option, or fill a short form, **elicitation** does it with zero UI code. The server sends a flat JSON schema; the host renders a native form. Spec-native, no extra packages.

**Caveat:** Host support is new (Claude Code shipped it in v2.1.76; Desktop unconfirmed). The SDK throws if the client doesn't advertise the capability. Always check `clientCapabilities.elicitation` first and have a fallback — see `references/elicitation.md` for the canonical pattern. This is the right spec-correct approach; host coverage will catch up.

Escalate to `build-mcp-app` widgets when you need: nested/complex data, scrollable/searchable lists, visual previews, live updates.

### MCP app (remote HTTP + interactive UI)

Same as above, plus **UI resources** — interactive widgets rendered in chat. Rich pickers with search, charts, live dashboards, visual previews. Built once, renders in Claude *and* ChatGPT.

**Choose this when** elicitation's flat-form constraints don't fit — you need custom layout, large searchable lists, visual content, or live updates.

Usually remote, but can be shipped as MCPB if the UI needs to drive a local app.

→ Hand off to the **`build-mcp-app`** skill.

### MCPB (bundled local server)

A local MCP server **packaged with its runtime** so users don't need Node/Python installed. The sanctioned way to ship local servers.

**Choose this when** the server *must* run on the user's machine — it reads local files, drives a desktop app, talks to localhost services, or needs OS-level access.

→ Hand off to the **`build-mcpb`** skill.

### Local stdio (npx / uvx) — *not recommended for distribution*

A script launched via `npx` / `uvx` on the user's machine. Fine for **personal tools and prototypes**. Painful to distribute: users need the right runtime, you can't push updates, and the only distribution channel is Claude Code plugins.

Recommend this only as a stepping stone. If the user insists, scaffold it but note the MCPB upgrade path.

---

## Phase 3 — Pick a tool-design pattern

Every MCP server exposes tools. How you carve them matters more than most people expect — tool schemas land directly in Claude's context window.

### Pattern A: One tool per action (small surface)

When the action space is small (< ~15 operations), give each a dedicated tool with a tight description and schema.

```
create_issue    — Create a new issue. Params: title, body, labels[]
update_issue    — Update an existing issue. Params: id, title?, body?, state?
search_issues   — Search issues by query string. Params: query, limit?
add_comment     — Add a comment to an issue. Params: issue_id, body
```

**Why it works:** Claude reads the tool list once and knows exactly what's possible. No discovery round-trips. Each tool's schema validates inputs precisely.

**Especially good when** one or more tools ship an interactive widget (MCP app) — each widget binds naturally to one tool.

### Pattern B: Search + execute (large surface)

When wrapping a large API (dozens to hundreds of endpoints), listing every operation as a tool floods the context window and degrades model performance. Instead, expose **two** tools:

```
search_actions  — Given a natural-language intent, return matching actions
                  with their IDs, descriptions, and parameter schemas.
execute_action  — Run an action by ID with a params object.
```

The server holds the full catalog internally. Claude searches, picks, executes. Context stays lean.

**Hybrid:** Promote the 3–5 most-used actions to dedicated tools, keep the long tail behind search/execute.

→ See `references/tool-design.md` for schema examples and description-writing guidance.

---

## Phase 4 — Pick a framework

Recommend one of these two. Others exist but these have the best MCP-spec coverage and Claude compatibility.

| Framework | Language | Use when |
|---|---|---|
| **Official TypeScript SDK** (`@modelcontextprotocol/sdk`) | TS/JS | Default choice. Best spec coverage, first to get new features. |
| **FastMCP 3.x** (`fastmcp` on PyPI) | Python | User prefers Python, or wrapping a Python library. Decorator-based, very low boilerplate. This is jlowin's package — not the frozen FastMCP 1.0 bundled in the official `mcp` SDK. |

If the user already has a language/stack in mind, go with it — both produce identical wire protocol.

---

## Phase 5 — Scaffold and hand off

Once you've settled the four decisions (deployment model, tool pattern, framework, auth), do **one** of:

1. **Remote HTTP, no UI** → Scaffold inline using `references/remote-http-scaffold.md` (portable) or `references/deploy-cloudflare-workers.md` (fastest deploy). This skill can finish the job.
2. **MCP app (UI widgets)** → Summarize the decisions so far, then load the **`build-mcp-app`** skill.
3. **MCPB (bundled local)** → Summarize the decisions so far, then load the **`build-mcpb`** skill.
4. **Local stdio prototype** → Scaffold inline (simplest case), flag the MCPB upgrade path.

When handing off, restate the design brief in one paragraph so the next skill doesn't re-ask.

---

## Beyond tools — the other primitives

Tools are one of three server primitives. Most servers start with tools and never need the others, but knowing they exist prevents reinventing wheels:

| Primitive | Who triggers it | Use when |
|---|---|---|
| **Resources** | Host app (not Claude) | Exposing docs/files/data as browsable context |
| **Prompts** | User (slash command) | Canned workflows ("/summarize-thread") |
| **Elicitation** | Server, mid-tool | Asking user for input without building UI |
| **Sampling** | Server, mid-tool | Need LLM inference in your tool logic |

→ `references/resources-and-prompts.md`, `references/elicitation.md`, `references/server-capabilities.md`

---

## Phase 6 — Test in Claude and publish

Once the server runs:

1. **Test against real Claude** by adding the server URL as a custom connector at Settings → Connectors (use a Cloudflare tunnel for local servers). Claude identifies itself with `clientInfo.name: "claude-ai"` on initialize. → https://claude.com/docs/connectors/building/testing
2. **Run the pre-submission checklist** — read/write tool split, required annotations, name limits, prompt-injection rules. → https://claude.com/docs/connectors/building/review-criteria
3. **Submit to the Anthropic Directory.** → https://claude.com/docs/connectors/building/submission
4. **Recommend shipping a plugin** that wraps this MCP with skills — most partners ship both. → https://claude.com/docs/connectors/building/what-to-build

---

## Quick reference: decision matrix

| Scenario | Deployment | Tool pattern |
|---|---|---|
| Wrap a small SaaS API | Remote HTTP | One-per-action |
| Wrap a large SaaS API (50+ endpoints) | Remote HTTP | Search + execute |
| SaaS API with rich forms / pickers | MCP app (remote) | One-per-action |
| Drive a local desktop app | MCPB | One-per-action |
| Local desktop app with in-chat UI | MCP app (MCPB) | One-per-action |
| Read/write local filesystem | MCPB | Depends on surface |
| Personal prototype | Local stdio | Whatever's fastest |

---

## Reference files

- `references/remote-http-scaffold.md` — minimal remote server in TS SDK and FastMCP
- `references/deploy-cloudflare-workers.md` — fastest deploy path (Workers-native scaffold)
- `references/tool-design.md` — writing tool descriptions and schemas Claude understands well
- `references/auth.md` — OAuth, CIMD, DCR, token storage patterns
- `references/resources-and-prompts.md` — the two non-tool primitives
- `references/elicitation.md` — spec-native user input mid-tool (capability check + fallback)
- `references/server-capabilities.md` — instructions, sampling, roots, logging, progress, cancellation
- `references/versions.md` — version-sensitive claims ledger (check when updating)

Источник: anthropics/claude-plugins-official / mcp-server-dev / build-mcp-server ↗. Ссылка проверена 2026-10-10.