此仓库包含了Mastra MCP Server研讨会的完成代码。它被设计为一个单仓库,其中MCP服务器和前端应用程序被分离到不同的包中。它展示了如何构建一个本地MCP服务器来管理markdown笔记,创建自定义工具和提示,并构建一个带有AI代理的响应式Next.js前端以与笔记进行交互。
安装依赖项:
pnpm install
运行MCP服务器:
pnpm dev:mcp
此命令启动Mastra MCP服务器进程。
运行Mastra代理:
pnpm dev:agent
此命令启动带有代理的Mastra服务器。 注意:这些命令不一起运行的原因是,在实际情况下,MCP服务器已经发布或托管,代理需要在MCP服务器启动后访问它。将MCP服务器分开是一个好习惯。
运行前端:
pnpm dev:web
此命令启动前端应用程序。
在浏览器中打开http://localhost:3000。
此项目是一个pnpm单仓库。主要包包括:
packages/mcp-server:管理并暴露笔记的MCP服务器。packages/web:包含Mastra代理的Next.js前端应用。packages/notes:包含你的本地markdown笔记的目录。packages/mcp-server)src/server.ts:MCP服务器的入口点,定义了MCPServer实例,包括资源和提示处理器。src/resources.ts:实现了从packages/notes/目录读取笔记的资源处理器(listResources,getResourceContent)。src/tools.ts:实现了writeNote工具,允许代理创建和编辑笔记。src/prompts.ts:实现了驱动斜杠命令菜单的提示处理器(listPrompts,getPromptMessages)。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:包含用于处理MCP监听器事件的eventEmitter。utils.ts:通用实用函数。packages/notes/)中的markdown文件作为资源暴露出来。writeNote工具,可以直接在文件系统上创建和修改笔记。pnpm dev启动应用程序。http://localhost:3000。/以打开提示菜单。选择一个提示,如brainstorm_ideas。代理将执行该提示,如果需要的话,使用当前笔记作为上下文。