ChatSpeed工具箱

CSToolbox是ChatSpeed的扩展工具包,通过MCP协议提供网络搜索、网页内容爬取和图表生成等功能。它支持多种搜索引擎,能够从网页中提取结构化内容,并快速生成各种数据可视化图表。此外,还提供PDF文档处理和文本内容提取功能。适用于需要自动化网络搜索、数据抓取和可视化的开发者和数据分析师。

  • by aidyou
  • 更新于
在 GitHub 查看 aidyou/cstoolbox

使用说明

基本能力

产品定位

CSToolbox是一个多功能工具包,旨在通过MCP协议提供网络搜索、网页内容爬取和图表生成等功能。

核心功能

  • 网络搜索:支持多种搜索引擎(Google、Bing、Baidu等)。
  • 网页爬取:从网页中提取结构化内容(支持Markdown/HTML格式)。
  • 图表生成:快速生成各种数据可视化图表,包括折线图、柱状图和饼图。
  • PDF处理:从PDF URL下载文档并提取文本内容。

适用场景

  • 自动化网络搜索和数据抓取。
  • 数据可视化和图表生成。
  • PDF文档处理和文本提取。

使用教程

使用依赖

  1. 安装uv(适用于macOS/Linux):
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. 安装uv(适用于Windows):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

安装教程

  1. 克隆源代码仓库:
git clone https://github.com/aidyou/cstoolbox.git
cd cstoolbox
  1. 创建并激活venv环境:
uv venv --python=python3.12
source .venv/bin/activate
# Windows用户使用:.venv\Scripts\activate
  1. 安装依赖:
uv pip install .
  1. 启动测试服务器:
mcp dev src/cstoolbox/main.py

调试方式

  1. 配置MCP客户端:
{
  "mcpServers": {
    "cstoolbox": {
      "command": "uvx",
      "args": [
        "cstoolbox"
      ],
      "env": {
        "CS_PROXY": "http://{your-proxy-server}",
        "CS_HEADLESS": "false",
        "CS_BROWSER_TYPE": "chromium",
        "CS_EXECUTABLE_PATH": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
        "CS_USER_DATA_DIR": "~/Library/Application Support/Google/Chrome"
      }
    }
  }
}
  1. 使用Python示例代码进行测试:
from pathlib import Path
from mcp import ClientSession, StdioServerParameters, types
from mcp.client.stdio import stdio_client

project_root = Path(__file__).resolve().parent.parent

server_params = StdioServerParameters(
    command="python",
    args=[f"{project_root}/src/cstoolbox/main.py"],
    env={
        "CS_PROXY": "http://localhost:15154",
        "CS_BROWSER_TZ": "Asia/Shanghai",
        "CS_BROWSER_LANG": "zh-CN"
    },
)

async def run():
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            result = await session.call_tool(
                "web_search",
                arguments={"provider": "bing", "kw": "deepseek r2", "number": 10, "page": 1, "time_period": "month"},
            )
            print(result)

if __name__ == "__main__":
    import asyncio
    asyncio.run(run())