惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
IT之家
IT之家
Stack Overflow Blog
Stack Overflow Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
腾讯CDC
P
Palo Alto Networks Blog
Spread Privacy
Spread Privacy
S
Schneier on Security
NISL@THU
NISL@THU
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Proofpoint News Feed
T
Threatpost
Scott Helme
Scott Helme
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
I
Intezer
C
Check Point Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cyber Attacks, Cyber Crime and Cyber Security
S
Securelist
Security Latest
Security Latest
大猫的无限游戏
大猫的无限游戏
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
小众软件
小众软件
www.infosecurity-magazine.com
www.infosecurity-magazine.com
云风的 BLOG
云风的 BLOG
量子位
T
Tor Project blog
博客园 - 叶小钗
The Cloudflare Blog
Simon Willison's Weblog
Simon Willison's Weblog
T
Tailwind CSS Blog
W
WeLiveSecurity
Hacker News - Newest:
Hacker News - Newest: "LLM"
Attack and Defense Labs
Attack and Defense Labs
S
Security Affairs
罗磊的独立博客
Know Your Adversary
Know Your Adversary
Engineering at Meta
Engineering at Meta
G
Google Developers Blog
Help Net Security
Help Net Security
美团技术团队
P
Privacy International News Feed
The Hacker News
The Hacker News
Hugging Face - Blog
Hugging Face - Blog
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

szhshp 的第三边境研究所

假设, AI 把我代替的那一刻真的到来 | szhshp 的第三边境研究所 《智人之上: 从石器时代到 AI 时代的信息网络简史》阅读笔记 | szhshp 的第三边境研究所 iPadOS 26 无法设置空间场景图片壁纸的解决方法 | szhshp 的第三边境研究所 《一路云海》(终) | szhshp 的第三边境研究所 《一路云海》(四): 如何不按套路旅行 | szhshp 的第三边境研究所 《一路云海》(三): In Ya Mellow Tone | szhshp 的第三边境研究所 《一路云海》(二): 关西世博参观纪实 | szhshp 的第三边境研究所 《一路云海》(一): 新的征程 | szhshp 的第三边境研究所 2025 大阪世博会 [ 3 天前-先到先得 ] 阶段 场馆预约必中独家攻略 | szhshp 的第三边境研究所 Hackathon 随想 | szhshp 的第三边境研究所 一杯双皮奶 | szhshp 的第三边境研究所 Armbian + CasaOS + NAS 配置指南 | szhshp 的第三边境研究所 Docker 构建镜像报错: error getting credentials - err: exit status 1, out: `` | szhshp 的第三边境研究所 Disqus RIP! 论过高的维护成本如何治疗固执的坏习惯 | szhshp 的第三边境研究所 炸弹猫桌游变体规则 | szhshp 的第三边境研究所 《小岛经济学》阅读笔记 | szhshp 的第三边境研究所 《金钱心理学》阅读笔记 | szhshp 的第三边境研究所 为知笔记 RIP: 迁移剩余的笔记 | szhshp 的第三边境研究所 2025 博客第十年展望 - 再见我的过去 | szhshp 的第三边境研究所 我在独立游戏里面致敬的作品 | szhshp 的第三边境研究所 《How to make thing faster》阅读笔记 | szhshp 的第三边境研究所 《The Art of Clean Code》阅读笔记 | szhshp 的第三边境研究所 《Clean Architecture: A Craftsman Guide to Software Structure and Design》阅读笔记 | szhshp 的第三边境研究所 《How AI Works》阅读笔记 | szhshp 的第三边境研究所 游戏策划废案 - Project Uranus | szhshp 的第三边境研究所 游戏策划废案 - Project X | szhshp 的第三边境研究所 人生第一款独立游戏开发复盘 | szhshp 的第三边境研究所 Trap of Life | szhshp 的第三边境研究所 如果我用手搓了个暗物质雏形 | szhshp 的第三边境研究所 《Rust Programming Language》- EX - Cheatsheet | szhshp 的第三边境研究所 新的播放器上线了 | szhshp 的第三边境研究所 Cypress - End-to-End Testing: OKTA Authentication with MFA | szhshp 的第三边境研究所 VSC x VIM - 反正多学几个快捷键没有坏处 | szhshp 的第三边境研究所 两小时 Docker 速成 - Getting Started | szhshp 的第三边境研究所 《The Joy of Javascript》- 5 - Data | szhshp 的第三边境研究所 《The Joy of Javascript》- 4 - Meta Programming | szhshp 的第三边境研究所 《The Joy of Javascript》- 3 - ADT(Algebraic Data Type) | szhshp 的第三边境研究所 Web-Automation Testing | szhshp 的第三边境研究所 《The Joy of Javascript》- 2 - Functor/Monad | szhshp 的第三边境研究所 《The Joy of Javascript》- 1 - Object/Function | szhshp 的第三边境研究所 EvalError: Possible side-effect in debug-evaluate | szhshp 的第三边境研究所 前端 QA 工具链指南 - husky,commitlint,commitizen,eslint,typescript,express | szhshp 的第三边境研究所 效率工具 & 软件推荐 | szhshp 的第三边境研究所 站点开源 Project Titan | szhshp 的第三边境研究所 cmd/powershell-命令速查-Cheatsheet | szhshp 的第三边境研究所 Git-命令速查与相关问题解决-Cheatsheet & Troubleshooting | szhshp 的第三边境研究所 Tailwind.css not included in NextJS Production | szhshp 的第三边境研究所 Github GraphQL API - Data Integration | szhshp 的第三边境研究所 尝试 Windows Terminal + z.lua | szhshp 的第三边境研究所 StrokePlus.net - Powerful Hotkey Boost | szhshp 的第三边境研究所 优雅地 Hack 一台黑苹果 | szhshp 的第三边境研究所 一杯关东煮 | szhshp 的第三边境研究所 Gitee x PicGo 管理图床 | szhshp 的第三边境研究所 Create Your Own Redux (Typescript) | szhshp 的第三边境研究所 Getting Started: Ionic + Capacitor + React + Typescript + Android | szhshp 的第三边境研究所 GraphQL: File Upload & Troubleshooting | szhshp 的第三边境研究所 吉祥航空随心飞刷票工具循环查票工具 | szhshp 的第三边境研究所 NVM Windows Portable Installation | szhshp 的第三边境研究所 NextJS x Typescript - Integration & Troubleshooting | szhshp 的第三边境研究所 全站点升级 - Project Titan | szhshp 的第三边境研究所 AWS-EC2-常见问题解决-Troubleshooting | szhshp 的第三边境研究所 Workbox-Getting Started | szhshp 的第三边境研究所 《时间简史》阅读笔记 | szhshp 的第三边境研究所 《时间的秩序》阅读笔记 | szhshp 的第三边境研究所 ESLint-常见问题解决-Troubleshooting | szhshp 的第三边境研究所 站点索引 | szhshp 的第三边境研究所 个人知识库搭建 - Hexo 实现 Github/Coding 持续集成 | szhshp 的第三边境研究所 BMOB-常见问题解决-Troubleshooting | szhshp 的第三边境研究所 React + Typescript: 开启 HMR/Hot Loader | szhshp 的第三边境研究所 Yarn & NPM | szhshp 的第三边境研究所 ESLint: Typescript + React + TSX 集成 | szhshp 的第三边境研究所 《10101》EP15:过年 2020 | szhshp 的第三边境研究所 Cmder-Usage | szhshp 的第三边境研究所 Redux-DOM not refreshed | szhshp 的第三边境研究所 React Semantic UI-CheatSheet | szhshp 的第三边境研究所 Typescript: Getting Started | szhshp 的第三边境研究所 Flutter-Getting Started | szhshp 的第三边境研究所 Typescript: Access window object with type check | szhshp 的第三边境研究所 VSC Extension Development-Create A Code Formatter Extension | szhshp 的第三边境研究所 OneNote Extension-Main API | szhshp 的第三边境研究所 TortoiseGit Win10 Icon not showing correctly | szhshp 的第三边境研究所 Mongoose: aggregate() 方法实现聚合函数 | szhshp 的第三边境研究所 React In Depth - React 源码解析 - render() & Fiber | szhshp 的第三边境研究所 MongoDB x Mongoose: 实现类似 Join 的功能 | szhshp 的第三边境研究所 Disqus 评论框改造工程-实现 Disqus 代理的 Serverless 服务 | szhshp 的第三边境研究所 GUI, CLI, Terminal, Shell, TTY, Console, Bash | szhshp 的第三边境研究所 Jest Async Best Practise: No Nested Async | szhshp 的第三边境研究所 关系型数据库与非关系型数据库优缺点分析 | szhshp 的第三边境研究所 New Edge & Chromium Error - Package is invalid: 'CRX_VERSION_NUMBER_INVALID' | szhshp 的第三边境研究所 选择 GraphQL 的 N 个理由 | szhshp 的第三边境研究所 StrokePlus - 鼠标手势神器的代码编写技巧 | szhshp 的第三边境研究所 嗨,好久不见 | szhshp 的第三边境研究所 Vue + ElementUI 集成 Vue Router | szhshp 的第三边境研究所 IE8 - Unknown Runtime Error Using innerHTML & Ajax | szhshp 的第三边境研究所 React: Handling Events | szhshp 的第三边境研究所 React-Navigation Integration with Redux | szhshp 的第三边境研究所 React: States is tricky | szhshp 的第三边境研究所 《10101》EP14:小剧场 | szhshp 的第三边境研究所 ColdFusion - Basic - arguments in cffunction | szhshp 的第三边境研究所 ColdFusion - Basic - cfset | szhshp 的第三边境研究所
小傻瓜都能懂的 AstrBot QQ 机器人集成 MCP 功能实战指南 | szhshp 的第三边境研究所
2025-10-08 · via szhshp 的第三边境研究所

Meta

目录

前言

早在 2021 年, 我曾使用 Koishi 开发过一个 QQ 机器人.

然而, 大约半年后, 各种依赖库频繁出现问题, 需要不断更新版本, 每次升级后各种莫名其妙的问题, 维护成本过高, 最终放弃了继续使用.

最近一个月, 我偶然发现了 AstrBot 这个项目. 花了一个小时搭建 POC 后, 发现它比 Koishi 好用太多了, 于是开始深入研究.

本文将详细介绍如何在 AstrBot 中集成 MCP (Model Context Protocol) 功能, 让 QQ 机器人具备更强大的 AI 能力.

先决条件

在开始集成 MCP 之前, 确保你已经具备以下条件:

  1. 你有一个运行中的 AstrBot 服务
  2. 你有一个运行中的 QQ 服务, 例如和 AstrBot 一同部署的 Napcat
  3. 你的 AstrBot 实例可以成功连接到你的 QQ 服务
  4. 你的 AstrBot 已经连接上 AI Provider
  5. 你的 QQ 机器人已经可以返回消息

其实满足上方 #5 就相当于已经满足了 #1 - #4 , 典型示例:

关于 MCP

以下是 MCP (Model Context Protocol) 的要点:

  • 起源: 由 Anthropic 于 2024 年 11 月开源, 旨在解决大模型与外部工具交互的复杂性.
  • 功能: 提供标准化接口, 简化模型与工具的调用, 降低开发成本.
  • 技术: 基于 JSON-RPC 2.0, 支持多种传输协议, 核心包括资源, 工具和提示模板三大概念.
  • 应用: 适用于多领域集成, 支持多模型, 能够实现自动化任务.
  • 前景: 该标准正在持续完善, 以促进更广泛的应用和 AI 生态发展.

TL’DR

我知道很多人不会看上面这段废话, 所以这里是 TL'DR :

让 AI 听懂人话并完全按照命令执行复杂请求, 处理完后返回结果.

再傻瓜一些:

自然语言 -> 大模型 -> 按需调用一个或多个 MCP -> 返回结果 -> 大模型

MCP 实现了一些动作的 精细化, 防止了 AI 理解错误和幻觉的产生.

AstrBot 集成 MCP

很幸运, 公司在年初 (这一点管理层视野很超前) 便开始向员工推广使用 MCP, 所以我们在 Q1 就进行了一些尝试, 也积累了一些经验.

当我看到 AstrBot 的文档中提到可以集成 MCP 时, 我便直接否决了 Koishi 的未来前景, 他已经落后了一步了.

AstrBot 里面配置 MCP 非常简单, 新增一个 MCP 服务器, 然后粘贴进可用的 MCP 服务器地址即可.

比如这里 szhshp-games 对应的配置为:

{
  "transport": "streamable_http", 
  "url": "https://mcp.szhshp.org/games/mcp", 
  "timeout": 30
}

MCP 服务器的编写

MCP 服务器的编写也很傻瓜, 就是一个 HTTP Server, 然后返回符合 MCP 规范的 JSON 数据即可.

甚至因为有封装好的 API to MCP 的工具, 你直接用现成的 express 或者 koa 就可以快速转换.

我花了半小时写了一个超级简单的 MCP 服务器: GitHub

这里面实现了两个 MCP 服务

  1. mcp: games
    • tool: game_tool
    • 获取最新 Release 的游戏 Metacritic 评分, 可恶的 Metacritic 没有公开 API
    • 获取特定游戏的 Metacritic 评分
    • 获取 EPIC 喜加一
  2. mcp: news
    • tool: news_tool
    • 获取各平台最新热榜和新闻

关于具体用法接入后直接问 AI 即可:

具体效果

真的很简单很方便, 快速描述一下流程:

  1. 和 AI 说明我希望抓取澎湃新闻
  2. AI 检查 MCP 有哪些注册的工具 (毫无疑问需要抓取新闻, 所以需要 news_tool )
  3. AI 调用 news_tool , 实际上访问到了 https://mcp.szhshp.org/news/mcp 这个 MCP Server
  4. MCP Server 的实现也很简单, 单纯调用了三方服务, 返回了结果
  5. AI 得到结果返回

MCP 的优势

  1. 支持多个 MCP 调用, 可以将复杂的需求一次性通过长 Prompt 提交给机器人, AI 会自动拆解并调用对应的工具完成任务.
  2. 易于扩展, 只需实现符合 MCP 规范的 HTTP 服务即可, 无需修改主机器人代码, 便可快速集成新功能.
  3. 兼容性强, MCP Server 可以用 Python 可以用 TypeScript 写, 只要你写出来符合规范就可以.
  4. 降低耦合度, 主机器人与各类工具解耦, 便于维护和升级.
  5. 便于团队协作, 不同的开发者可以独立开发各自的 MCP 服务, 然后统一接入主机器人平台.

进一步实现 Robot 定时自动调用 MCP

搜索一个叫 AI Reminder 的插件 这里是 Github 连接, 但是你应该从 AstrBot 的插件市场搜索并安装

然后直接和机器人发命令即可;


# Check Reminder
/rmd ls # 列出当前群里面的 Reminder
/rmdg ls {群号} # 列出特定群里面的 Reminder
/rmdg ls 111111111 # 列出群 111111111 里面的 Reminder

# Add Reminder
# 在群 222222222 中添加一个每天 21:50 执行 `MCP Tool: get_news` 并且参数是 thepaper 澎湃新闻
/rmdg command 222222222 /get_news--thepaper 21:50 daily 
/rmdg command 333333333 /get_news--thepaper 11:00 daily
/rmdg command 111111111 /get_news--thepaper 10:00 daily

# 执行一次 `MCP Tool: game_tool` 并且参数是 freeGame_epic 
/rmdg command 222222222 /game_tool--freeGame_epic 22:09
/rmdg command 333333333 /game_tool--freeGame_epic 12:00 daily

很简单就实现每日定时发送:

总结

MCP 的注册让 QQ 机器人拥有无限种可能. 比如调用邮箱 MCP 实现自动发邮件, 调用钉钉 MCP 实现自动打卡, 调用 bilibili MCP 实现管理视频资源.

提升效率改善生活的就该多多推广.