AI网页抓取工具

一款基于模型上下文协议(MCP)的智能网页抓取工具,可搜索文档、获取网页内容并提供AI驱动的响应。

  • by iqbal-waqar
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 iqbal-waqar/MCP-SERVER

使用说明

AI网页抓取MCP服务器

一个基于模型上下文协议(MCP)构建的智能网页抓取工具,能够搜索文档、获取网页内容,并提供基于人工智能的响应。

🚀 功能

  • 智能文档搜索浏览流行的库文档(LangChain、OpenAI、Llama-Index、UV)
  • 基于人工智能的网页抓取自动清理并从网页中提取有意义的内容
  • 限速API集成内置Groq API速率限制处理
  • MCP协议与MCP兼容客户端无缝集成
  • 异步处理高性能异步操作

📋 先决条件

  • Python 3.10或更高版本
  • 紫外线(UV)包管理器
  • 以下是根据您提供的信息执行的翻译任务结果:
    • Serper API (用于网页搜索)
    • Groq API (用于大型语言模型处理)

🔧 安装

  1. 克隆仓库:

    git clone <https://github.com/iqbal-waqar/MCP-SERVER>
    cd mcp-server-python
    
  2. 使用UV安装依赖项:

    uv sync
    
  3. 设置环境变量: 创建一个 .env 根目录下的文件:

    SERPER_API_KEY=your_serper_api_key_here
    GROQ_API_KEY=your_groq_api_key_here
    

🔑 API密钥设置

Serper API密钥

  1. 访问 Serper.dev(注:这是一个网站名称,直接翻译可能无法传达其具体含义,因此保持原样)
  2. 注册一个免费账户
  3. 从仪表板获取您的API密钥
  4. 把它添加到你的 .env 文件

Groq API密钥

  1. 访问 Groq 控制台
  2. 创建账户并验证您的电子邮件
  3. 导航至API密钥部分
  4. 生成一个新的API密钥
  5. 把它加到你的(列表/收藏/等,具体根据上下文确定) .env 文件

⚠️ 重要使用一个 高质量的API密钥 具有足够的速率限制。免费层级每分钟的令牌数有限(每分钟6000个TPM),在高负载使用时可能会导致速率限制问题。

🏗️ 项目结构

mcp-server-python/
├── mcp_server.py      # Main MCP server implementation
├── client.py          # Example client for testing
├── utils.py           # Utility functions for HTML cleaning and LLM calls
├── .env              # Environment variables (create this)
├── pyproject.toml    # Project dependencies
└── README.md         # This file

🚀 使用方法

运行MCP服务器

服务器使用stdio传输协议运行:

uv run mcp_server.py

使用客户端

使用随附的客户端测试服务器:

uv run client.py

可用工具

get_docs

搜索特定库和查询的文档。

参数:

  • query (字符串):搜索查询(例如,“如何使用UV发布一个包”)
  • library (字符串): 要搜索的库 (langchain, openai, llama-index, uv)

示例:

result = await session.call_tool("get_docs", {
    "query": "How to publish a package with uv on gitlab",
    "library": "uv"
})

🔧 配置

支持的库

  • LangChain: python.langchain.com/docs
  • OpenAI(一家人工智能研究实验室): platform.openai.com/docs
  • Llama-Index(注:Llama-Index是一个假设或特定的名称,直接翻译为“拉玛索引”,但具体含义需根据上下文或产品背景来确定,此处为直译): docs.llamaindex.ai/en/stable
  • 紫外线: docs.astral.sh/uv

大型语言模型(LLM)

当前配置为使用 llama-3.1-8b-instant 来自Groq。您可以在以下位置修改此设置:

  • mcp_server.py (第52行)
  • client.py (第41行)

⚠️ 常见问题及解决方案

速率限制

如果您遇到速率限制错误:

  1. 等一下速率限制在短时间内(通常为60秒)后重置
  2. 升级考虑升级您的Groq计划以获取更高的限制额度
  3. 优化减少(数据传输的)块大小 fetch_url 函数
  4. 重试系统将在速率限制重置后自动重试

API密钥问题

  • 确保你的 .env 文件位于根目录中
  • 验证API密钥是否有效且处于激活状态
  • 检查您是否有足够的信用额度/配额

导入错误

确保你是在虚拟环境中运行命令的:

source .venv/bin/activate  # On Linux/Mac
# or
.venv\Scripts\activate     # On Windows

🛠️ 开发

添加新的文档来源

为了添加对新文档网站的支持,请更新 docs_urls 字典中的 mcp_server.py:

docs_urls = {
    "your-library": "docs.yourlibrary.com",
    # ... existing entries
}

您可以添加的流行库:

  • FastAPI(中文可直译为“快速API”,但通常保持原名以体现其专有性和技术特性): fastapi.tiangolo.com
  • Django(一个基于Python的Web开发框架): docs.djangoproject.com
  • Flask(一个轻量级的Python Web框架): flask.palletsprojects.com
  • 大熊猫: pandas.pydata.org/docs
  • NumPy: numpy.org/doc
  • Scikit-learn(中文常译为“斯凯特-莱恩”或直接保留原英文名,因其是一个机器学习库,具体翻译可能因语境而异,但通常直接使用原名): scikit-learn.org/stable
  • TensorFlow(中文可译为“张量流”,但通常直接使用其英文名): tensorflow.org/api_docs
  • PyTorch: pytorch.org/docs
  • 请求:: docs.python-requests.org
  • Pydantic: docs.pydantic.dev
  • SQLAlchemy: docs.sqlalchemy.org
  • 芹菜: docs.celeryq.dev
  • Streamlit(注:这是一个专有名词,通常直接音译,不进行意译,指的是一个用于快速创建数据应用的Python库): docs.streamlit.io
  • Gradio: gradio.app/docs

只需添加任何库的官方文档URL即可扩展搜索功能!

定制大型语言模型(LLM)的行为

修改以下位置的系统提示:

  • fetch_url() 用于网页抓取行为的函数
  • client.py 用于响应格式化

📊 性能说明

  • 代币使用每个网页根据内容大小可能消耗1000-5000个标记(或称为代币)
  • 速率限制免费Groq层级允许每分钟处理6000个标记
  • 处理时间典型的响应时间是每次查询5-15秒
  • 并发请求受限于API速率限制

🤝 贡献

  1. 克隆该仓库
  2. 创建一个特性分支
  3. 做出你的更改
  4. 彻底测试
  5. 提交拉取请求

📄 许可证

此项目采用MIT许可证授权——详见LICENSE文件。

🆘 支持

如果您遇到问题:

  1. 检查一下 常见问题 部分;章节
  2. 验证您的API密钥和配额
  3. 确保您使用的是最新的依赖项
  4. 提交一个包含详细错误信息的问题

🔗 有用链接


注此工具专为教育和开发目的而设计。请尊重所有使用的API的速率限制和服务条款。