hidrix-tools:基于MCP协议为AI智能体打造互联网信息获取工具箱
在AI智能体与自动化工作流领域,如何让大语言模型突破其固有的信息边界,实现对外部实时数据的主动获取与处理,是提升其实际应用价值的关键挑战。Model Context Protocol(MCP)作为一种开放协议,为解决这一问题提供了标准化方案,它定义了AI应用与外部工具、数据源之间安全、声明式的交互方式。通过MCP,开发者可以构建功能丰富的工具服务器,将网页搜索、社交媒体内容抓取、数据分析等能力无缝
1. 项目概述:一个为AI编码智能体打开互联网之眼的工具箱
如果你和我一样,每天都在和Claude Code、Cursor或者pi这类AI编码助手打交道,那你肯定也遇到过这个痛点:它们写代码、读文件是把好手,但一旦你需要它们去网上搜点资料、看看X(原Twitter)上最新的技术讨论、或者扒拉一下Reddit某个热门话题的来龙去脉,它们就立刻“瞎”了。最终,你还是得自己手动打开浏览器,搜索、复制、粘贴,再把那一大段文本扔回对话窗口。这个过程不仅打断了流畅的编码心流,也让“让AI成为你的全能副驾”这个愿景打了折扣。
昨天,我把这个问题的解决方案开源了—— hidrix-tools 。这是一个实现了MCP(Model Context Protocol)协议的服务器,它一口气打包了18个工具,专门用来武装你的AI智能体,让它们能直接搜索网页、抓取社交媒体内容并进行初步分析。简单说,它就是给你的AI助手装上了“互联网眼睛”和“数据分析小手”。关键词是 AI 、 MCP 、 开源 和 效率 。无论你是独立开发者、技术研究员还是内容运营,只要你的工作流里涉及信息搜集和整理,这个工具集都能帮你把那些重复、琐碎的“体力活”自动化,把时间还给真正的思考和创造。
2. 核心设计思路:为什么是MCP与工具集?
2.1 直面痛点:AI智能体的能力边界与“信息孤岛”
当前基于大语言模型的AI编码助手,其能力核心在于对给定上下文(Context)的理解与生成。它们能出色地处理你提供的代码文件、技术文档,但主动获取外部、实时、非结构化信息的能力几乎为零。这形成了一个“信息孤岛”:智能体被困在你主动喂给它的数据里。
我遇到的典型场景包括:
- 技术调研 :想了解某个新框架(比如Bun)在社区的真实反响,需要看X上的开发者讨论和Reddit的评测。
- 竞品分析 :需要监控竞争对手在Facebook群组或LinkedIn上的最新动态和产品宣发。
- 内容灵感 :从YouTube科技频道或TikTok趋势中寻找下一个视频或博客的选题。
- 市场信号 :追踪特定关键词(如“WebGPU”)在不同平台被提及的热度和情感变化。
以往,这些都需要我作为人类,在浏览器、社交App和AI对话窗口之间反复横跳。 hidrix-tools 的设计初衷,就是打破这个孤岛,通过一套标准化的协议,让智能体能够按需、自主地调用这些信息获取能力。
2.2 协议选型:为什么是MCP?
在构建这个桥梁时,我评估过几种方案:为每个AI助手(如Claude、Cursor)单独写插件、构建一个独立的HTTP API服务供智能体调用,或者采用一个更通用的协议。
我最终选择了 MCP(Model Context Protocol) 。这是Anthropic提出的一种开放协议,旨在标准化AI应用与工具、数据源之间的交互方式。它的优势非常明显:
- 无供应商锁定 :MCP是一个开放标准,不被任何一家AI模型厂商独占。只要你的AI智能体客户端支持MCP(如Claude Desktop、Cursor、Windsurf等),你就可以无缝接入
hidrix-tools,无需为每个平台重写适配逻辑。 - 声明式工具定义 :工具的能力(名称、描述、参数格式)通过一个清晰的Schema定义。智能体在连接时就能自动发现所有可用工具,并理解如何调用它们,降低了集成复杂度。
- 安全的资源访问 :MCP设计了资源(Resources)和工具(Tools)的概念,可以对智能体访问的数据范围进行约束,比直接让模型自由调用任意API更可控。
- 活跃的生态 :MCP背后有Anthropic和逐渐壮大的开发者社区支持,工具和客户端的生态正在快速成长,选择它意味着跟上主流趋势。
用一个类比来说,如果每个AI助手是不同的电器(冰箱、空调),那么 hidrix-tools 就是一个符合“通用插座标准”(MCP)的“多功能电源插排”,上面提供了各种接口(搜索、抓取、分析),任何符合标准的电器都能即插即用。
2.3 架构概览:从用户指令到信息洞察
hidrix-tools 的架构非常清晰,扮演了一个中间层的角色。整个数据流的闭环如下:
[用户向AI智能体提问]
↓
[AI智能体(如Claude Code)解析问题,判断需调用外部工具]
↓
[通过MCP协议,调用 hidrix-tools 中的相应工具(如 `x_search`)]
↓
[hidrix-tools 调用对应的第三方API或执行爬取逻辑(如向Brave Search API发起请求)]
↓
[获取原始数据(JSON、HTML等),在hidrix-tools内部进行清洗、转码(如HTML转Markdown)]
↓
[将结构化的结果(文本、链接、元数据)通过MCP协议返回给AI智能体]
↓
[AI智能体将获取的信息整合到自己的上下文中,生成最终回答或执行后续操作]
这个架构的核心在于 hidrix-tools 本身不包含AI模型,它只是一个功能的提供者(Server)。真正的“大脑”仍然是你的AI智能体客户端,它负责决定何时、以及如何使用这些工具。
注意 :使用社交媒体抓取工具时,务必遵守目标网站的
robots.txt协议和服务条款。hidrix-tools提供的工具主要用于个人学习和效率提升,严禁用于大规模、商业化的数据爬取或任何可能干扰网站正常服务的行为。对于公开API(如Brave Search),请确保使用自己的合法API密钥并遵守其用量限制。
3. 工具集深度解析:18般武艺,各显神通
hidrix-tools 目前集成了18个工具,可以粗略分为四大类:搜索、抓取、分析和存储。下面我们深入看看其中一些关键工具的设计考量和使用细节。
3.1 搜索类工具:精准触达全网信息
搜索是信息获取的起点。我并没有只依赖某一个搜索引擎,而是根据不同的信息类型和平台特性,选择了最合适的源头。
-
web_search(基于Brave Search API) :为什么选择Brave?因为它是一个注重隐私的搜索引擎,且API返回的结果相对干净,广告和SEO优化内容干扰较少。对于获取通用的技术博客、官方文档、新闻资讯,它的效果非常可靠。在实现上,我对其结果进行了轻量化的摘要提取,并优先保留description和title,方便智能体快速理解链接内容。 -
x_search与x_thread_reader:这是使用频率最高的一对工具。x_search用于根据关键词实时查找推文,而x_thread_reader则解决了阅读长对话链的痛点。它会自动抓取一条推文的所有回复,并按对话树的结构整理成可读的Markdown格式。这对于追踪一个技术热点的完整讨论过程至关重要。实现时需要注意处理X的速率限制,以及一些前端渲染动态内容的情况。 -
reddit_search与reddit_thread_reader:Reddit是另一个信息宝库,特别是r/programming、r/technology等子版块。reddit_thread_reader不仅会获取主帖和评论,还会保留Reddit的投票分数和评论层级结构。一个实用技巧是,你可以让智能体优先获取高票(top)评论,这往往是质量最高或最具代表性的观点。 -
youtube_search与tiktok_search:对于视频平台,搜索工具返回的是视频元数据(标题、描述、频道、时长、链接)。更强大的是配套的youtube_transcript工具(后文会提到),它可以直接获取视频的字幕文本,让智能体“阅读”视频内容。
3.2 抓取与爬虫类工具:获取结构化内容
当搜索找到目标页面后,下一步就是获取页面内的详细内容。
-
web_fetch:这是一个基础但核心的工具。它接受一个URL,并尝试将整个网页内容转换为干净、易读的Markdown。这比直接把HTML扔给AI智能体要高效得多。我使用了Readability.js类似的算法来提取正文,并过滤掉导航栏、广告等噪音内容。对于技术文档站(如MDN、React Docs),效果极佳。 -
facebook_scraper:这是工具集中比较复杂的一部分。由于Facebook没有公开的、友好的API供普通开发者获取群组和页面内容,这里需要一些技术手段。我实现了一个管道(pipeline),可以处理多种目标:- 公开群组/页面 :抓取最近的帖子、评论和反应。
- 关键词搜索 :在Facebook站内搜索公开帖子。
- Meta广告库 :这是一个相对公开的数据源,可以查看竞争对手正在投放的广告素材和文案。
重要提示 :Facebook的反爬机制非常严格。此工具仅供学习研究,务必谨慎使用,避免高频请求导致IP被封。在实际代码中,我加入了随机延迟、用户代理轮换等基本策略,并强烈建议用户自行负责合规使用。
-
linkedin_search与linkedin_profile:LinkedIn是职业和商业信息的核心。令人惊喜的是,在不需要登录的情况下,我们仍然可以通过一些公开的接口或巧妙构造的搜索请求,获取到个人公开资料的基本信息和部分公开帖子。这对于竞品公司关键人员动态追踪或市场情报收集很有帮助。
3.3 分析类工具:从数据到洞察
获取信息只是第一步,让智能体初步理解信息才能产生更大价值。
-
content_scorer(内容评分器) :这个工具是我根据实际需求自研的。它接受一批内容(比如一组推文或Reddit帖子),并给出一个综合评分。评分逻辑结合了:- 互动数据 :点赞、转发、评论数,经过对数处理以避免极端值主导。
- 时间衰减 :越新的内容权重越高,采用类似“牛顿冷却定律”的指数衰减模型。一篇三天前火爆的帖子,其得分可能不如一篇今天中等热度的新帖。
- 来源权重 (可选):可以配置某些你信任的KOL或媒体账号发布的内容具有基础加分。 这样,智能体在汇报“今日热点”时,就能自动筛选出既热门又新鲜的内容,而不是简单按互动数排序。
-
content_analyzer(内容分析器) :这个工具更进了一步,它尝试对一批文本内容进行主题聚类、模式识别和趋势发现。其底层可能会调用本地运行的轻量级NLP库(如natural)进行关键词提取和简单聚类,或者整合智能体自身的文本理解能力。例如,你可以让它分析过去一周关于“Rust”的推文,自动总结出大家都在讨论“内存安全”、“WASM”还是“新的GUI框架”。
3.4 存储与知识管理:构建你的数字外脑
工具集产生的数据如果用过就丢,那就太可惜了。我设计了基于SQLite的本地存储层和知识编译功能,让信息沉淀下来。
-
SQLite存储 :每个工具调用成功返回的数据,都会自动存入本地的SQLite数据库。这带来了三个核心好处:
- 去重 :相同的URL或内容ID不会被重复存储,节省空间。
- 历史记录 :你可以查询过去任何一次工具调用的输入和输出,方便回溯。
- 离线查询 :即使网络中断,你也可以让智能体基于本地历史数据库进行信息检索和关联分析。
-
knowledge_compiler(知识编译器) :这是我自己最爱的功能,也是自动化工作流的典范。它不是一个被手动调用的工具,而是一个后台进程。你可以配置一个“关注列表”,比如10个你所在领域的X(Twitter)大V,以及一些关键词(如“Web3”、“AI Agent”)。 每天,一个定时任务(cron job)会自动启动,通过x_search、x_user_posts等工具收集这些目标的新内容,存入数据库,然后启动知识编译器。编译器会:- 读取新收集的内容。
- 提取关键实体、观点和引述。
- 按照预设的模板,生成或更新你Obsidian知识库中的笔记。 例如,它会为每个你关注的人创建一个笔记,记录其最新观点;也会为每个追踪的关键词创建一个“动态摘要”笔记。 我每天早晨打开Obsidian,就像有一个隐形的助理已经为我准备好了最新的行业简报 。这一切完全自动运行,零手动干预。
4. 从零开始:安装、配置与实战集成
理论说了这么多,我们来点实际的。下面是一份从零开始,将 hidrix-tools 接入你的Claude Code(或其他MCP客户端)的完整指南。
4.1 环境准备与项目安装
首先,确保你的系统已经安装了Node.js(建议18+版本)和Bun。Bun在这里作为运行时,因其启动速度和与TypeScript的原生兼容性而被选用。
# 1. 克隆项目到本地一个合适的位置,比如用户目录下的隐藏文件夹
git clone https://github.com/sonpiaz/hidrix-tools.git ~/.hidrix-tools
# 2. 进入项目目录并安装依赖
cd ~/.hidrix-tools
bun install # 使用bun安装,速度更快
# 3. 复制环境变量示例文件,并配置你的API密钥
cp .env.example .env
接下来,打开新创建的 .env 文件,这是整个工具集运行的关键。你需要申请并填写必要的API密钥:
# .env 文件示例
BRAVE_API_KEY=your_brave_search_api_key_here
# X (Twitter) 相关 - 可能需要通过逆向工程或第三方服务获取token,请注意合规风险
X_AUTH_TOKEN=...
X_CSRF_TOKEN=...
# Reddit 相关 - 需要在 https://www.reddit.com/prefs/apps 创建应用
REDDIT_CLIENT_ID=...
REDDIT_CLIENT_SECRET=...
REDDIT_USER_AGENT=myBot/0.1.0 (by your_username)
# 其他服务的密钥...
实操心得 :不同API的申请难度和成本不同。Brave Search API有免费额度,非常适合起步。Reddit的API申请相对简单,遵循其规则即可。对于X、Facebook等没有官方开放API的平台,获取稳定可用的访问凭证是目前最大的挑战,可能需要一些开发技巧,并时刻注意法律和平台条款的边界。项目文档和社区讨论可能会提供一些非官方的、基于浏览器自动化(如Puppeteer)的解决方案,但这些方案更脆弱,且需要你自行维护。
4.2 配置MCP客户端(以Claude Desktop为例)
安装好服务器后,需要告诉你的AI智能体客户端它的存在。对于Claude Desktop,配置是通过一个JSON文件完成的。
-
找到你的Claude Desktop配置目录。通常在:
- macOS :
~/Library/Application Support/Claude/claude_desktop_config.json - Windows :
%APPDATA%\Claude\claude_desktop_config.json - Linux :
~/.config/Claude/claude_desktop_config.json
- macOS :
-
打开(或创建)这个
claude_desktop_config.json文件,添加hidrix-tools服务器的配置。 重要:请确保路径正确 。
{
"mcpServers": {
"hidrix-tools": {
"command": "bun",
"args": ["run", "/absolute/path/to/your/.hidrix-tools/server.ts"]
// 例如在macOS上可能是:
// "args": ["run", "/Users/yourusername/.hidrix-tools/server.ts"]
}
}
}
-
保存文件,并 完全重启Claude Desktop应用 (不仅仅是关闭窗口,要从任务栏或活动监视器中彻底退出再启动)。
-
重启后,当你新建一个对话,Claude应该会在界面中提示你“已连接MCP服务器:hidrix-tools”,或者你可以在输入框旁的工具图标中看到可用的工具列表。
4.3 首次对话测试
现在,让我们开始和武装好的Claude对话吧。你可以尝试一些之前它无法直接完成的任务:
你 :“帮我搜索一下今天关于‘Bun 1.1’的最新推文,找找看开发者们都在讨论什么新特性。”
Claude :(识别出需要调用 x_search 工具)它会自动调用工具,并可能回复: “我调用工具搜索了相关推文。找到了大约15条过去24小时内关于‘Bun 1.1’的推文。其中被讨论最多的新特性似乎是其改进的Node.js兼容层和对特定npm包支持度的提升。例如,用户@dev_xyz提到… [此处整合了多条推文摘要]。”
你 :“很好,把其中最热门的那条推文所在的完整对话链抓取下来给我看看。”
Claude :(调用 x_thread_reader 工具)它会返回一个结构清晰的Markdown格式对话树,让你一目了然地看到整个讨论的来龙去脉。
你 :“把这些关于Bun的信息,连同它们来源的链接,保存到我的知识库里,归类到‘JavaScript运行时’这个主题下。”
Claude :(可以结合 knowledge_compiler 的逻辑,或直接为你生成一段可保存的笔记)它可能会输出一份格式优美的Markdown摘要,你可以手动保存,或者未来通过自动化流程让其直接写入Obsidian。
通过这样的交互,你就能真切感受到,AI智能体从一个封闭的文本处理器,变成了一个能主动获取、处理和整合外部信息的强大研究伙伴。
5. 高级用法与自定义工具开发
当你熟悉了基本使用后, hidrix-tools 的扩展性将带来更大的威力。
5.1 构建自动化监控工作流
这是 hidrix-tools 价值的最大化体现。你不必每次都手动提问,而是可以设置自动化脚本。
假设你想每天上午9点获取某个竞争对手的LinkedIn动态和行业关键词在Reddit上的讨论,并编译成报告。你可以创建一个 cron 任务:
# 编辑crontab
crontab -e
# 添加一行,每天上午9点运行你的脚本
0 9 * * * cd /path/to/your/script && bun run daily-monitor.ts
你的 daily-monitor.ts 脚本可能长这样:
import { McpClient } from ‘your-mcp-client-library’; // 伪代码,实际需根据MCP客户端库调整
async function dailyMonitor() {
const client = new McpClient(‘hidrix-tools-server’);
// 1. 搜索竞争对手动态
const linkedinResults = await client.callTool(‘linkedin_search’, { company: ‘竞争对手公司名’ });
// 2. 搜索Reddit行业关键词
const redditResults = await client.callTool(‘reddit_search’, { q: ‘行业关键词’, subreddit: ‘technology’, sort: ‘top’, time: ‘day’ });
// 3. 调用内容分析器
const analysis = await client.callTool(‘content_analyzer’, {
texts: [...linkedinResults.posts, ...redditResults.threads].map(t => t.content),
clusterTopics: true
});
// 4. 生成Markdown报告并保存或发送到通知渠道(如邮箱、Slack)
const report = generateMarkdownReport(analysis);
saveToObsidian(report); // 或 sendToSlack(report);
}
这个工作流让你完全从日常信息搜集中解放出来。
5.2 添加你自己的工具
hidrix-tools 的架构使得添加新工具异常简单。所有工具都位于 tools/ 目录下,并采用一致的模板。
假设你想添加一个查询Hacker News头条新闻的工具:
-
复制模板 :
cp -r tools/_template tools/hackernews_top -
编辑工具定义 (
tools/hackernews_top/index.ts):import { z } from “zod”; import { defineTool } from “../tool-definition”; export default defineTool({ name: “hackernews_top”, description: “Fetches the top stories from Hacker News.”, inputSchema: z.object({ limit: z.number().min(1).max(30).default(10).describe(“Number of top stories to fetch”), }), execute: async ({ limit }) => { // 实现逻辑:调用HN的API (https://hacker-news.firebaseio.com/v0/topstories.json) const storyIds = await fetchTopStoryIds(); const stories = await Promise.all( storyIds.slice(0, limit).map(fetchStoryDetail) ); // 返回结构化的数据 return { stories: stories.map(s => ({ title: s.title, url: s.url, score: s.score, by: s.by, time: s.time, })) }; }, }); -
重启服务器 :工具是动态发现的。重启
hidrix-tools的MCP服务器进程,你的AI智能体就能立刻看到并使用这个新工具hackernews_top了。
这种设计鼓励社区贡献。你可以将自己需要的特定平台抓取工具或数据分析工具贡献出来,让整个生态更丰富。
6. 常见问题、排查与性能优化
在实际使用中,你可能会遇到一些问题。这里记录了一些典型情况和解决方案。
6.1 连接与配置问题
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| Claude Desktop启动后未提示连接MCP服务器。 | 1. 配置文件路径或格式错误。 2. hidrix-tools 服务器进程未启动或启动失败。 3. Claude Desktop版本过旧。 |
1. 检查 claude_desktop_config.json 的JSON语法,确保路径是 绝对路径 。 2. 在终端手动进入 ~/.hidrix-tools 目录,运行 bun run server.ts ,查看是否有错误输出(如缺少API密钥)。 3. 更新Claude Desktop到最新版本。 |
| 工具调用失败,返回“Tool not found”或超时。 | 1. 工具名称拼写错误。 2. MCP服务器进程崩溃。 3. 网络问题或目标API不可用。 |
1. 在Claude中查看工具列表确认正确名称。 2. 检查运行 server.ts 的终端是否有报错日志。 3. 尝试手动调用一个简单工具(如 web_search )测试基础连通性。 |
| 社交媒体抓取工具返回空数据或认证错误。 | 1. API密钥过期或无效。 2. 目标平台更新了反爬机制。 3. 请求频率过高被暂时限制。 |
1. 重新检查 .env 文件中的密钥,并到对应平台确认其有效性。 2. 关注项目GitHub的Issue,看是否有相关更新。 3. 在工具代码中增加请求间隔( sleep ),或更换IP地址。 |
6.2 数据质量与处理技巧
-
搜索结果噪音大 :尝试在搜索关键词中使用更精确的短语(用引号括起来),或结合平台的高级搜索语法(如在X搜索中使用
from:username或since:2024-01-01)。hidrix-tools的搜索工具通常支持传递这些原生查询参数。 -
网页转Markdown效果不佳 :
web_fetch工具依赖于通用的正文提取算法。对于结构特殊或重度依赖JavaScript的网站(如某些单页应用),提取效果可能很差。此时,可以考虑让智能体直接请求原始HTML,并提示它“忽略导航菜单和广告,只提取主要内容”,利用大模型本身强大的文本理解能力进行清洗。 -
数据库文件过大 :SQLite数据库默认存储在项目根目录。如果长期运行,数据量可能增长很快。你可以定期清理旧数据,或者修改存储逻辑,将数据按时间分库存储。也可以考虑将数据库文件移到速度更快的SSD上以提升查询性能。
6.3 性能与稳定性优化建议
-
API密钥管理与配额 :为每个服务设置用量提醒。特别是Brave Search等有免费额度的API,避免意外超限。可以考虑在代码中实现简单的配额监控和切换逻辑。
-
错误处理与重试 :网络请求必然失败。在自定义工具时,务必实现健壮的错误处理和指数退避重试机制。对于非关键任务,记录错误后跳过,避免整个工作流因单点失败而中止。
-
缓存策略 :对于更新不频繁的信息(如个人资料、历史文章),可以在调用工具前先查询本地SQLite数据库。如果存在且未过期,则直接返回缓存结果,这能极大减少对外部API的调用,提升响应速度并节省配额。
-
进程守护 :如果你将
hidrix-tools用于生产环境的自动化流水线,建议使用像pm2这样的进程管理工具来守护server.ts进程,确保它崩溃后能自动重启。
7. 开源贡献与未来展望
hidrix-tools 是一个完全开源的项目,采用MIT许可证。这意味着你可以自由地使用、修改和分发它。项目的生命力在于社区。
-
如何贡献 :如果你修复了一个bug,添加了一个新工具,或者改进了文档,非常欢迎你提交Pull Request。在提交前,请确保代码风格一致,并通过基本的测试。项目仓库中的
CONTRIBUTING.md文件会有更详细的指引。 -
我个人的使用体会 :自从将日常的信息监控任务交给
hidrix-tools和AI智能体后,我每天至少节省出1-2小时曾经用于手动刷信息流的时间。更重要的是,它改变了我的信息消费模式——从被动、碎片化的浏览,转变为主动、有目的的索取和系统化的沉淀。那个自动更新的Obsidian知识库,已经成为我第二大脑不可或缺的一部分。 -
可能的演进方向 :
- 更多数据源 :集成更多垂直社区(如Discord频道、Slack社区摘要)、学术数据库或商业数据API。
- 更智能的分析 :集成本地运行的小型LLM(如Llama.cpp),在将结果返回给主智能体前,先进行一轮摘要、情感分析或事实核查。
- 可视化仪表板 :提供一个简单的Web界面,展示监控关键词的趋势变化、信息源贡献度等。
- 工作流市场 :用户可以将自己配置好的自动化监控脚本(如“每日科技简报生成器”)分享出来,供他人一键复用。
这个项目的核心精神是“赋能”。它不试图创造一个全能的人工智能,而是提供一套精良的“瑞士军刀”,让现有的、你已经习惯使用的AI智能体变得更加强大和自主。如果你也厌倦了在浏览器和AI对话窗之间反复切换,不妨试试 hidrix-tools ,亲手为你的AI助手装上翅膀。
更多推荐




所有评论(0)