返回市场
反应MCP

反应MCP

作者:mshojaei77141 星标更新:2025-03-20

项目介绍

ReActMCP Web Search

ReActMCP Web Search 是一个 MCP(模型上下文协议)服务器,它将网络搜索功能集成到您的 AI 助手框架中。它利用 Exa API 执行基本和高级网络搜索,返回实时的 Markdown 格式结果,包括标题、URL、发布日期和内容摘要。

此仓库是更广泛的 ReActMCP 项目的一部分,该项目连接了各种 MCP 工具和服务器,以增强您的 AI 助手的功能。


目录


特性

  • 基本网络搜索:使用 Exa API 进行简单搜索。
  • 高级网络搜索:使用额外的过滤选项,如域名限制、文本包含要求和日期过滤。
  • Markdown 输出:以 Markdown 格式呈现搜索结果,轻松包含标题、URL 和摘要。
  • MCP 集成:轻松将此工具添加到您的 MCP 服务器生态系统中,实现多工具 AI 辅助。

要求

  • Python 3.8+
  • python-dotenv
  • exa_py(Exa API 客户端)
  • 其他可能由您的 MCP 框架需要的依赖项

安装

  1. 克隆仓库

    git clone https://github.com/mshojaei77/ReActMCP.git
    cd ReActMCP
    
  2. 创建虚拟环境(可选但推荐)

    python -m venv venv
    source venv/bin/activate  # 在 Windows 上使用: venv\Scripts\activate
    
  3. 安装依赖

    pip install -r requirements.txt
    

配置

环境变量

在项目根目录下创建一个 .env 文件,并至少包含以下变量:

EXA_API_KEY=your_exa_api_key_here
OPENAI_API_KEY=...

此密钥是使用 Exa API 进行网络搜索所必需的。

MCP 配置

MCP 配置文件 mcp_config.json 定义了您的 MCP 服务器的设置和可用工具。提供了一个示例配置:

{
  "websearch": {
    "script": "web_search.py",
    "encoding_error_handler": "ignore",
    "description": "使用 Exa API 提供实时互联网搜索结果的网络搜索功能。支持基本和高级搜索,包括域名限制、文本包含要求和日期过滤等过滤选项。返回带有标题、URL、发布日期和内容摘要的格式化结果。",
    "required_env_vars": ["EXA_API_KEY"],
    "active": true
  },
  "settings": {
    "model": "gpt-4o",
    "system_prompt_path": "system_prompt.txt"
  }
}

您可以通过修改默认结果数量或添加新的 MCP 工具来个性化或扩展此配置。

系统提示

system_prompt.txt 文件配置了您的 AI 助手的行为和语气。它指导助手提供友好、引人入胜且信息丰富的回应,包括表情符号。提供了一个示例提示:

您是一个具有网络搜索能力的帮助、知识渊博的 AI 助手。您的目标是为用户提供准确、全面且最新的信息。
使用大量表情符号,使您的回应有趣且引人入胜。

## 可用的搜索工具

- `search_web`:基于查询返回结果的基本网络搜索
- `advanced_search_web`:具有域名、所需文本和日期范围过滤选项的高级搜索

## 回应问题的指南

1. 对于自训练数据以来可能发生变化的当前信息或事实,使用适当的搜索工具查找最新和相关的信息。

2. 使用 `search_web` 处理一般查询,使用 `advanced_search_web` 并应用适当的过滤器处理更具体的需求。

3. 制定精确的搜索查询以最大化结果的相关性。

4. 对于最近的信息,使用高级搜索中的 `max_age_days` 参数将结果限制为最近的出版物。

5. 当针对特定来源时,使用 `include_domains` 参数集中搜索。

6. 引用来源,包括来自搜索结果的 URL。

7. 对于不足或矛盾的结果,承认局限性并解释发现。

8. 将复杂主题分解为有组织的部分。

9. 提供争议话题的平衡观点。

10. 对不确定性保持透明,而不是编造信息。

11. 保持帮助、信息丰富且对话式的语气。

## 回应质量标准

您的回应应结构良好、事实准确且根据用户对主题的理解水平量身定制。在回应时间敏感或事实查询之前,使用网络搜索功能作为获取当前信息的主要工具。

请根据所需的助手行为调整系统提示。


使用

运行 Web 搜索服务器

MCP 服务器实现在 servers 目录中。要运行服务器,只需执行以下命令:

python servers/web_search.py

此命令将启动 MCP 服务器,该服务器监听请求并暴露以下工具:

  • search_web:执行基本网络搜索。
  • advanced_search_web:执行具有过滤选项的高级网络搜索。

测试工具

web_search.py 中提供了一个测试函数 test_search()(目前被注释掉),用于演示搜索功能的基本用法。您可以通过取消注释测试执行块并使用 Python 的 asyncio 运行器来运行此测试:

if __name__ == "__main__":
    import asyncio
    # 取消以下行的注释以执行测试搜索
    # asyncio.run(test_search())
    mcp.run()

这将打印样本查询的搜索结果,帮助您验证工具是否按预期工作。


Claude Desktop 配置:

通过在配置中添加以下内容来配置 Claude Desktop 使用此服务器:

{
  "mcpServers": {
    "websearch": {
         "command": "python",
         "args": ["path/to/servers/exa_web_search.py"]
       }
  }
}

故障排除

  • 缺少 EXA_API_KEY:确保 .env 文件已正确设置您的有效 Exa API 密钥。
  • 依赖问题:验证所有必要的 Python 包是否已安装(检查您的 requirements.txt 文件)。如有必要,重新安装包。
  • API 错误:如果在进行网络搜索时遇到错误,请检查网络连接并验证 Exa API 状态。

许可

本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。


贡献

欢迎贡献!如果您有建议、错误修复或改进,请提交问题或拉取请求。

愉快编码,享受使用 ReActMCP Web Search 构建个性化、多工具 AI 助手的乐趣! 🚀😊

Star History

<a href="https://www.star-history.com/#mshojaei77/ReActMCP&Date"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=mshojaei77/ReActMCP&type=Date&theme=dark" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=mshojaei77/ReActMCP&type=Date" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=mshojaei77/ReActMCP&type=Date" /> </picture> </a>