使用说明
Python MCP演示项目
该项目展示了 模型上下文协议(MCP) 使用Python、AWS Bedrock、LangChain和Chainlit。它演示了如何构建一个向LLM客户端公开工具、资源和提示的MCP服务器。
🚀 概述
该系统由三个主要部分组成:
- MCP服务器(
server.py):内置FastMCP,它管理产品库存数据库(工具)、公司策略(静态资源)和系统状态(动态资源)。 - LLM客户端(
client.py):基于LangChain的客户端,使用AWS Bedrock和langchain-mcp-adapters连接到MCP服务器。 - Web界面(
web_app.py):用户友好的聊天界面,由Chainlit.
🛠️ 演示的功能
1.工具
query_inventory:允许LLM在真实的SQLite数据库中搜索产品详细信息(价格、库存、类别)。
2.资源
file://resources/company_policy.txt:包含公司远程工作策略的静态资源。system://status:生成实时系统健康报告的动态资源。
3.提示
inventory_analysis:结构化分析模板,指导法学硕士提供一致的产品报告。
📦 先决条件
- Python 3.10+
- 具有访问权限的AWS帐户 克劳德3.5十四行诗 亚马逊基岩。
- 已配置AWS凭据(访问密钥和密钥)。
⚙️ 安装说明
1.克隆存储库
git clone <your-repo-url>
cd mcp-demo
2.创建虚拟环境并安装依赖项
python -m venv venv
# On Windows
.\venv\Scripts\activate
# On Unix or MacOS
source venv/bin/activate
pip install -r requirements.txt
3.配置环境变量
复制 .env.example 文件到 .env 并填写您的AWS凭据:
cp .env.example .env
确保你的 .env 包含:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGION
4.初始化数据库
运行脚本以创建 inventory.db 并用样本数据播种:
python db_utils.py
🏃 运行应用程序
启动Web界面
启动Chainlit应用程序:
chainlit run web_app.py
这将打开一个浏览器窗口 http://localhost:8000.
🧪 测试场景
在聊天界面中尝试以下查询:
-
工具(库存查询):
- “笔记本电脑的价格是多少?”
- “库存中有多少只老鼠?”
- “查找所有配件。”
-
资源(静态和动态内容):
- “告诉我公司的远程工作策略。”(代理应使用文件资源)
- “当前系统状态如何?”(代理应获取动态资源)
-
联合任务:
- “分析笔记本电脑库存,并将其与我们公司对新员工的政策进行比较。”
- “有库存的办公设备吗?如果有,我们的远程工作设备供应政策是什么?”
-
提示(分析模板):
- “对台灯进行库存分析。”
📘 MCP概念说明
- 服务器:向客户端提供上下文(工具、资源、提示)的过程。在该项目中,
FastMCP简化了服务器创建。 - 客户:消耗MCP服务器功能的LLM驱动应用程序。我们使用
langchain-mcp-adapters将MCP协议与LangChain的工具调用进行桥接。 - 工具:LLM可以调用的可执行函数(例如,查询数据库)。
- 资源:LLM可以读取的数据源(例如文件、API)。
- 提示:提供预定义指令或上下文的可重用模板。
⚠️ 故障排除
- AWS凭据:确保您的AWS用户
AmazonBedrockFullAccess或类似的政策。 - 基岩模型访问:确保 克劳德3.5十四行诗 在AWS区域的Bedrock控制台的模型访问页面中启用。
- MCP初始化:如果您看到有关“初始化MCP服务器”的错误,请检查
server.py在独立模式下正确运行:python server.py.