如何用FastAPI构建连接Obsidian与AI的MCP服务器
Vatsal Saglani是一位经验丰富的软件工程师,近期发表了一系列博客文章,介绍他如何构建一套基于MCP(Model Context Protocol)架构的系统,旨在实现AI模型与个人知识库的有效整合。该系统包括LLM主机、MCP客户端和多种小巧专注的MCP服务器,其中最主要的两个服务器是文件管理服务器和命令运行服务器。 核心事件的发展 关键人物与参与组织 Vatsal Saglani:软件工程师,专注于后端开发和机器学习应用。 Anthropic:开发Claude Desktop的公司,支持MCP协议。 时间线与背景 Saglani在上一篇文章中介绍了nano-MCP架构的总体设计,包括LLM主机、MCP客户端和MCP服务器。此次,他进一步深入探讨了两个主要服务器的实现细节,并最终成功构建了MCP客户端集线器,实现了一系列关键技术目标。 事件的起因、发展过程与结果 文件管理服务器: create_file:允许用户上传文件到指定路径,使用FastAPI路由和Pydantic模型处理上传请求。 read_file:通过文件路径读取文件内容,结合FastAPI的异步处理提高速度。 update_file:接收用户上传的新内容,覆盖原文件。 show_folder_tree:展示当前目录的文件树结构,帮助用户管理和导航文件系统。 命令运行服务器: run_command:允许用户执行系统命令,通过FastAPI安全措施和Pydantic参数验证防止安全风险。 为了确保文件管理和命令执行的协同工作,Saglani使用Docker卷技术实现了文件共享。用户在文件管理服务器中创建或修改的文件能够自动同步到命令运行服务器中,从而实现无缝的开发和测试流程。 开发 MCP 客户端集线器 技术栈:FastAPI、Pydantic、httpx 设计原则: 简洁透明:系统设计应尽量简单,方便用户使用。 分离发现和执行:服务发现和实际执行功能分离,便于管理和维护。 可扩展性:未来可以轻松添加新功能和服务器。 实现步骤: 创建 FastAPI 应用:初始化应用程序并设置路由。 定义数据模型:使用 Pydantic 定义请求和响应模型。 服务发现:实现发现机制,自动找到可用的服务器和服务。 执行命令:与文件管理服务器和命令运行服务器通信,执行相应命令。 测试和调试:通过单元测试和集成测试确保功能正确可靠。 为什么不使用官方MCP文件系统服务器? Saglani出于隐私考虑和个人控制需求,自行开发了MCP文件系统服务器。他希望AI模型只具备读取权限,而不是修改权限。此外,他对构建技术的好奇心也是推动项目发展的动力之一。 我的知识库 作者使用Obsidian来组织个人知识,每个新概念都记录为笔记,并按字母顺序存储在单个目录下。他还创建了一个“首页”文件,用于按类别链接笔记条目。MCP服务器“knowledge-vault”将这些笔记注册为资源,并定义了多个工具供Claude Desktop访问。 结果与展望 验证工具调用:成功返回了所有笔记的列表和特定笔记的内容。 识别不完整笔记:模型识别了零字节和最小内容的笔记,并生成了一张笔记完成状态的表格。 生成简答问题:基于已有笔记,模型生成了描述性的简答问题,帮助作者巩固记忆。 尽管目前通过Claude Desktop进行了测试,Saglani计划将整个系统完全本地化和独立化,实现一个私有的、离线的AI助手,全面掌控从模型到知识库的整个流程。 行业内评论 业内专家普遍认为,Saglani的逐步构建方法有助于项目管理和质量控制。通过先构建关键基础设施,即MCP服务器,再逐步添加AI组件,提高了系统的稳定性和扩展性。FastAPI的选择也为项目性能和异步处理提供了有力支持。多名开发者表示,Saglani的项目设计思路清晰,实现简洁,非常适合初学者学习。 公司或机构简介 Anthropic是一家领先的AI技术公司,专注于开发先进的AI代理平台 Claud Desktop。该平台支持MCP协议,能够与多种AI模型进行交互,提供灵活的个人知识管理和辅助功能。公司的使命是让AI成为人类工作和生活中的有力辅助工具。
