模型上下文协议演示项目

该项目使用Python、AWS Bedrock、LangChain和Chainlit展示模型上下文协议(MCP),构建了一个管理产品库存数据库、公司政策和系统状态的MCP服务器。

  • by gharibct
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 gharibct/mcp_server_demo

使用说明

Python MCP演示项目

该项目展示了 模型上下文协议(MCP) 使用Python、AWS Bedrock、LangChain和Chainlit。它演示了如何构建一个向LLM客户端公开工具、资源和提示的MCP服务器。

🚀 概述

该系统由三个主要部分组成:

  1. MCP服务器(server.py):内置 FastMCP,它管理产品库存数据库(工具)、公司策略(静态资源)和系统状态(动态资源)。
  2. LLM客户端(client.py):基于LangChain的客户端,使用AWS Bedrock和 langchain-mcp-adapters 连接到MCP服务器。
  3. 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_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_REGION

4.初始化数据库

运行脚本以创建 inventory.db 并用样本数据播种:

python db_utils.py

🏃 运行应用程序

启动Web界面

启动Chainlit应用程序:

chainlit run web_app.py

这将打开一个浏览器窗口 http://localhost:8000.


🧪 测试场景

在聊天界面中尝试以下查询:

  1. 工具(库存查询):

    • “笔记本电脑的价格是多少?”
    • “库存中有多少只老鼠?”
    • “查找所有配件。”
  2. 资源(静态和动态内容):

    • “告诉我公司的远程工作策略。”(代理应使用文件资源)
    • “当前系统状态如何?”(代理应获取动态资源)
  3. 联合任务:

    • “分析笔记本电脑库存,并将其与我们公司对新员工的政策进行比较。”
    • “有库存的办公设备吗?如果有,我们的远程工作设备供应政策是什么?”
  4. 提示(分析模板):

    • “对台灯进行库存分析。”

📘 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.