mcp-server-plus
mcp-server-plus
Введение
mcp-server-plus — это набор инструментов для MCP-серверов: небольшой TypeScript-фреймворк для создания серверов Model Context Protocol без повторения шаблонного кода.
Примечание о названии пакета:
mcp-server-toolkitуже занято на npm, поэтому этот пакет публикуется какmcp-server-plus.
Related MCP server: MCP Framework
Зачем существует этот пакет
Разработчики, начинающие создавать MCP-серверы, снова и снова реализуют регистрацию инструментов, подсказки, ресурсы, аутентификацию, логирование и тесты. Популярные библиотеки, такие как Express и Hono, успешны, потому что делают очевидный путь очевидным. mcp-server-plus стремится к такому же DX поверх официального @modelcontextprotocol/sdk.
Установка
npm install mcp-server-plus zodТребуется Node.js 18+.
Возможности
Регистрация инструментов
Реестр подсказок
Ресурсы
Аутентификация / авторизация
Логирование
Метрики
Потоковая передача (через MCP stdio transport)
Middleware
CLI-генератор каркаса
Вспомогательные средства для тестирования
Быстрый старт
import { z } from "zod";
import { createServer, toolResult } from "mcp-server-plus";
const weatherTool = {
description: "Get weather",
inputSchema: { city: z.string() },
async handler({ city }: { city: string }) {
return toolResult(`Weather in ${city}: sunny`);
},
};
const server = createServer({
name: "demo",
version: "1.0.0",
});
server.tool("weather", weatherTool);
await server.start(); // stdioCLI
npx mcp-server-plus init my-weather-server
cd my-weather-server
npm install
npm startСправочник API
createServer(options) / createMcpServer(options)
Создаёт McpKitServer.
Параметр | Тип | Описание |
|
| Имя сервера |
|
| Версия сервера |
|
| Необязательные MCP-инструкции |
|
| API-ключ / пользовательская аутентификация |
|
| Глобальный middleware |
|
| Пользовательский логгер |
server.tool(name, definition)
Регистрирует инструмент (также подключается к MCP SDK).
server.prompt(name, definition)
Регистрирует шаблон подсказки.
server.resource(uri, definition)
Регистрирует ресурс.
server.use(middleware)
Добавляет middleware вокруг вызовов инструментов.
server.start()
Подключает MCP stdio transport (потоковая передача обрабатывается SDK).
server.invokeTool(name, args, meta?)
Вызов в процессе для тестов/скриптов.
Вспомогательные средства для тестирования
import { callTool, expectText } from "mcp-server-plus/testing";Примеры
server.tool("weather", weatherTool);
server.prompt("greet", {
description: "Greeting",
arguments: [{ name: "name", required: true }],
handler: async ({ name }) => ({
messages: [
{ role: "user", content: { type: "text", text: `Hello ${name}` } },
],
}),
});
server.resource("memo://hello", {
mimeType: "text/plain",
handler: async (uri) => ({
contents: [{ uri: uri.href, text: "Hello", mimeType: "text/plain" }],
}),
});Расширенные примеры
Аутентификация + RBAC
const server = createServer({
name: "secure",
version: "1.0.0",
// MCP_API_KEY is the expected secret only. Callers must still send meta.apiKey.
auth: { apiKey: process.env.MCP_API_KEY, required: true },
});
server.tool("deploy", {
roles: ["admin"],
scopes: ["deploy"],
handler: async () => toolResult("deployed"),
});Middleware + метрики
server.use(async (ctx, next) => {
const started = Date.now();
try {
return await next();
} finally {
ctx.log.info("tool timing", ctx.toolName, Date.now() - started);
}
});
console.log(server.metricsSnapshot());Интеграция с фреймворками
Работает с любым MCP-хостом, поддерживающим stdio-серверы. Укажите хосту ваш процесс node dist/index.js (или npm start).
Пример конфигурации MCP-хоста:
{
"mcpServers": {
"demo": {
"command": "node",
"args": ["/path/to/server/src/index.js"]
}
}
}Использование TypeScript
Полноценная поддержка TypeScript. Аргументы инструментов выводятся из Zod inputSchema, если вы явно типизируете обработчик. Включите strict для лучших результатов.
Обработка ошибок
Типизированные ошибки: McpKitError, AuthError, ForbiddenError.
Сбои инструментов возвращают { isError: true, content: [...] }, чтобы хосты могли безопасно их отображать.
Производительность
Тонкая обёртка над официальным SDK (без дополнительных сетевых переходов)
Middleware только при вызовах инструментов
Метрики используют простые счётчики (низкие накладные расходы)
Лучшие практики
Держите инструменты небольшими и учитывайте побочные эффекты
Проверяйте входные данные с помощью Zod-схем
Используйте
optionalаутентификацию для локальной/разработки,requiredдля общих хостовПредпочитайте
invokeToolв модульных тестах; используйте stdio для интеграционных
FAQ
Это официальный SDK?
Нет — он построен на @modelcontextprotocol/sdk с улучшенным DX.
Поддерживает ли потоковую передачу?
Да, через MCP stdio transport, используемый server.start().
CJS или ESM?
Двойная публикация; ESM в приоритете.
Руководство по миграции
С сырого SDK McpServer
Замените шаблонный код registerTool на server.tool(name, definition) и сохраните Zod-схемы. Вызывайте server.start() вместо ручного подключения StdioServerTransport.
SemVer
Критические изменения выходят в мажорных версиях и документируются в CHANGELOG.md.
Устранение неполадок
Симптом | Исправление |
Хост не может запустить сервер | Убедитесь, что вызывается |
Неавторизованные вызовы инструментов | Отправьте |
Отсутствуют типы | Импортируйте из |
Вклад
См. CONTRIBUTING.md.
Лицензия
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
MCP-first toolbox for agents: KV storage, auth, queue, and utility tools. Free in early access.
A simple Typescript MCP server built using the official MCP Typescript SDK and smithery/cli. This…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA TypeScript implementation of a Model Context Protocol server that provides a frictionless framework for developers to build and deploy AI tools and prompts, focusing on developer experience with zero boilerplate and automatic tool registration.1,264 npm14MIT
- FlicenseNot gradedqualityDmaintenanceA TypeScript framework for building Model Context Protocol (MCP) servers with automatic discovery and loading of tools, resources, and prompts.7 npm-
- AlicenseNot gradedqualityDmaintenanceA clean, reusable TypeScript boilerplate for building Model Context Protocol servers with support for custom tools and resources.3 npmMIT
- AlicenseNot gradedqualityDmaintenanceA TypeScript framework for building Model Context Protocol servers with a decorator-based API, enabling custom tools, resources, and prompts for AI applications.22 npmMIT