项目简介
这是一个来自Microsoft AI Agentic Workshop仓库的服务组件,它基于Model Context Protocol (MCP) 提供标准化接口,将内部数据源和功能(如客户数据库、知识库)暴露为可供LLM代理调用的工具(Tools)。它实现了MCP服务器规范的一部分,专注于工具和资源访问能力,通过SSE协议进行通信。
主要功能点
- 工具托管与执行: 提供一套丰富的工具,用于查询和管理客户信息、订阅详情、账单与支付、数据使用、订单、支持工单、安全日志等。
- 知识库检索: 提供语义搜索工具,允许LLM查询内部知识文档,获取策略、流程等信息。
- 数据访问: 工具通过SQLite数据库 ('contoso.db') 提供结构化数据的访问能力。
- 标准化接口: 实现MCP over SSE协议,提供标准化的JSON-RPC接口供LLM客户端调用。
- 数据模型: 使用Pydantic定义工具的输入参数和输出结构,确保数据交换的规范性。
安装步骤
- 克隆仓库: 将Microsoft AI Agentic Workshop仓库克隆到本地。
git clone https://github.com/microsoft/OpenAIWorkshop.git cd OpenAIWorkshop/agentic_ai - 安装依赖: 安装必要的Python库,包括'fastmcp'、'uvicorn'、'sqlite3'、'dotenv'、'openai'、'faker'等。建议使用虚拟环境。
(注:如果需要知识库嵌入功能,还需要配置Azure OpenAI的API密钥、Endpoint和Embedding部署名称,并安装'openai'库)。pip install -r requirements.txt # 确保requirements.txt包含了所有依赖,或手动安装 - 创建数据库: 运行脚本生成示例SQLite数据库 'contoso.db' 及场景描述文件。
python backend_services/data/create_db.py - 设置环境变量: 创建 '.env' 文件,配置数据库路径和(可选的)Azure OpenAI embedding信息。
DB_PATH=./backend_services/data/contoso.db # 如果需要知识库嵌入,请配置以下变量 # AZURE_OPENAI_API_KEY=your_api_key # AZURE_OPENAI_ENDPOINT=your_endpoint # AZURE_OPENAI_API_VERSION=2024-02-01 # AZURE_OPENAI_EMBEDDING_DEPLOYMENT=your_embedding_deployment_name - 运行MCP服务器: 启动MCP服务。
服务默认将在 'http://0.0.0.0:8000' 监听SSE连接。python backend_services/mcp_service.py
服务器配置 (供MCP客户端使用)
为了让兼容MCP协议的LLM客户端(如Autogen、Semantic Kernel中支持MCP的Agent)能够连接并使用此服务,客户端需要以下信息来初始化其MCP连接器:
- 服务器名称: 'Contoso Customer API as Tools'
- 描述: 提供客户、账单、产品和知识库等工具访问服务。
- 协议: 'sse' (Server-Sent Events)
- 地址 (URL): 'http://<服务器地址或主机名>:8000/sse'
- 能力声明: 客户端应能通过MCP发现服务支持的能力,此服务主要提供 'tools' 和 'resources' 能力。
MCP客户端通常会通过其自身的配置机制(如JSON文件、编程配置)来指定这些信息,例如:
{ "type": "mcp_server", "name": "ContosoMCP", "description": "Contoso Customer Data and Tools", "protocol": "sse", "address": "http://localhost:8000/sse" }
(请注意:上面的JSON仅为示例,实际客户端配置格式可能因客户端框架而异,但核心信息是相同的。)
基本使用方法
一旦MCP服务器运行起来,任何兼容MCP协议并配置了正确服务器地址和协议的LLM客户端都可以连接到该服务器,查询其提供的工具清单,并通过标准化的JSON-RPC请求调用这些工具,获取数据或执行操作。例如,LLM客户端可以调用 'get_customer_detail' 工具来获取指定客户的详细信息。
此仓库中的代理实现(如基于Autogen和Semantic Kernel的Agent)即是此类MCP客户端的示例,它们通过读取配置的环境变量 ('MCP_SERVER_URI') 来发现并连接此MCP服务,然后利用其暴露的工具能力来响应用户请求。
信息
分类
商业系统