Python OpenAI游乐场+MCP
此存储库包含一个小型游乐场,演示如何运行本地MCP服务器并从客户端与之交互。它还包括一个在矢量存储中上传和搜索文档的简单示例。
先决条件
- Python 3.8+(推荐3.10或3.11)
- pip(或您首选的包管理器)
- ngrok(用于将本地MCP服务器暴露于互联网)
- 如果使用OpenAI SDK,则在您的环境中配置的OpenAI API密钥
快速启动——运行MCP服务器并用ngrok公开它
- 在终端中启动MCP服务器(本例假设服务器监听端口8000):
python3 mcp_server.py- 在第二个终端中,启动ngrok将HTTP流量转发到MCP服务器:
ngrok http 8000- ngrok启动后,它会打印一个或多个“转发”URL(例如
https://abcd1234.ngrok.io).复制HTTPS转发URL。
- 更新
mcp_client.py指向ngrok转发URL,并包含MCP服务器返回的访问令牌(如果您的设置需要)。典型的更新地点:
mcp_client.py→ setBASE_URL(或等效)到ngrok转发URLmcp_client.py→ setaccess_token或相当于MCP服务器打印的令牌
例如(伪):
# mcp_client.py
BASE_URL = "https://abcd1234.ngrok.io"
ACCESS_TOKEN = "
"- 运行客户端以练习MCP端点:
python3 mcp_client.py矢量存储示例(上传和搜索文档)
此仓库还包含一个简单的示例(vector_store.py)演示如何上传文件(例如 policies.txt)转到矢量存储并运行文本搜索。
要上传文件并从CLI运行查询,请执行以下操作:
# upload a file and run the default query
python3 vector_store.py --file policies.txt
# upload a different file and run a custom query
python3 vector_store.py -f ./docs/handbook.txt -q "What is the vacation policy?"如果您没有指定 --file,脚本将以交互方式提示您输入路径,并在尝试上传之前验证文件是否存在。
提示和注意事项
- 为项目使用虚拟环境(推荐):
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt- 如果您计划上传多个文件,请选择单个矢量存储,并为每个块添加元数据(文件名、校验和、块id、标签),而不是为每个文件创建一个矢量存储。看
vector_store.py和search.py例如如何处理搜索和上传。
- 如果MCP服务器需要身份验证,请确保
mcp_client.py在运行之前,使用正确的令牌和URL进行更新。
故障排除
- 如果客户端无法访问MCP服务器:
- 确认 mcp_server.py 正在端口8000上运行和侦听。 - 确认ngrok正在运行,并且您已将HTTPS转发URL复制到 mcp_client.py. - 检查可能阻止ngrok的防火墙/防病毒或代理设置。
- 如果上传失败:
- 验证文件路径和权限。 - 检查脚本打印的SDK/neneneba API错误,以获取有关身份验证或速率限制的提示。
