模型上下文协议示例代码

使用Python示例代码展示如何利用MCP(Model Context Protocol)服务器和客户端进行交互式聊天和搜索功能。

  • by gauravs-sh
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 gauravs-sh/mcp-examples

使用说明

mcp示例

一小部分Python示例代码,演示如何使用MCP(模型上下文协议)服务器和客户端。

MCP代表模型上下文协议。

目录

  • app.py-使用内置会话内存的MCPAgent的交互式聊天示例(需要GROQ API密钥和pyproject.toml中列出的依赖项)。
  • test_mcp.py--初始化MCPClient并尝试启动配置的mcp服务器的测试脚本(对调试Playwright/其他mcp服务器很有用)。
  • browser_mcp.json——MCPClient使用的mcp服务器配置(包括Playwright和DuckDuckGo搜索服务器条目)。
  • pyproject.toml——项目元数据和运行时依赖关系。
  • main.py——小占位符入口点。

需求

  • Python 3.11+
  • 点
  • 推荐:虚拟环境(venv或virtualenv)
  • app.py所需的环境变量:
    • GROQ_API_KEY-langchain-GROQ的API密钥(由app.py使用)

设置

  1. 克隆存储库:

    克隆https://github.com/gauravs-sh/mcp-examples.git

    cd-mcp示例

  2. 创建并激活虚拟环境:

    python-m venv.venv source.venv/bin/activate#macOS/Linux
    source.venv\Scripts\activate#Windows

  3. 安装依赖项(来自pyproject.toml):

 uv add langchain-groq
 uv add langchain-openai
 uv add mcp-use

(如果您更喜欢requirements.txt,可以从pyproject.toml生成一个。)

  1. 我们将使用npx,所以别忘了安装node.js 或者在终端中键入“node”以检查当前节点版本。

用法

交互式聊天(app.py)

  1. 使用GREQ API密钥创建.env文件:

    GROQ_API_KEY=your_GROQ_API_KEY_here

  2. 运行聊天示例:

    python app.py或uv运行app.py

运行剧作家mcp服务器的示例提示:

“请在剧作家mcp服务器中打开google.com,然后打开yahoo.com”

运行duckduckgo搜索mcp服务器的示例提示:

请在duckduckgo搜索mcp服务器中搜索“python编程”

笔记:

  • 该脚本加载browser_mcp.json以创建一个MCPClient,该客户端可以启动配置在那里的本地mcp服务器。
  • 命令:类型 clear 清除对话历史记录,以及 exit 或 quit 结束会议。
  • 该示例使用ChatGroq(模型=“llama-3.1-8b-instant”)。根据需要调整到可用型号。

测试MCP客户端和服务器(Test_MCP.py)

运行脚本以验证MCPClient初始化,并尝试启动browser_mcp.json中列出的服务器:

python test_mcp.py

该脚本打印已配置的服务器,尝试为每个服务器创建会话,并报告成功或错误。

browser_mcp.json

此文件包含mcpServers定义,例如:

{ “mcpServers”:{ “剧作家”:{“命令”:“npx”,“args”:[“@剧作家/mcp@0.0.52"] }, “duckduckgo搜索”:{“命令”:“npx”,“args”:[“-y”,“duckdackgo mcp服务器”]} } }

MCPClient.from_config_file读取此信息以了解哪些本地进程作为MCP服务器启动。

发展

  • pyproject.toml声明项目元数据和依赖关系。
  • 如果您扩展存储库,请在examples/目录下添加小型、自包含的示例。
  • 使用pytest进行测试和标准日志记录。

贡献

欢迎投稿!分叉、分支、添加测试和文档,然后打开一个pull请求。

许可证

此存储库根据MIT许可证获得许可。有关详细信息,请参阅许可证。

联系

业主:gauravs sh--https://github.com/gauravs-sh