使用说明
无服务器MCP
一个现代的TypeScript包,实现了具有模块化架构和AWS Lambda流支持的模型上下文协议(MCP)。
特性
- 🎯 完全支持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边界定义
运输
支持多种传输机制:
- 标准运输 -用于子流程通信
- Http流传输 -对于带有服务器发送事件的HTTP
- 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
例子
请参阅 示例 完整工作示例目录:
发展
# 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';
许可证
麻省理工学院-见 许可证 文件以获取详细信息。
贡献
欢迎投稿!请阅读我们的 贡献指南 并将pull请求提交到我们的存储库。
