提示管理服务器

一个TypeScript MCP服务器,连接Claude Desktop到本地prompts/文件夹,实现提示文件的自动列表、读取和保存功能。

  • by kaidez
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 kaidez/mcp-prompt-server

使用说明

mcp提示服务器

一个TypeScript MCP(模型上下文协议)服务器,将Claude Desktop连接到本地 prompts/ 文件夹。Claude可以直接列出、读取和保存提示文件,无需复制粘贴。

作为一个展示集成工程模式的组合项目构建:事件驱动架构、ETL管道、运行时验证和安全意识设计。

该项目是一个三个项目系列的一部分,旨在加深对Claude API和更广泛的人类生态系统的理解,包括MCP服务器、VS代码扩展和Claude API本身如何相互关联并协同工作。


这是什么

这是一个MCP服务器——Claude Desktop启动并通过stdin/stdout(stdio上的JSON-RPC)与之通信的本地进程。它公开了Claude在对话中随时可以调用的三个工具:

工具 它做什么
list_prompts 列出所有 .txt 和 .md 文件在 prompts/ 文件夹
read_prompt 读取并返回特定文件的内容
save_prompt 将文本另存为新的时间戳 .txt 文件

为什么它存在

两个配套项目-- claude-prompt-reader 和 save-selected-text --通过VS Code中的文件事件触发Claude。这个项目采取了下一步:公开与Claude Desktop可以自主调用的MCP工具相同的提示工作流,而无需任何手动触发。

这三个项目共同构成了如何在堆栈的不同层构建AI相邻工具的完整图景:

项目 触发器 模式
claude-prompt-reader 文件保存事件 事件驱动ETL
save-selected-text 右键选择 用户发起的ETL
mcp-prompt-server 克劳德自己的推理 自主工具使用

MCP架构的工作原理

MCP有两个方面:

克劳德桌面=客户端。 它在启动时连接到您的服务器,发现可用的工具,并根据对话决定何时调用它们。

此服务器=服务器。 它注册工具,等待stdio上的JSON-RPC请求,运行请求的逻辑,并返回结果。

You type in Claude Desktop
        ↓
Claude decides to call a tool
        ↓
Claude Desktop sends JSON-RPC request over stdio
        ↓
This server runs the tool and returns the result
        ↓
Claude uses the result to form its response

每个工具调用都是无状态的——服务器接收请求、执行工作并做出响应。没有会话状态,调用之间没有内存。


ETL模式

每个工具都遵循相同的提取→ 变换→ 企业数据管道中使用的负载模式:

list_prompts

  • 摘录:阅读 prompts/ 目录
  • 转换:过滤器 .txt 和 .md 仅限文件
  • 加载:以文本形式返回文件列表

read_prompt

  • 提取:从磁盘读取特定文件
  • 转换:清除文件名(目录遍历保护)
  • 加载:以文本形式返回文件内容

save_prompt

  • 提取:接收来自Claude的文本输入
  • 转换:验证内容,生成ISO 8601时间戳
  • 加载:将文件写入磁盘(成功写入模式)

安全设计

目录遍历保护 — read_prompt 使用以下命令从文件名中删除所有路径组件 path.basename() 在构建文件路径之前。恶意输入,如 ../../etc/passwd 被简化为 passwd,它将不存在于提示文件夹中。

写成功 — save_prompt 仅在所有验证通过后写入磁盘。在任何文件操作开始之前,空内容都会被拒绝。这反映了数据库写入中使用的事务完整性模式。

最小特权 --Claude Desktop需要明确的用户权限才能运行任何MCP服务器。每次新对话都需要用户重新启用切换。


技术栈

  • TypeScript --严格模式,ES模块
  • @modelcontextprotocol/sdk --MCP服务器实现
  • zod --运行时输入验证和TypeScript类型推断
  • fs / path --用于文件操作的Node.js标准库
  • 摩卡+西农 --使用存根进行独立文件系统测试的单元测试

入门指南

先决条件

  • Node.js 18+
  • 已安装Claude Desktop
  • Anthropic API密钥(用于Claude Desktop)

安装

git clone https://github.com/kaidez/mcp-prompt-server.git
cd mcp-prompt-server
npm install
npm run build

连接到克劳德桌面

添加 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-prompt-server": {
      "command": "node",
      "args": ["/Users/YOUR_USERNAME/repos/mcp-prompt-server/dist/index.js"]
    }
  }
}

重新启动克劳德桌面。在新对话中,单击 + → 连接器→ 启用 mcp-prompt-server.


用法

连接后,在Claude Desktop中自然说话:

List my prompt files
Read the contents of test.txt
Save this as a new prompt: What makes a great integration engineer?

Claude将自动调用相应的工具。


项目结构

mcp-prompt-server/
├── src/
│   ├── index.ts                  # MCP server — all three tools
│   └── test/
│       └── suite/
│           └── index.test.ts     # 9 unit tests (Mocha + Sinon)
├── prompts/                      # Prompt files live here
│   └── test.txt
├── dist/                         # Compiled output (git-ignored)
├── skills/
│   └── prompt-manager/
│       └── SKILL.md              # Agent Skills layer
├── package.json
└── tsconfig.json

测试

9个单元测试,涵盖快乐路径、悲伤路径和保安:

npm test
# 测试 覆盖率
1 服务器名称和版本 标识
2 list_prompts 返回文件 快乐路径
3 list_prompts 返回空消息 悲伤路径
4 list_prompts 过滤非.txt/.md文件 Guard
5 read_prompt 返回文件内容 快乐路径
6 read_prompt 处理丢失的文件 悲伤的路径
7 read_prompt 阻止目录遍历 安全
8 save_prompt 写入文件并返回名称 快乐路径
9 save_prompt 拒绝空内容 悲伤的路径

我接下来要添加什么

  • Python端口 --使用重建的相同服务器 mcp 开发包
  • 对话历史 --将克劳德的回复与提示文件一起保存
  • update_prompt 工具 --按名称编辑现有文件
  • delete_prompt 工具 --使用确认保护删除文件
  • 远程传输 --从stdio切换到Streamable HTTP以实现网络访问

配套项目

所有三个项目都是作为一个系列构建的,以更好地理解Claude API和Anthropic生态系统,特别是API、MCP协议和VS代码工具如何相互关联。

项目 直接使用Claude API 说明
claude-prompt-reader ✅ 是 VS代码扩展名--手表 prompts/ 文件夹,将文件发送到 api.anthropic.com/v1/messages 关于保存
save-selected-text ✅ 是 VS代码扩展名--将突出显示的文本保存到 prompts/ 并通过右键单击发送到Claude API
mcp-prompt-server (本项目) ❌ 否 MCP服务器--将提示文件公开为Claude Desktop通过stdio自主调用的工具

主要区别: 这两个VS Code扩展直接对以下对象进行HTTP调用 api.anthropic.com/v1/messages 使用API密钥。此MCP服务器不这样做-它通过stdio(JSON-RPC)与Claude Desktop通信,Claude Desktop在内部处理API层。理解这个边界——Claude API生活在哪里与MCP生活在哪里——是构建这个系列的核心经验之一。


为什么这种架构很重要

MCP将Claude从会话助手转变为可以与本地系统交互的自主代理。这里使用的stdio传输与语言服务器、编译器和构建工具中使用的IPC模式相同——经过实战考验的Unix基础设施被重新用于AI工具。

无状态、基于工具的设计直接映射到企业集成模式:每个工具都是一个离散的、可测试的单元,具有定义的输入、定义的输出,没有隐藏的副作用。这与您为REST端点、消息队列消费者或iPaaS(集成平台即服务)平台(如Workato或Boomi)中的工作流节点编写的合同相同。