Poe代理-MCP
一个FastMCP服务器,它代理了Poe.com的API,允许用户查询各种AI模型(包括Claude 3.7 Sonnet),并能与支持该功能的模型共享文件。
服务介绍
Poe Proxy MCP 服务器
一个 FastMCP 服务器,用于代理 Poe.com API,提供查询 Poe 模型和共享文件的工具。此服务器特别设计以确保与 Claude 3.7 Sonnet 和通过 Poe 可用的其他模型兼容。
特性
- 多模型支持:查询 Poe 上可用的各种模型,包括 GPT-4o、Claude 3 Opus、Claude 3 Sonnet、Gemini Pro 等
- Claude 3.7 Sonnet 兼容性:对 Claude 的思考协议进行特殊处理
- 文件共享:与支持它的模型共享文件
- 会话管理:在多个查询中保持对话上下文
- 流式响应:从模型获取实时流式响应
- Web 客户端支持:通过 SSE 传输使用 Web 客户端访问服务器
安装
前提条件
- Python 3.8 或更高版本
- Poe API 密钥(从 Poe.com 获取)
快速安装
使用提供的安装脚本:
git clone https://github.com/Anansitrading/poe-proxy-mcp.git
cd poe-proxy-mcp
chmod +x install.sh
./install.sh
该脚本将:
- 创建虚拟环境
- 安装所有依赖项
- 如果不存在则创建
.env文件 - 设置服务器以支持 STDIO 和 SSE 传输
手动设置
如果您更喜欢手动设置:
-
克隆此仓库:
git clone https://github.com/Anansitrading/poe-proxy-mcp.git cd poe-proxy-mcp -
创建虚拟环境并安装依赖项:
python -m venv venv source venv/bin/activate # 在 Windows 上:venv\Scripts\activate pip install -r requirements.txt -
使用您的 Poe API 密钥创建
.env文件:cp .env.example .env # 编辑 .env 文件以添加您的 API 密钥
作为包安装
您也可以将服务器作为 Python 包安装:
pip install -e .
这将在您的环境中提供 poe-mcp 和 poe-mcp-sse 命令。
配置
服务器可以使用环境变量进行配置:
| 变量 | 描述 | 默认值 |
|---|---|---|
POE_API_KEY |
您的 Poe API 密钥(必需) | 无 |
DEBUG_MODE |
启用详细日志记录 | false |
CLAUDE_COMPATIBLE |
启用 Claude 兼容模式 | true |
MAX_FILE_SIZE_MB |
上传文件的最大大小(MB) | 10 |
SESSION_EXPIRY_MINUTES |
会话过期时间(分钟) | 60 |
使用
运行服务器
标准模式 (STDIO)
这是默认模式,适用于命令行使用:
# If installed as a package:
poe-mcp
# Or directly:
python poe_server.py
Web 模式 (SSE)
这种模式使服务器能够与 Web 客户端一起使用:
# If installed as a package:
poe-mcp-sse [port]
# Or directly:
python run_sse_server.py [port]
服务器默认将在 8000 端口启动,或者您可以指定不同的端口。
可用工具
服务器提供了以下工具:
ask_poe
向 Poe 机器人提问。
response = await mcp.call("ask_poe", {
"bot": "claude", # or "o3", "gemini", "perplexity", "gpt"
"prompt": "What is the capital of France?",
"session_id": "optional-session-id", # Optional
"thinking": { # Optional, for Claude models
"thinking_enabled": True,
"thinking_depth": 2
}
})
ask_with_attachment
附带文件向 Poe 机器人提问。
response = await mcp.call("ask_with_attachment", {
"bot": "claude",
"prompt": "Analyze this code",
"attachment_path": "/path/to/file.py",
"session_id": "optional-session-id", # Optional
"thinking": { # Optional, for Claude models
"thinking_enabled": True
}
})
clear_session
清除会话的历史记录。
response = await mcp.call("clear_session", {
"session_id": "your-session-id"
})
list_available_models
列出可用的 Poe 模型及其功能。
response = await mcp.call("list_available_models", {})
get_server_info
获取关于服务器配置的信息。
response = await mcp.call("get_server_info", {})
Web 客户端
在 examples 目录中包含了一个简单的 Web 客户端。要使用它:
-
以 SSE 模式启动服务器:
python run_sse_server.py -
在浏览器中打开
examples/web_client.html。 -
输入服务器 URL(默认:
http://localhost:8000),然后点击“获取可用模型”。 -
选择一个模型,输入您的提示,并点击“提交”。
示例
简单查询
# examples/simple_query.py
import asyncio
from fastmcp import MCPClient
async def main():
client = MCPClient("http://localhost:8000")
response = await client.call("ask_poe", {
"bot": "claude",
"prompt": "Explain quantum computing in simple terms"
})
print(f"Session ID: {response['session_id']}")
print(f"Response: {response['text']}")
if __name__ == "__main__":
asyncio.run(main())
文件附件
# examples/file_attachment.py
import asyncio
from fastmcp import MCPClient
async def main():
client = MCPClient("http://localhost:8000")
response = await client.call("ask_with_attachment", {
"bot": "claude",
"prompt": "Analyze this code and suggest improvements",
"attachment_path": "examples/simple_query.py"
})
print(f"Session ID: {response['session_id']}")
print(f"Response: {response['text']}")
if __name__ == "__main__":
asyncio.run(main())
Claude 兼容性
此服务器对 Claude 模型进行了特殊处理,特别是 Claude 3.7 Sonnet,它需要特定格式的思考协议。当使用 Claude 模型时:
- 服务器会自动检测 Claude 模型并应用适当的格式。
- 可以通过提供
thinking参数来启用思考协议:"thinking": { "thinking_enabled": True, "thinking_depth": 2, # 可选,默认为 1 "thinking_style": "detailed" # 可选 } - 如果思考协议失败,服务器将自动重试而不使用它。
测试
要运行测试套件:
python run_tests.py
对于详细输出:
python run_tests.py --verbose
故障排除
常见问题
- 认证错误:确保你的 Poe API 密钥在
.env文件中是正确的。 - 连接错误:检查你是否可以从你的网络访问 Poe.com。
- 文件上传错误:确保文件存在且不超过大小限制。
- Claude 思考协议问题:如果你遇到 Claude 的思考协议错误,尝试通过在
.env文件中设置CLAUDE_COMPATIBLE=false来禁用它。
调试
通过在 .env 文件中设置 DEBUG_MODE=true 启用调试模式,以获得更详细的日志。
许可证
本项目根据 MIT 许可证发布 - 详情请参阅 LICENSE 文件。