使用说明
AI网页抓取MCP服务器
一个基于模型上下文协议(MCP)构建的智能网页抓取工具,能够搜索文档、获取网页内容,并提供基于人工智能的响应。
🚀 功能
- 智能文档搜索浏览流行的库文档(LangChain、OpenAI、Llama-Index、UV)
- 基于人工智能的网页抓取自动清理并从网页中提取有意义的内容
- 限速API集成内置Groq API速率限制处理
- MCP协议与MCP兼容客户端无缝集成
- 异步处理高性能异步操作
📋 先决条件
- Python 3.10或更高版本
- 紫外线(UV)包管理器
- 以下是根据您提供的信息执行的翻译任务结果:
- Serper API (用于网页搜索)
- Groq API (用于大型语言模型处理)
🔧 安装
-
克隆仓库:
git clone <https://github.com/iqbal-waqar/MCP-SERVER> cd mcp-server-python -
使用UV安装依赖项:
uv sync -
设置环境变量: 创建一个
.env根目录下的文件:SERPER_API_KEY=your_serper_api_key_here GROQ_API_KEY=your_groq_api_key_here
🔑 API密钥设置
Serper API密钥
- 访问 Serper.dev(注:这是一个网站名称,直接翻译可能无法传达其具体含义,因此保持原样)
- 注册一个免费账户
- 从仪表板获取您的API密钥
- 把它添加到你的
.env文件
Groq API密钥
- 访问 Groq 控制台
- 创建账户并验证您的电子邮件
- 导航至API密钥部分
- 生成一个新的API密钥
- 把它加到你的(列表/收藏/等,具体根据上下文确定)
.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行)
⚠️ 常见问题及解决方案
速率限制
如果您遇到速率限制错误:
- 等一下速率限制在短时间内(通常为60秒)后重置
- 升级考虑升级您的Groq计划以获取更高的限制额度
- 优化减少(数据传输的)块大小
fetch_url函数 - 重试系统将在速率限制重置后自动重试
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速率限制
🤝 贡献
- 克隆该仓库
- 创建一个特性分支
- 做出你的更改
- 彻底测试
- 提交拉取请求
📄 许可证
此项目采用MIT许可证授权——详见LICENSE文件。
🆘 支持
如果您遇到问题:
- 检查一下 常见问题 部分;章节
- 验证您的API密钥和配额
- 确保您使用的是最新的依赖项
- 提交一个包含详细错误信息的问题
🔗 有用链接
注此工具专为教育和开发目的而设计。请尊重所有使用的API的速率限制和服务条款。