小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
MIT License
15
最近更新:1个月前

一个极简的模型上下文协议 🖥️ 服务器/客户端🧑‍💻,使用 Azure OpenAI 和 🌐 通过 Playwright 实现的浏览器控制。

使用 Azure OpenAI 的 MCP 服务器和客户端实现

  • 一个使用模型上下文协议 (MCP) 和 Azure OpenAI 的最小化服务器/客户端应用程序实现。

    1. MCP 服务器是基于 FastMCP 构建的。
    2. Playwright 是微软开发的一个开源端到端测试框架,用于测试现代 Web 应用程序。
    3. 关于工具的 MCP 响应将被转换为 OpenAI 函数调用格式。
    4. 将 MCP 服务器响应转换为 OpenAI 函数调用格式的桥梁定制了 MCP-LLM Bridge 实现。
    5. 为了确保稳定的连接,服务器对象直接传递到桥梁中。

模型上下文协议 (MCP)

模型上下文协议 (MCP) MCP(模型上下文协议)是一种开放协议,可实现 AI 应用程序与本地或远程资源之间的安全、受控交互。

官方存储库

社区资源

相关项目

  • FastMCP: 快速、Pythonic 的方式来构建 MCP 服务器。
  • Chat MCP: MCP 客户端
  • MCP-LLM Bridge: 允许 MCP 服务器与兼容 OpenAI 的 LLM 之间通信的 MCP 实现

MCP Playwright

配置

在 2024 年 12 月的开发阶段,Python 项目应使用 'uv' 初始化。其他依赖管理库,例如 'pip' 和 'poetry',尚未完全被 MCP CLI 支持。

  1. .env.template 重命名为 .env,然后在 .env 中填写 Azure OpenAI 的值:

    bash 复制代码
    AZURE_OPEN_AI_ENDPOINT=
    AZURE_OPEN_AI_API_KEY=
    AZURE_OPEN_AI_DEPLOYMENT_MODEL=
    AZURE_OPEN_AI_API_VERSION=
  2. 安装 uv 以进行 Python 库管理

    bash 复制代码
    pip install uv
    uv sync
  3. 执行 python chatgui.py

    • 示例屏幕显示客户端启动浏览器并导航到 URL。
    chatgui

关于 'stdio'

stdio 是一个 传输层(原始数据流),而 JSON-RPC 是一个 应用协议(结构化通信)。它们是不同的概念,但经常互换使用,例如,在协议中提到 "通过 stdio 的 JSON-RPC"。

工具描述

cmd 复制代码
@self.mcp.tool()
async def playwright_navigate(url: str, timeout=30000, wait_until="load"):
    """导航到 URL。""" -> 此注释提供了一个描述,可能在类似于 LLM 中函数调用的机制中使用。

# 输出
Tool(name='playwright_navigate', description='导航到 URL。', inputSchema={'properties': {'url': {'title': 'Url', 'type': 'string'}, 'timeout': {'default': 30000, 'title': 'timeout', 'type': 'string'}

提示:uv

复制代码
uv run: 运行脚本。
uv venv: 创建一个新的虚拟环境,默认为 '.venv'。
uv add: 向脚本添加依赖项
uv remove: 从脚本中移除依赖项
uv sync: 同步(安装)项目的依赖项到环境中。

提示

  • 终止 python.exe 的 taskkill 命令
cmd 复制代码
taskkill /IM python.exe /F
  • Visual Code: Python 调试器:使用 launch.json 进行调试时,调试器将根据 .vscode/launch.json 中的配置启动。