使用说明
无服务器MCP(微服务云应用平台)
一个现代的TypeScript包,采用模块化架构实现模型上下文协议(MCP),并支持AWS Lambda流处理。
特点
- 🎯(靶心) 全面支持MCP协议 - 完全实现MCP 2024-11-05规范
- 🧩 这个符号在中文里通常被用作“拼图”或“碎片”的象征,没有直接对应的中文词汇,但可以根据上下文翻译为“拼图块”或“碎片”等意思。如果单独使用,也可以保持原样或解释为“一个拼图块/碎片”。 模块化架构 - 为提示、资源、工具和根目录设置独立的切片
- 🚀 表情符号“🚀”在中文中通常被直接保留为原样,因为它是一个通用的表情符号,表示火箭、快速上升或加速等概念,没有直接对应的中文翻译。所以,“🚀”翻译成中文仍然是“🚀”。 AWS Lambda 准备就绪 - 内置对Lambda流式响应的支持
- 📡(天线/信号发射器) 多种运输方式 - stdio(标准输入输出)、HTTP 流传输和 Lambda 传输
- 🔧 修理工具 TypeScript 优先 - 全类型安全性,配备全面的模式(或架构)
- 🧪 表示“实验”或“化学实验”。 经过充分测试 - 全面的测试套件,高覆盖率
- ⚡(闪电符号,无特定中文含义,可表示速度、能量、惊喜等抽象概念) 高性能 - 为无服务器和边缘环境优化
- 🎨(颜料/美术符号) 装饰器支持 - 可选的装饰器,用于实现简洁的API设计
安装
npm install serverless-mcp
# or
pnpm add serverless-mcp
# or
yarn add serverless-mcp
快速入门
基本服务器
import {
McpServer,
StdioTransport,
McpToolProvider,
McpResourceProvider,
} from 'serverless-mcp';
// Create transport and server
const transport = new StdioTransport();
const server = new McpServer(transport, {
name: 'my-mcp-server',
version: '1.0.0',
});
// Setup tools
const toolProvider = new McpToolProvider();
toolProvider.registerTool({
name: 'hello',
description: 'Say hello',
inputSchema: {
type: 'object',
properties: {
name: { type: 'string', description: 'Name to greet' }
},
required: ['name']
},
handler: async (args) => `Hello, ${args.name}!`
});
server.setToolProvider(toolProvider);
AWS Lambda 服务器
import { LambdaMcpHandler } from 'serverless-mcp';
export const handler = LambdaMcpHandler.create(
{
name: 'lambda-mcp-server',
version: '1.0.0',
transport: {
cors: { origin: '*' },
enableLogs: true,
},
},
(server) => {
// Configure your server here
const toolProvider = new McpToolProvider();
// ... setup tools, resources, prompts
server.setToolProvider(toolProvider);
}
);
核心概念
切片
该库被组织成多个模块化部分,每个部分负责处理MCP协议的一个特定方面:
- 提示 - 模板消息和对话模式
- 资源 - 数据源和内容提供商
- 工具 - 可由AI模型执行的功能
- 根源 - 文件系统和URI边界定义
交通
支持多种传输机制:
- StdioTransport(可译为“标准I/O传输”或根据上下文具体含义调整,但直接翻译保持原样为“Stdio传输”) - 用于子进程通信
- HTTP流传输 - 对于支持服务器发送事件的HTTP
- Lambda流式传输(或Lambda流传输) - 对于支持响应流的AWS Lambda
API 参考文档
工具
import { McpToolProvider } from 'serverless-mcp';
const toolProvider = new McpToolProvider();
// Simple tool
toolProvider.registerTool(
McpToolProvider.createSimpleTool(
'current-time',
'Get current timestamp',
() => new Date().toISOString()
)
);
// Parameterized tool
toolProvider.registerTool(
McpToolProvider.createParameterizedTool(
'calculate',
'Perform calculations',
[
{ name: 'operation', type: 'string', required: true },
{ name: 'a', type: 'number', required: true },
{ name: 'b', type: 'number', required: true },
],
async (args) => {
// Tool implementation
}
)
);
资源
import { McpResourceProvider } from 'serverless-mcp';
const resourceProvider = new McpResourceProvider();
// Static resource
resourceProvider.registerResource(
McpResourceProvider.createStaticResource(
'memory://config',
'Configuration',
JSON.stringify({ setting: 'value' }),
'application/json'
)
);
// Dynamic resource
resourceProvider.registerResource(
McpResourceProvider.createDynamicResource(
'memory://stats',
'Live Statistics',
() => JSON.stringify({ timestamp: Date.now() }),
'application/json'
)
);
提示
import { McpPromptProvider, PromptUtils } from 'serverless-mcp';
const promptProvider = new McpPromptProvider();
promptProvider.registerPrompt({
name: 'greeting',
description: 'Generate personalized greetings',
arguments: [
{ name: 'name', required: true },
{ name: 'formal', required: false }
],
handler: async (args) => {
const greeting = args.formal
? `Good day, ${args.name}`
: `Hi ${args.name}!`;
return [PromptUtils.createUserMessage(greeting)];
}
});
中间件
为工具添加中间件以处理横切关注点:
import {
createTimingMiddleware,
createLoggingMiddleware,
createTimeoutMiddleware,
createRateLimitMiddleware,
} from 'serverless-mcp';
const toolProvider = new McpToolProvider();
toolProvider
.use(createTimingMiddleware())
.use(createLoggingMiddleware())
.use(createTimeoutMiddleware(5000))
.use(createRateLimitMiddleware(10, 60000)); // 10 calls per minute
示例
见 例子 包含完整工作示例的目录:
- 基本服务器 - 完整的stdio服务器,具备所有功能
- Lambda 服务器 - AWS Lambda 部署示例
发展
# Install dependencies
pnpm install
# Run tests
pnpm test
# Build the package
pnpm build
# Lint and format
pnpm lint
pnpm format
建筑学
src/
├── core/ # Core JSON-RPC and MCP protocol
├── prompts/ # Prompt management and templates
├── resources/ # Resource providers and caching
├── tools/ # Tool execution and middleware
├── roots/ # Root directory management
├── transports/ # Transport implementations
└── lambda/ # AWS Lambda integration
每个切片都是独立可测试的,并且在需要时可以单独使用。
TypeScript 支持
该库是使用TypeScript构建的,并提供了全面的类型定义:
import type {
McpTool,
McpResource,
McpPrompt,
JsonRpcMessage,
ToolDefinition,
ResourceDefinition,
PromptDefinition,
} from 'serverless-mcp';
许可证
MIT - 看 许可证 文件中包含详细信息。
贡献;做出贡献
欢迎投稿!请阅读我们的 贡献指南 并向我们的仓库提交拉取请求。
