用于使用 Azure OpenAI 的 MCP 服务器和客户端实现
-
一个使用模型上下文协议(MCP)和 Azure OpenAI 的最小化服务器/客户端应用程序实现。
- MCP 服务器使用
FastMCP构建。 Playwright是微软开发的一个开源端到端测试框架,用于测试现代 Web 应用程序。- MCP 关于工具的响应将被转换为 OpenAI 函数调用格式。
- 将 MCP 服务器响应转换为 OpenAI 函数调用格式的桥接器自定义了
MCP-LLM Bridge实现。 - 为确保稳定连接,服务器对象直接传递给桥接器。
- MCP 服务器使用
模型上下文协议 (MCP)
模型上下文协议 (MCP) MCP (Model Context Protocol) 是一个开放协议,它能够实现 AI 应用程序与本地或远程资源之间的安全、受控交互。
官方仓库
社区资源
相关项目
- FastMCP: 快速、Pythonic 的方式构建 MCP 服务器。
- Chat MCP: MCP 客户端
- MCP-LLM Bridge: 实现 MCP 服务器与 OpenAI 兼容 LLM 之间通信的 MCP 实现
MCP Playwright
配置
在 2024 年 12 月的开发阶段,Python 项目应使用 'uv' 初始化。其他依赖管理库,如 'pip' 和 'poetry',目前尚未完全支持 MCP CLI。
-
将
.env.template重命名为.env,然后在.env中填写 Azure OpenAI 的值:AZURE_OPEN_AI_ENDPOINT= AZURE_OPEN_AI_API_KEY= AZURE_OPEN_AI_DEPLOYMENT_MODEL= AZURE_OPEN_AI_API_VERSION= -
安装
uv用于 Python 库管理pip install uv uv sync -
执行
python chatgui.py- 示例屏幕显示客户端启动浏览器导航到 URL。
关于 'stdio'
stdio 是一个 传输层(原始数据流),而 JSON-RPC 是一个 应用层协议(结构化通信)。它们是不同的,但经常被互换使用,例如协议中的 "JSON-RPC over stdio"。
工具描述
@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: 同步(安装)项目的依赖项与环境。
提示
- taskkill 命令用于 python.exe
taskkill /IM python.exe /F
- Visual Code: Python Debugger: 使用 launch.json 启动调试器,将使用 .vscode/launch.json 中的配置进行调试。