
Reactmcp
ReActMCP 是一款响应式 MCP 服务器,赋能 AI 助手通过 Exa API 驱动的实时网页搜索洞察,即时返回 Markdown 格式的响应结果。
ReActMCP 网络搜索
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 框架要求的依赖项
安装
-
克隆仓库
bashgit clone https://github.com/mshojaei77/ReActMCP.git cd ReActMCP
-
创建虚拟环境(可选但推荐)
bashpython -m venv venv source venv/bin/activate # Windows 上使用:venv\Scripts\activate
-
安装依赖项
bashpip install -r requirements.txt
配置
环境变量
在项目根目录中创建一个 .env
文件,至少包含以下变量:
env
EXA_API_KEY=your_exa_api_key_here
OPENAI_API_KEY=...
该密钥是 Exa API 执行网络搜索所必需的。
MCP 配置
MCP 配置文件 mcp_config.json
定义了您的 MCP 服务器的设置和可用工具。提供了一个示例配置:
json
{
"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 助手的行为和语气。它指导响应友好、引人入胜且信息丰富,并包含表情符号。提供了一个示例提示:
text
您是一个乐于助人、知识渊博的 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. 保持乐于助人、信息丰富和对话的语气。
## 响应质量标准
您的回答应结构良好、事实准确,并根据用户对该主题的理解水平量身定制。在回答时间敏感或事实性查询之前,使用网络搜索功能作为获取当前信息的主要工具。
可以调整系统提示以符合您期望的助手行为。
使用
运行网络搜索服务器
MCP 服务器在 servers
目录中实现。要运行服务器,只需执行:
bash
python servers/web_search.py
此命令将启动 MCP 服务器,监听请求并公开以下工具:
- search_web:执行基础网络搜索。
- advanced_search_web:执行带有筛选选项的高级网络搜索。
测试工具
在 web_search.py
中提供了一个测试函数 test_search()
(当前已注释掉),用于演示搜索功能的基本用法。您可以通过取消注释测试执行块并使用 Python 的 asyncio 运行器来运行此测试:
python
if __name__ == "__main__":
import asyncio
# 取消注释以下行以执行测试搜索
# asyncio.run(test_search())
mcp.run()
这将打印示例查询的搜索结果,并帮助您验证工具是否按预期运行。
Claude Desktop 配置:
通过将以下内容添加到您的配置中,配置 Claude Desktop 使用此服务器:
json
{
"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 助手的乐趣!🚀😊