5分钟搞定:用FastMCP和CherryStudio搭建B站视频搜索服务(附完整代码)
5分钟实战基于FastMCP与CherryStudio的B站视频搜索系统开发指南在AI技术快速落地的今天如何将前沿框架与实用场景结合成为开发者关注的焦点。本文将带你用FastMCP框架和CherryStudio平台快速构建一个可即时响应查询的B站视频搜索服务。不同于传统API开发这种组合方案能让你在极短时间内获得可直接集成到AI工作流的功能模块。1. 技术栈核心组件解析1.1 FastMCP框架的革新价值作为MCP协议的高效实现FastMCP通过三个设计哲学改变了工具开发范式装饰器即服务用Python装饰器声明工具功能自动生成协议兼容接口零配置通信内置stdio/HTTP/SSE多通道支持无需处理底层传输细节类型驱动开发函数签名自动转换为API Schema减少手动定义工作量# 典型工具函数定义示例 mcp.tool() def search_videos(query: str, limit: int 10) - list[dict]: 视频搜索工具 Args: query: 搜索关键词 limit: 返回结果数量 Returns: 包含视频信息的字典列表 return bilibili_search(query)[:limit]1.2 CherryStudio的协同优势这个AI集成平台为MCP服务提供了三大增强能力特性传统方案CherryStudio方案服务管理手动维护进程可视化启停监控调用方式代码级集成自然语言交互结果处理原始数据输出自动格式化呈现2. 五分钟快速部署实战2.1 环境准备与依赖安装使用uv工具创建隔离环境推荐但非必须# 创建并激活虚拟环境 uv venv bilibili_searcher source ./bilibili_searcher/bin/activate # Linux/Mac .\bilibili_searcher\Scripts\activate # Windows # 安装核心依赖 uv pip install fastmcp bilibili-api-python提示Windows系统若遇到执行策略限制需先运行Set-ExecutionPolicy RemoteSigned2.2 服务端核心代码实现创建bilibili_search_service.py文件包含以下关键部分from typing import List, Dict from bilibili_api import search, sync from mcp.server.fastmcp import FastMCP mcp FastMCP(B站视频搜索引擎, instructions提供哔哩哔哩平台视频搜索能力) mcp.tool(tags[video, search]) def search_bilibili( keyword: str, sort_type: str totalrank ) - List[Dict]: B站视频搜索工具 Args: keyword: 搜索关键词 sort_type: 排序方式(totalrank|click|pubdate|dm) Returns: 包含视频标题、作者、播放量的字典列表 result sync(search.search(keyword, ordersort_type)) return [{ title: item[title], author: item[author], play: item[play], url: fhttps://www.bilibili.com/video/{item[bvid]} } for item in result[result]] if __name__ __main__: mcp.run(transportstdio)2.3 服务测试与验证FastMCP提供开箱即用的开发模式fastmcp dev bilibili_search_service.py访问输出的本地地址如http://127.0.0.1:6274可进行工具列表查看参数动态调试原始响应预览3. CherryStudio集成配置3.1 服务端连接配置在CherryStudio界面完成以下设置进入设置 MCP服务器添加新服务器配置名称B站视频搜索类型标准输入输出命令uv参数--directory /path/to/venv run bilibili_search_service.py3.2 智能助手调用示例配置完成后在聊天界面尝试自然语言查询请查找最近一周播放量最高的3个Python教程视频用表格形式展示标题、作者和播放量系统将自动解析查询意图调用MCP工具获取数据结构化呈现结果4. 生产级优化建议4.1 性能增强方案异步处理改造为async/await模式提升并发能力mcp.tool() async def async_search(keyword: str): return await search.search(keyword)缓存机制添加Redis缓存高频查询from redis import Redis r Redis() mcp.tool() def cached_search(keyword: str): if r.exists(keyword): return r.get(keyword) data sync(search.search(keyword)) r.setex(keyword, 3600, data) # 缓存1小时 return data4.2 安全防护策略实现参数校验与速率限制from fastmcp import RateLimit mcp.tool(middlewares[RateLimit(per_minute30)]) def safe_search(keyword: str): if len(keyword) 50: raise ValueError(搜索关键词过长) return sync(search.search(keyword))实际部署中发现当查询QPS超过50时添加简单的JWT认证能有效防止滥用from fastmcp import JWTValidation mcp FastMCP(middlewares[JWTValidation(secret_keyyour_secret)])这种技术组合特别适合需要快速验证原型的场景上周帮助一个教育团队在3小时内搭建起了课程视频检索系统。对于更复杂的需求可以考虑扩展添加视频摘要生成、个性化推荐等增强功能模块。