Token导航 LogoToken导航TokenDH.com
Serverless MCP Chatbot Demo logo
运维云端未说明官方级别未说明来源级核验

Serverless MCP Chatbot Demo

MCP Server

一个基于FastMCP和AWS Bedrock的无服务器聊天机器人,无需认证或控制台设置,适用于演示和教育目的。

工具数

1

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude聊天机器人Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

lukelittle

提供方

lukelittle

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

🎵 无服务器MCP聊天机器人演示

一个非常简单的无服务器聊天机器人,使用 快速MCP + AWS基岩.没有身份验证,没有控制台设置,只有代码。非常适合演示!

询问卢克的黑胶唱片收藏,并观察机器人智能地决定何时查询数据。 真正的人工智能 行动起来! 🤖

![License: MIT](LICENSE) AWS Python

______________________________________________________________________

🎯 为什么是这个Demo?

非常适合 AWS用户组大学演讲 因为它是:

简单 -在2分钟内部署 ./deploy.sh\ ✅ 无控制台设置 -一切都在代码中,无需点击AWS控制台\ ✅ AI 代理 -观察机器人决定何时使用工具\ ✅ 真正的MCP -实现模型上下文协议标准\ ✅ 便宜的 -每月约15美元,主要是基岩成本\ ✅ 教育的 -干净的代码,大量注释

什么是“代理”?

传统的机器人总是做同样的事情。 代理AI决定:

  • 问“我有什么格里姆斯记录?”→ ✅ 使用工具,查询CSV
  • 问“什么是黑胶唱片?”→ ❌ 没有工具,答案来自知识

机器人 选择 基于这个问题。这是代理行为!

______________________________________________________________________

🏗️ 架构(超级简单)

Browser          API Gateway         Lambda               Bedrock
(S3 HTML)    →   (Public)       →   (FastMCP)       →    (Claude)
                                         ↓
                                     S3 CSV Data

就是这样! 没有身份验证,没有数据库,只是:

  1. S3托管网站
  2. API网关路由请求
  3. Lambda运行FastMCP+基岩
  4. CSV文件包含数据

为什么选择FastMCP?

快速MCP =Python的模型上下文协议实现

# Define tools with a decorator - SO SIMPLE!
@mcp.tool()
def query_vinyl_collection(query_type: str, search_term: str) -> str:
    """Query the vinyl collection"""
    return results

就是这样! FastMCP手柄:

  • ✅ 工具模式生成
  • ✅ MCP协议合规性
  • ✅ 基岩格式转换
  • ✅ 工具执行

与手动:编写JSON模式,处理工具路由,解析响应\ vs.代理核心:无需控制台设置,一切都在代码中\ vs.朗链:更轻,专注于MCP标准

阅读 框架_GUIDE.md 详细比较!

______________________________________________________________________

🚀 快速入门(说真的,这很容易)

先决条件

  • 已配置CLI的AWS帐户(aws configure)
  • Terraform已安装
  • Python 3.12+
  • 基岩通道(允许克劳德进入您所在的地区)

部署一切

./deploy.sh

就是这样! 脚本:

  1. 构建Lambda包
  2. 部署基础设施
  3. 配置前端
  4. 上传到S3
  5. 显示URL

访问URL并开始聊天! 🎉

手动步骤(如果你想控制)

# 1. Build Lambda
cd lambda && ./build.sh && cd ..

# 2. Deploy infrastructure
cd infra/terraform
terraform init
terraform apply

# 3. Get API URL
terraform output api_chat_url

# 4. Update frontend/index.html with API URL

# 5. Upload frontend
BUCKET=$(terraform output -raw frontend_bucket_name)
aws s3 cp ../../frontend/index.html s3://$BUCKET/

# 6. Get website URL
terraform output frontend_website_url

______________________________________________________________________

📁 项目结构

serverless-mcp-chatbot-demo/
├── lambda/
│   ├── handler.py           # FastMCP + Bedrock integration
│   ├── requirements.txt     # Just boto3 + fastmcp!
│   └── build.sh             # Build deployment package
├── infra/terraform/
│   ├── main.tf              # ALL infrastructure (simple!)
│   ├── variables.tf         # Configuration
│   └── outputs.tf           # URLs and next steps
├── frontend/
│   └── index.html           # Single-file web app
├── data/
│   └── discogs.csv          # Vinyl collection data
├── FRAMEWORK_GUIDE.md       # FastMCP vs alternatives
├── DEPLOYMENT_CHECKLIST.md  # Step-by-step guide
└── README.md                # You are here!

没有身份验证代码,没有复杂的状态管理,没有微服务——只有工作的AI!

______________________________________________________________________

💬 如何使用

示例提示

提示发生了什么使用了工具?
“我拥有哪些Grimes专辑?”查询CSV,返回结果✅ 是的
“显示4AD标签的乙烯基”按标签筛选✅ 是的
“我在2024年添加了哪些记录?”按年份筛选✅ 是的
“我有Kraftwerk吗?”搜索艺术家✅ 是的
“什么是黑胶唱片?”来自知识的回答❌ 没有
“MCP是如何工作的?”解释概念❌ 没有

注意 🔧 使用FastMCP工具 调用工具时使用徽章!

30秒演示脚本

“这个聊天机器人演示了使用FastMCP和AWS Bedrock的代理人工智能。当我询问我的黑胶唱片收藏时”\[键入“我有什么Grimes记录?”\]“人工智能决定查询数据-看到绿色徽章?但如果我问”\[键入”什么是黑胶唱片?\]“它只是根据知识回答。人工智能选择何时使用工具。所有无服务器,每月花费15美元,真正的MCP协议,一切都在代码中-不需要控制台设置!”

______________________________________________________________________

🔧 它是如何工作的(引擎盖下)

1.FastMCP工具定义

from mcp.server.fastmcp import FastMCP

# Create MCP server
mcp = FastMCP("vinyl-collection-server")

# Define tool with decorator
@mcp.tool()
def query_vinyl_collection(query_type: str, search_term: str, limit: int = 10) -> str:
    """
    Query Luke's vinyl record collection.
    
    Args:
        query_type: One of: artist, label, year, title, all
        search_term: What to search for
        limit: Max results (default 10)
    """
    # Download CSV from S3
    response = s3_client.get_object(Bucket=DATA_BUCKET, Key='discogs.csv')
    records = parse_csv(response['Body'])
    
    # Filter records
    matches = filter_records(records, query_type, search_term)
    
    # Return formatted results
    return format_results(matches[:limit])

2.基岩整合

# Get FastMCP tools in Bedrock format
tools = mcp.list_tools_for_llm(llm_format="bedrock")

# Bedrock decides when to use tools
response = bedrock_client.converse(
    modelId="anthropic.claude-3-5-sonnet-20241022-v2:0",
    messages=messages,
    toolConfig={"tools": tools}
)

# If tool use requested, FastMCP executes it
if response['stopReason'] == 'tool_use':
    result = mcp.call_tool(tool_name, tool_input)

3.代理循环

  1. 用户发送消息
  2. Lambda使用FastMCP工具调用基岩
  3. 基岩是否使用工具的原因
  4. 如果是:FastMCP执行工具,将结果发送回基岩
  5. 基岩综合最终答案
  6. 响应返回给用户

______________________________________________________________________

💰 成本细分

每月费用(1000次查询):

服务成本备注
基岩~15.00美元主要成本(克劳德3.5十四行诗)
拉姆达0.17美元1000次调用,ARM64
第3页$0.02存储+请求
API网关0.01美元HTTP API(便宜!)
总计~$15.20🎉

最贵的是基岩! 基础设施基本上是免费的。

省钱小贴士

  • 使用ARM64 Lambda(已配置)
  • 保持对话简短(减少令牌)
  • 使用较小的基岩模型进行开发
  • 利用AWS免费套餐

______________________________________________________________________

🎨 定制理念

使用您自己的数据

替换 data/discogs.csv:

title,artist,year,genre
"Your","Data","2024","Cool"

更新工具逻辑 lambda/handler.py 你完了!

想法:

  • 藏书
  • 配方数据库
  • 电影观看列表
  • 口袋妖怪卡
  • 植物护理指南
  • 任何CSV!

添加更多工具

@mcp.tool()
def get_collection_stats() -> str:
    """Get statistics about the collection"""
    # Count records, get averages, etc.
    return stats

@mcp.tool()
def recommend_similar(artist: str) -> str:
    """Recommend similar artists"""
    # Your logic here
    return recommendations

FastMCP会自动将它们提供给Bedrock!

改用DynamoDB

对于较大的数据集:

  1. 在Terraform中添加DynamoDB表
  2. 更新工具以查询DynamoDB
  3. 添加IAM权限

让它成为多用户

添加身份验证(为了简单起见,我们删除了它):

  1. 将Cognito资源添加回Terraform
  2. 将JWT授权人添加到API网关
  3. 将身份验证UI添加到前端

请参阅git历史以了解旧的auth实现!

______________________________________________________________________

🐛 故障排除

“YOUR_API_URL_HERE”错误

修复:更新 CONFIG.API_URLfrontend/index.html 带有来自的实际API网关URL terraform output api_chat_url

工具从不触发

修复:更具体地说:“什么 记录 我有格里姆斯的吗?vs“跟我说说格里姆斯”

基岩通道被拒

修复:

  1. 转到AWS基岩控制台
  2. 启用模型访问
  3. 选择克劳德3.5十四行诗
  4. 等待批准(通常是即时的)

Lambda超时

修复:增加超时时间 infra/terraform/main.tf:

timeout = 120  # Increase from 60

CORS错误

修复:使用 http://https:// 对于S3网站URL(默认情况下不支持HTTPS)

构建失败

修复:

cd lambda
rm -rf package lambda.zip
./build.sh

______________________________________________________________________

📚 了解更多

文档

外部资源

______________________________________________________________________

🎓 教育用途

这个项目是 专为教学而设计:

AWS用户组 -显示无服务器+AI模式\ ✅ 大学课程 -云计算课程\ ✅ 训练营 -动手AI+AWS项目\ ✅ 投资组合 -展示全栈技能

你可以:

  • 出席聚会(请出席!)
  • 在课堂环境中使用
  • 根据您自己的演示进行修改
  • 写上你的简历

请:

  • 不要用它来抓取数据
  • 不要堆积大量的基岩账单(监控成本!)
  • 如果你用叉子叉,就要赊账

______________________________________________________________________

🤝 贡献

改进意见:

  • \[\]流媒体响应
  • \[\]对话历史记录
  • \[\]更多示例工具
  • \[\]成本优化提示
  • \[\]多语言支持
  • \[\]Docker本地开发设置

PR欢迎!不过要保持简单——这就是重点! 😄

______________________________________________________________________

📄 许可证

MIT许可证-请参阅 许可证 了解详情。

太长,读不下去了:你想怎么用就怎么用!打造酷炫的东西! 🚀

______________________________________________________________________

🙋 问题?

  • 发现bug了吗? 打开一个问题
  • 用这个做演讲? 标签我-我很想看看!
  • 想合作吗? 伸出手来!

由以下材料制成❤️ 面向AWS+AI社区

现在去部署它,向人们展示代理AI! 🎉

目录标签

目录标签

PythonClaude聊天机器人无服务器本地部署AWSBedrockFastMCP教育演示

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP