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

随便搜索一个问题

这里有一个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")
四、Cherry Studio测试
添加MCP服务器

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

添加到聊天助手,开启MCP

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

这里就实现了,搜索引擎的功能。
你想查询天气,地图,新闻,都是可以的。
想怎么搜就怎么搜
SearXNG+MCP实现搜索引擎,想怎么搜就怎么搜的更多相关文章
- 鱼搜_鱼搜官网_鱼搜搜索_http://www.7yusou.com
收集了N多视频小站,然后花了3天时间弄了一个鱼搜搜索网站.欢迎大家访问哟. http://www.7yusou.com
- 利用深搜和宽搜两种算法解决TreeView控件加载文件的问题。
利用TreeView控件加载文件,必须遍历处所有的文件和文件夹. 深搜算法用到了递归. using System; using System.Collections.Generic; using Sy ...
- 算法与数据结构(四) 图的物理存储结构与深搜、广搜(Swift版)
开门见山,本篇博客就介绍图相关的东西.图其实就是树结构的升级版.上篇博客我们聊了树的一种,在后边的博客中我们还会介绍其他类型的树,比如红黑树,B树等等,以及这些树结构的应用.本篇博客我们就讲图的存储结 ...
- 问题 C: 调酒壶里的酸奶 广搜或深搜+记忆化搜索
问题 C: 调酒壶里的酸奶 时间限制: 1 Sec 内存限制: 128 MB提交: 284 解决: 97[提交] [状态] [命题人:外部导入] 题目描述 最近小w学了一手调酒的技巧,这么帅的操作 ...
- E. New Reform_贪心,深搜,广搜。
E. New Reform time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- 广搜,深搜,单源最短路径,POJ(1130),ZOJ(1085)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=85 http://poj.org/problem?id=1130 这 ...
- Secret Milking Machine POJ - 2455 网络流(Dinic算法---广搜判断+深搜增广)+时间优化+二分
题意: 第一行输入N M C ,表示从1到N有M条无向边,现在要从1走到N 走C次完全不同的路径,求最长边的最小值.下面M行是从a点到b点的距离. 建图: 题上说从两点之间可以有多条边,问的是从1~N ...
- 算法数据结构——数的深搜和广搜(dfs和bfs)
leetcode104 二叉树的最大深度 https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/ 深度搜索分两种:递归(使用栈) ...
- 搜索过滤Tip : title,site(搜标题和搜网站)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~拿老东家作例子了.........
- BFS(广搜)DFS(深搜)算法解析
图是一种灵活的数据结构,一般作为一种模型用来定义对象之间的关系或联系.对象由顶点(V)表示,而对象之间的关系或者关联则通过图的边(E)来表示. 图可以分为有向图和无向图,一般用G=(V,E)来表示图. ...
随机推荐
- ESP32 VScode环境问题
vsdcode esp-idf插件安装 报错: Espressif\tools\idf-python\3.11.2\python.exe -m pip" is not valid. (ERR ...
- 两个半成品的ORM
只要是有点结构化的思想,不可能项目里一个sqlHelper 满天飞 到处写 ,最终你的c#代码还是得返回一个Class 才好操作,sqlhelper, datatable这种东西也只是临时将就一下,稍 ...
- EIP和NAT结合如何实现统一公网出口IP
本文分享自天翼云开发者社区<EIP和NAT结合如何实现统一公网出口IP>,作者:j****n 通过EIP和NAT网关结合,为已绑定EIP的ECS实例统一公网出口IP,有利于更高效的管理互联 ...
- redis启停shell脚本
启停脚本(redis-5.0.5) 一.编辑脚本 vim /u01/redis/redisServer.sh #!/bin/sh # # Simple Redis init.d script conc ...
- flutter-修改Android包名
- MDK Debug时No target connected,STM32 ST-LINK Utility连接不上单片机的解决办法“Can not connect to target!”
芯片下载程序成功,再次下载时出现,以下错误. 点击确认后,如下提示. 或提示如下. 不管怎么设置都侦测不到芯片. 使用STM32 ST-LINK Utility连接单片机时提示下边错误 "C ...
- Kafka - server.properties参数详解
server.properties #broker的全局唯一编号,不能重复 broker.id=0 #用来监听链接的端口(kafka端口号),producer或consumer将在此端口建立连接 po ...
- 2024.11.21随笔&联考总结(补)
前言 都过了几天了,但是还是大概写一下吧,希望不要耽误太多时间. 考试 第一题签到题直接做. 第二题一眼是矩阵乘法优化 dp,然后大概看了几眼先不管去看第三题.然后第三题是数学题,感觉很可做.然后看到 ...
- 关于jsp的MySQL数据库连接问题
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...
- nuxt.js 使用 Typescript 在 VSCode 报错: File 'xxx/components/Logo.vue' is not a module. Vetur(2306)
nuxt.js 生成的默认文件 components/Logo.vue 源码大概如下: 1 <template> 2 <svg 3 class="NuxtLogo" ...