使用说明
集成DynamoDB的MCP服务器
一种模型上下文协议(MCP)服务器,使用DynamoDB存储和检索用户信息和上下文,以提供个性化的问答功能。
🚀 特性
- 用户认证:基于JWT的身份验证,包括注册和登录
- 上下文管理:存储和检索用户对话历史和上下文
- 问答:具有用户特定响应的情境感知问答
- MCP协议:完整的模型上下文协议实现
- DynamoDB集成:用于用户数据的可扩展NoSQL数据库
- 安全:速率限制、CORS、输入验证和安全密码处理
- 日志记录:与Winston全面合作
- TypeScript:具有严格类型的完全TypeScript支持
📋 先决条件
- Node.js 18+
- 具有DynamoDB访问权限的AWS帐户
- 已配置AWS CLI(可选,用于本地开发)
🛠️ 安装
-
克隆存储库
git clone <repository-url> cd mcp-dynamodb-server -
安装依赖项
npm install -
设置环境变量
cp env.example .env编辑
.env根据您的配置:# Server Configuration PORT=3000 NODE_ENV=development # JWT Configuration JWT_SECRET=your-super-secret-jwt-key-change-this-in-production JWT_EXPIRES_IN=24h JWT_REFRESH_EXPIRES_IN=7d # AWS Configuration AWS_REGION=us-east-1 AWS_ACCESS_KEY_ID=your-aws-access-key AWS_SECRET_ACCESS_KEY=your-aws-secret-key # DynamoDB Configuration DYNAMODB_ENDPOINT=http://localhost:8000 # Use AWS endpoint for production DYNAMODB_TABLES_USERS=users DYNAMODB_TABLES_USER_CONTEXTS=user_contexts DYNAMODB_TABLES_QUESTIONS_ANSWERS=questions_answers -
设置DynamoDB表
npm run setup-db -
构建项目
npm run build -
启动服务器
# Development mode npm run dev # Production mode npm start
🏗️ 项目结构
mcp-dynamodb-server/
├── src/
│ ├── server/
│ │ ├── mcp-server.ts # Main MCP server implementation
│ │ ├── handlers/
│ │ │ ├── auth-handler.ts # Authentication endpoints
│ │ │ ├── context-handler.ts # Context management
│ │ │ └── qa-handler.ts # Question answering
│ │ └── middleware/
│ │ ├── auth-middleware.ts # JWT authentication
│ │ └── logging.ts # Request logging
│ ├── database/
│ │ ├── dynamodb-client.ts # DynamoDB connection and operations
│ │ └── models/
│ │ └── user.ts # User data model
│ ├── utils/
│ │ ├── config.ts # Configuration management
│ │ └── logger.ts # Logging utilities
│ └── types/
│ └── mcp-types.ts # TypeScript type definitions
├── scripts/
│ └── setup-dynamodb.js # DynamoDB table creation
├── package.json
├── tsconfig.json
└── README.md
🔧 配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
PORT |
服务器端口 | 3000 |
NODE_ENV |
环境 | development |
JWT_SECRET |
JWT签名密码 | 必填 |
JWT_EXPIRES_IN |
访问令牌到期 | 24h |
JWT_REFRESH_EXPIRES_IN |
刷新令牌到期 | 7d |
AWS_REGION |
AWS区域 | us-east-1 |
AWS_ACCESS_KEY_ID |
AWS访问密钥 | 必填 |
AWS_SECRET_ACCESS_KEY |
AWS密钥 | 必填 |
DYNAMODB_ENDPOINT |
DynamoDB端点 | http://localhost:8000 |
DynamoDB表
服务器创建三个DynamoDB表:
- 用户 -用户配置文件和身份验证数据
- 用户文本 -用户对话历史和上下文
- 问题_答案 -问答配对和回答
📚 API文档
身份验证端点
注册用户
POST /api/auth/register
Content-Type: application/json
{
"email": "user@example.com",
"username": "username",
"password": "password123",
"firstName": "John",
"lastName": "Doe"
}
登录
POST /api/auth/login
Content-Type: application/json
{
"email": "user@example.com",
"password": "password123"
}
刷新令牌
POST /api/auth/refresh
Content-Type: application/json
{
"refreshToken": "your-refresh-token"
}
上下文管理
创建上下文
POST /api/context
Authorization: Bearer <access-token>
Content-Type: application/json
{
"content": "User conversation context",
"source": "chat",
"tags": ["conversation", "support"],
"relevance": 0.8
}
获取用户上下文
GET /api/context/:userId?limit=10&offset=0
Authorization: Bearer <access-token>
更新上下文
PUT /api/context/:userId/:contextId
Authorization: Bearer <access-token>
Content-Type: application/json
{
"content": "Updated context content",
"relevance": 0.9
}
问答
提问
POST /api/qa/ask
Authorization: Bearer <access-token>
Content-Type: application/json
{
"question": "What is the status of my order?",
"useContext": true,
"contextLimit": 10,
"category": "support",
"priority": 3,
"tags": ["order", "status"]
}
获取问答历史
GET /api/qa/history/:userId?limit=20&offset=0
Authorization: Bearer <access-token>
MCP协议
服务器实现了模型上下文协议并公开了工具:
get_user_context-检索用户上下文和对话历史记录store_user_context-存储新的用户上下文或对话answer_question-使用用户上下文回答问题get_user_profile-获取用户配置文件信息
🔒 安全功能
- JWT身份验证:基于令牌的安全身份验证
- 密码散列:bcrypt用于密码安全
- 速率限制:按IP和用户请求速率限制
- 输入验证:所有输入的Joi模式验证
- CORS保护:可配置的CORS设置
- 头盔:安全标头中间件
- 请求日志记录:全面的请求/响应日志记录
🧪 测试
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Run tests in watch mode
npm run test:watch
📝 日志记录
服务器使用Winston进行以下级别的日志记录:
- 错误:应用程序错误和异常
- 警告:警告信息
- 信息:一般信息和要求
- 调试:详细的调试信息
日志将写入:
- 控制台(开发)
logs/app.log(所有级别)logs/error.log(仅错误级别)
🚀 部署
Docker部署
-
构建Docker镜像
docker build -t mcp-dynamodb-server . -
运行容器
docker run -p 3000:3000 --env-file .env mcp-dynamodb-server
AWS部署
- 设置AWS凭据
- 创建DynamoDB表
- 部署到ECS或Lambda
- 配置环境变量
🔧 发展
可用脚本
npm run build # Build TypeScript
npm run dev # Start development server
npm run start # Start production server
npm run test # Run tests
npm run lint # Run ESLint
npm run lint:fix # Fix ESLint issues
npm run format # Format code with Prettier
npm run setup-db # Set up DynamoDB tables
代码质量
- TypeScript:严格的类型检查
- 埃斯林特:代码过滤和样式执行
- 更漂亮:代码格式
- 开玩笑:单元和集成测试
🤝 贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 运行测试套件
- 提交拉取请求
📄 许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
🆘 支持
有关支持和问题:
- 在存储库中创建问题
- 检查文档
- 查看API示例
🔮 路线图
- []人工智能服务集成(OpenAI、Anthropic)
- []上下文总结与优化
- []实时通知
- []高级分析和指标
- []多租户支持
- []GraphQL API
- []WebSocket支持实时功能