无服务器MCP企业工件平台
一种完全无服务器、成本效益高的AWS架构,通过语义搜索将企业工件(编码规范、文档)暴露给集成在集成开发环境(IDE)中的API。
架构概述
组件
- Amazon S3(亚马逊简单存储服务):
- my-enterprise-artifacts-bucket原始文件(PDF、Markdown) - my-enterprise-vectors-bucket向量嵌入和索引(S3 向量)
- AWS Lambda:
- 摄入 Lambda(或:Lambda 摄入)处理上传内容,分块文本,生成嵌入向量 - 查询 Lambda处理API请求,执行向量搜索
- 应用程序负载均衡器带身份验证的HTTPS API终端
- Amazon Bedrock (可选):使用Titan Embeddings作为备用方案
- Amazon Cognito(亚马逊认知服务) (可选):API 认证
成本优化
- S3 向量存储:与传统向量数据库相比,节省70%-95%的成本(约0.023美元/GB/月)
- 使用开源嵌入模型(sentence-transformers)以避免Bedrock费用
- 低内存Lambda函数(128-512MB)
- 使用ALB而非API网关(~$0.0225/小时 + 数据)
- S3 Intelligent-Tiering用于存储优化
项目结构
.
├── lambda/
│ ├── ingestion/
│ │ ├── handler.py # Ingestion Lambda handler
│ │ ├── requirements.txt # Dependencies
│ │ └── Dockerfile # Container image (optional)
│ └── query/
│ ├── handler.py # Query Lambda handler
│ ├── requirements.txt # Dependencies
│ └── Dockerfile # Container image (optional)
├── utils/
│ ├── s3_vectors.py # S3 vector operations
│ ├── embedding.py # Embedding generation
│ └── text_processing.py # Text chunking utilities
├── infrastructure/
│ ├── app.py # AWS CDK main app
│ ├── stacks/
│ │ ├── storage_stack.py # S3 buckets
│ │ ├── compute_stack.py # Lambda functions
│ │ └── network_stack.py # ALB, VPC
│ └── cdk.json # CDK configuration
├── scripts/
│ ├── deploy.sh # Deployment script
│ └── upload_artifact.py # Sample upload script
└── requirements.txt # Root dependencies先决条件
- 已使用凭据配置的 AWS CLI
- Python 3.9+
- 已安装 AWS CDK(
npm install -g aws-cdk) - Docker(用于Lambda容器镜像)
设置说明
1. 安装依赖项
pip install -r requirements.txt2. 部署基础设施
cd infrastructure
cdk bootstrap aws://ACCOUNT-ID/us-east-1
cdk deploy --all3. 上传示例工件
python scripts/upload_artifact.py --file path/to/coding-guidelines.pdf4. 测试API
curl -X POST https://YOUR-ALB-ENDPOINT/query \
-H "Content-Type: application/json" \
-d '{"query": "What are the guidelines for error handling in Java?"}'API端点
POST /query 翻译为中文是:“发送(请求)到/query(端点)”
对企业工件执行语义搜索。
请求:
{
"query": "What are the guidelines for error handling in Java?",
"top_k": 5
}回答:
{
"results": [
{
"document_id": "coding-guidelines.pdf",
"chunk": "Error handling in Java should use try-catch blocks...",
"score": 0.89,
"metadata": {
"page": 15,
"s3_uri": "s3://my-enterprise-artifacts-bucket/coding-guidelines.pdf"
}
}
]
}监测
- CloudWatch Logs(云日志服务)Lambda 执行日志
- CloudWatch Metrics(云监控指标)Lambda 函数调用次数、持续时间、错误数
- S3指标存储,请求计数
成本估算(每月)
- S3 存储(100GB):约2.30美元
- S3 API 调用(1M):约0.40美元
- Lambda(100万次调用):约0.20美元 + 计算资源费用
- ALB:约16.20美元(720小时)
- 总计每月约20-30美元,适用于中等使用量
安全
- 具有最小权限访问的IAM角色
- 使用HTTPS/TLS的ALB(应用程序负载均衡器)
- 可选:使用 Amazon Cognito 进行身份验证
- S3存储桶静态加密
- Lambda函数的VPC隔离
发展
本地测试
# Test ingestion locally
cd lambda/ingestion
python -m pytest tests/
# Test query locally
cd lambda/query
python -m pytest tests/添加新工件
上传到S3存储桶 - EventBridge将自动触发数据摄入:
aws s3 cp my-document.pdf s3://my-enterprise-artifacts-bucket/文档
- QUICKSTART.md 翻译为中文是:“快速入门指南.md” 或者 “快速开始指南.md”(具体翻译可能根据上下文略有调整,但基本意思是相同的)。这里,“QUICKSTART”通常指的是一个帮助用户快速上手或开始使用某个软件、系统或服务的指南或文档,“.md”表示这是一个Markdown格式的文件 - 15分钟内快速上手
- ARCHITECTURE.md(文件名可译为“架构说明.md”或保持原样,根据上下文决定是否需要具体翻译文件名) - 详细的架构文档
- DIAGRAMS.md 翻译为中文是:“图表.md”(其中,“.md”通常表示Markdown格式的文件) - 可视化流程图和架构图
- \
TROUBLESHOOTING.md\翻译为中文是:“故障排除指南.md” - 常见问题及解决方案 - IDE_INTEGRATION.md 翻译为中文是:“IDE集成.md”(其中,“md”通常表示Markdown文件格式,但在此处作为文件名的一部分,直接保留不翻译)。所以,完整的翻译可以是:“IDE集成说明文件(Markdown格式)”。不过,通常在实际语境中,我们可能会简化为“IDE集成.md”或直接说明这是一个关于IDE集成的Markdown文档 - IDE 集成示例
- 项目总结.md - 完整的项目概览
故障排除
见 故障排除指南.md 针对常见问题。
许可证
麻省理工学院(MIT)
