Markdown笔记管理服务器

Mastra MCP Server是一个本地Markdown笔记管理服务器,提供自定义工具和提示,支持与AI代理交互的响应式前端。

  • by mastra-ai
  • TypeScript
  • 本地部署
  • 9 星标
  • 更新于
在 GitHub 查看 mastra-ai/mcp-server-workshop

使用说明

Mastra MCP服务器研讨会

此存储库包含Mastra MCP服务器研讨会的完整代码。它被构造为一个单仓库,MCP服务器和前端应用程序被分成不同的包。它演示了如何构建一个本地MCP服务器来管理markdown笔记,创建自定义工具和提示,以及构建一个带有AI代理的反应式Next.js前端来与笔记交互。

入门指南

  1. 安装依赖项:

    pnpm install
    
  2. 运行MCP服务器:

    pnpm dev:mcp
    

    此命令启动Mastra MCP服务器进程。

  3. 运行Mastra代理:

    pnpm dev:agent
    

    此命令使用代理启动Mastra服务器。 注意:这些不一起运行的原因是,在现实世界中,MCP服务器已经发布或托管,代理在启动后需要访问MCP服务器。将MCP服务器分开是一种很好的做法。

  4. 运行前端:

    pnpm dev:web
    

    此命令启动前端应用程序。

  5. 打开浏览器 http://localhost:3000.

项目结构

这个项目是 pnpm monorepo。主要套餐包括:

  • packages/mcp-server:管理和公开笔记的MCP服务器。
  • packages/webNext.js前端应用程序,其中包括Mastra代理。
  • packages/notes:包含本地降价注释的目录。

MCP服务器(packages/mcp-server)

  • src/server.ts:MCP服务器的入口点,定义 MCPServer 实例,包括资源和提示处理程序。
  • src/resources.ts:实现资源处理程序(listResources, getResourceContent)用于阅读来自 packages/notes/ 目录。
  • src/tools.ts:实现 writeNote 工具,允许代理创建和编辑注释。
  • src/prompts.ts:实现提示处理程序(listPrompts, getPromptMessages)为斜线命令菜单供电。

Web前端(packages/web)

  • src/app/:Next.js应用程序。
    • notes/page.tsx:主UI,包括注释列表、注释显示和代理面板。
  • src/app/api/:前端的API终结点。
    • notes/:API列出并读取文件系统中的注释。
    • copilotkit/:处理代理的后端请求。
    • prompts/:API,以获取斜杠命令菜单的可用提示的列表和内容。
    • events/:服务器发送事件(SSE)端点,用于将实时更新推送到前端。
  • src/components/:可重用的React组件。
    • agent.tsx:包含 CopilotChat 组件及其配置。
    • CustomChatInput.tsx:实现斜线命令菜单的聊天自定义输入组件。
    • PromptMenu.tsx:斜线命令提示列表的UI。
    • note-display.tsx:用于呈现选定笔记内容的组件。
    • note-list.tsx:显示可用笔记列表的组件。
  • src/lib/:实用功能和挂钩。
    • events.ts:包含 eventEmitter 用于MCP侦听器事件处理。
    • utils.ts:通用实用功能。

主要特点

  • 本地笔记管理:从本地目录公开markdown文件的MCP服务器(packages/notes/)作为资源。
  • 自定义代理工具:代理人配备了 writeNote 直接在文件系统上创建和修改注释的工具。
  • 动态提示:聊天界面中的斜线命令菜单,允许用户触发预定义的提示,如总结笔记或集思广益。
  • 反应式UI前端采用Next.js和React构建,为浏览和编辑笔记提供无缝的用户体验。
  • 实时MCP更新:当代理修改MCP资源时,UI会自动更新。MCP服务器向客户端发送消息。前端设置MCP侦听器处理程序,将事件中继到前端。

如何使用它

  1. 使用以下命令启动应用程序 pnpm dev.
  2. 打开浏览器 http://localhost:3000.
  3. 与右侧面板上的代理进行交互。
    • 创建注释:试着问客服:“创建一个名为‘我的第一个便条’的便条,内容是‘你好,世界!’”。您应该看到注释出现在左侧的列表中。
    • 编辑注释:单击新备注,然后询问客服:“在此备注中添加一个名为“下一步”的部分”。内容将实时更新。
    • 使用提示:在代理聊天中,键入 / 打开提示菜单。选择一个类似的提示 brainstorm_ideas。然后,如果需要,代理将使用当前注释作为上下文来执行提示。