项目简介
'Lucky'是一个自进化的智能代理工作流框架,专注于多代理系统的优化和协作模式发现。它通过将工作流定义为可演进的数据结构,并利用遗传编程等算法进行优化。该框架支持多种工具集成,其中包括与Model Context Protocol (MCP) 集成的外部工具。本说明将聚焦于'Lucky'仓库中提供的一个具体MCP服务器实现——Webshare代理MCP服务器,它演示了如何通过MCP协议为LLM客户端提供外部功能。
主要功能点
- 标准化代理服务: 通过Model Context Protocol (MCP) 标准化地向LLM客户端提供Webshare代理。
- JSON-RPC通信: 支持通过JSON-RPC协议与客户端进行通信,传输请求和响应。
- Stdio传输协议: 默认使用标准输入/输出 (Stdio) 作为传输协议。
- 获取随机代理: 提供一个名为'get-proxy'的工具,LLM客户端可以调用此工具来获取一个随机的Webshare代理URL。
安装步骤
本MCP服务器是'Lucky'monorepo中的一个子项目。要运行它,你需要首先安装'Lucky'仓库。
-
克隆仓库并安装依赖
git clone https://github.com/eenlars/lucky.git cd lucky bun install # 这将安装所有依赖并构建必要的包 -
配置Webshare API Key 在'lucky'项目根目录创建或编辑'.env.local'文件,添加你的Webshare API Key:
WEBSHARE_API_KEY=你的Webshare_API_密钥(Webshare API Key是访问Webshare代理服务的必要凭证。如果缺少此密钥,服务器将无法启动。)
-
启动MCP服务器 切换到'apps/mcp-servers-examples/webshare-proxy'目录,然后启动服务器:
cd apps/mcp-servers-examples/webshare-proxy bun run start # 或者 bun run dev服务器启动后,会在标准错误输出(stderr)中打印'Webshare MCP Server running on stdio'信息。
服务器配置(供MCP客户端使用)
MCP客户端需要以下JSON格式的配置信息才能连接并使用此MCP服务器。请根据你的实际项目路径调整'options.cwd'。
{ "name": "webshare-proxy", "command": "bun", "args": [ "run", "start" ], "options": { "cwd": "/path/to/lucky/apps/mcp-servers-examples/webshare-proxy" }, "tools": [ { "name": "get-proxy", "description": "Fetch a single random proxy URL from Webshare." } ] }
配置参数说明:
- 'name': MCP服务器的唯一标识符,建议为'webshare-proxy'。
- 'command': 启动MCP服务器的可执行命令。此处为'bun'。
- 'args': 传递给'command'的参数数组。'"run", "start"'用于执行'webshare-proxy'子项目的启动脚本。
- 'options.cwd': 必填。指定MCP服务器进程的工作目录。请替换'/path/to/lucky/apps/mcp-servers-examples/webshare-proxy'为你本地'lucky'仓库中'webshare-proxy'目录的实际绝对路径。
- 'tools': 这是一个数组,列出了该MCP服务器提供的工具。
- 'name': 工具的名称,LLM客户端将使用此名称来调用工具,此处为'get-proxy'。
- 'description': 工具的简要描述,帮助LLM客户端理解其功能。
基本使用方法
一旦MCP客户端配置并成功连接到此Webshare代理MCP服务器,LLM即可通过调用'get-proxy'工具来获取一个随机的Webshare代理URL。 例如,一个LLM客户端可能会生成一个JSON-RPC请求,内容类似于:
{ "jsonrpc": "2.0", "method": "tool_code/get-proxy", "params": {}, "id": "123" }
MCP服务器将执行'get-proxy'功能,返回一个包含随机代理URL的JSON-RPC响应:
{ "jsonrpc": "2.0", "result": { "type": "tool_code/get-proxy_output", "output": { "content": [{ "type": "text", "text": "http://user:pass@ip:port" }] } }, "id": "123" }
LLM客户端可以解析此响应,并使用返回的代理URL进行后续操作。
信息
分类
AI与计算