SearXNG+MCP实现搜索引擎,想怎么搜就怎么搜
一、概述
MCP应用市场,有很多搜索引擎的应用。但是你们会发现,普遍都需要api-key。你必须花钱购买api-key才能实现搜索功能。
问题来了,我就想用免费搜索的,就像百度一样,可不可以?
答案是可以的,需要借助一下工具SearXNG,自己本地搭建SearXNG,然后使用python调用SearXNG api接口,最后用fastmcp封装一个MCP应用就可以了。
二、SearXNG本地搭建
搭建过程参考链接:https://www.cnblogs.com/xiao987334176/p/18806251
这里就不重复了
访问SearXNG页面

随便搜索一个问题

查看北京天气

注意右边可以看到,搜索引擎就是我设定的几个,比如:百度,搜狗,必应,360
其中百度是最快的,大部分人都在用百度。
这里有一个API地址,可以返回json,例如:
http://10.44.32.14:8081/search?q=上海到北京机票多少钱&format=json
结果如下:

你会看到一串json信息,里面就是搜索结果。
然后使用fastmcp调用这个api接口,封装一个MCP应用就可以了。
三、MCP应用开发
server.py
from fastmcp import FastMCP import requests mcp = FastMCP("searxng", port=9000) @mcp.tool() def search(query: str) -> str: """ 搜索关键字 """ # API URL url = "http://10.44.32.14:8081/search?q=%s&format=json"%query try: # 发送GET请求 response = requests.get(url) # 检查请求是否成功 if response.status_code == 200: # 将响应内容解析为JSON data = response.json() # print("JSON内容:") # print(data,type(data)) result_list=[] for i in data["results"]: # print(i["content"]) result_list.append(i["content"]) content="\n".join(result_list) # print(content) return content else: print(f"请求失败,状态码: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"请求过程中发生错误: {e}") return False if __name__ == "__main__": mcp.run(transport="sse")
注意修改API地址为实际地址。
四、Cherry Studio测试
添加MCP服务器

添加智能体
提示词如下:
## 技能 ### 技能1:使用MCP工具进行联网搜索,获取到的相关内容进行总结分析 ## 限制 - 如果没有相关内容,再进行联网搜索 - 你的回答应严格针对分析任务。使用结构化语言,逐步思考 - 使用的语言应和用户提问的语言相同 - 搜索的关键词必须和用户提问的内容一致
效果如下:

添加到聊天助手,开启MCP

搜索问题
AI芯片的价格怎么样
效果如下:

这里就实现了,搜索引擎的功能。
你想查询天气,地图,新闻,都是可以的。
股票价格也可以查询

不方便用手机查询,这里就可以查到,很方便。
想怎么搜就怎么搜

浙公网安备 33010602011771号