mcp-server-plus
mcp-server-plus
简介
mcp-server-plus 是一个 MCP 服务器工具包——一个用于构建 Model Context Protocol 服务器的小型 TypeScript 框架,无需重复编写样板代码。
包名说明:
mcp-server-toolkit在 npm 上已被占用,因此本包以mcp-server-plus发布。
Related MCP server: MCP Framework
为什么有这个包
开发者在启动 MCP 服务器时,反复地重新实现工具注册、提示词、资源、认证、日志和测试。Express 和 Hono 等流行库之所以成功,是因为它们让常规路径变得清晰明了。mcp-server-plus 的目标是在官方 @modelcontextprotocol/sdk 之上提供同样的开发体验。
安装
npm install mcp-server-plus zod需要 Node.js 18+。
功能特性
工具注册
提示词注册表
资源
认证 / 授权
日志
指标
流式传输(通过 MCP stdio 传输)
中间件
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 startAPI 参考
createServer(options) / createMcpServer(options)
创建一个 McpKitServer 实例。
选项 | 类型 | 描述 |
|
| 服务器名称 |
|
| 服务器版本 |
|
| 可选的 MCP 指令 |
|
| API 密钥 / 自定义认证 |
|
| 全局中间件 |
|
| 自定义日志器 |
server.tool(name, definition)
注册一个工具(同时接入 MCP SDK)。
server.prompt(name, definition)
注册一个提示词模板。
server.resource(uri, definition)
注册一个资源。
server.use(middleware)
在工具调用周围添加中间件。
server.start()
连接 MCP stdio 传输(流式传输由 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"),
});中间件 + 指标
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());框架集成
适用于任何支持 stdio 服务器的 MCP 主机。将主机指向你的 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 之上的轻量封装(无额外网络跳数)
中间件仅在工具调用时生效
指标使用简单计数器(低开销)
最佳实践
保持工具小巧并注意副作用
使用 Zod schema 验证输入
本地/开发环境使用
optional认证,共享主机使用required单元测试中优先使用
invokeTool;集成测试使用 stdio
常见问题
这是官方 SDK 吗?
不是——它构建在 @modelcontextprotocol/sdk 之上,提供更好的开发体验。
支持流式传输吗?
支持,通过 server.start() 使用的 MCP stdio 传输实现。
CJS 还是 ESM?
双格式发布;以 ESM 为主。
迁移指南
从原始 SDK McpServer 迁移
用 server.tool(name, definition) 替换 registerTool 样板代码,并保留 Zod schema。调用 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.3,446 npm14MIT
- FlicenseNot gradedqualityDmaintenanceA TypeScript framework for building Model Context Protocol (MCP) servers with automatic discovery and loading of tools, resources, and prompts.3 npm-
- AlicenseNot gradedqualityDmaintenanceA clean, reusable TypeScript boilerplate for building Model Context Protocol servers with support for custom tools and resources.5 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