Token导航 LogoToken导航TokenDH.com
MCP Elicitation Fs Example logo
AI代理未说明官方级别未说明来源级核验

MCP Elicitation Fs Example

MCP Server

实现模型上下文协议(MCP)的参考实现,支持服务器发起的参数引导交互式文件操作。

工具数

2

提示词数

0

GitHub Stars

0

资源数

0
JavaScriptClaude服务器开发Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

nitinkhanna-strata

提供方

nitinkhanna-strata

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

带有引出功能的MCP文件系统服务器

模型上下文协议(MCP)的参考实现,包含服务器主动参数提取功能

![MCP](https://modelcontextprotocol.io) ](https://nodejs.org) ![License](LICENSE)

快速入门特点/特性演示文档

______________________________________________________________________

概述

这个项目展示了 MCP参数提取/获取 - 一个强大的功能,允许MCP服务器与用户进行交互式请求,以获取缺失的信息,从而创建对话流程,而不是因错误而失败。

什么是MCP引出(或激发)?

不需要一开始就要求所有参数,启发式方法使服务器能够:

  • 🎯(瞄准目标) 逐个询问参数 以自然、引导性的方式进行
  • 验证输入 以及基于上下文的分支逻辑(例如,文件存在与不存在)
  • 🔘(圆圈内有加号,常用于表示选项或选择项) 提供交互式按钮 用于确认(拒绝/取消/接受)
  • 🔄 这个符号在中文里通常被翻译为“循环”或“旋转”。它表示一个动作或过程在不断地重复进行,就像一个不断转动的圆圈一样。 在工具和启发之间交替使用 为用户提供分步指导

关键特性

  • ✨(这个表情符号通常表示闪闪发光、闪耀或兴奋的情绪,直接翻译为中文可以是“✨”或保持原样,因为表情符号在中文中也有其直观的表达意义。) 服务器发起的请求/诱引 - 用途 server.elicitInput() 用于真正交互式流程的API
  • 📁 代表文件夹的符号,可翻译为“文件夹”。 文件操作 - 创建和删除文件,带有智能提示
  • 🎨 表示“美术”或“艺术创作”的意思。 用户友好的用户体验(UX) - 清晰的信息,有用的选择,确认对话框
  • 🧪 表示“试管”或“实验”,常用于描述化学实验或科学实验的场景。 可投入生产的(状态/版本) - 全面的错误处理和30秒超时设置
  • 🔍 看起来像是一个放大镜的符号,常用于表示搜索或查看细节。 可完全测试 - 使用MCP Inspector进行演示,包含单元测试

______________________________________________________________________

目录

______________________________________________________________________

快速入门

# 1. Clone and install
git clone 
cd mcp-elicitation-fs-example
npm install

# 2. Launch MCP Inspector for interactive testing
npm run inspector

# 3. In the Inspector UI:
#    - Go to Tools → create_file
#    - Call with empty params: {}
#    - Watch as elicitations appear in the Elicitations tab!

______________________________________________________________________

安装

先决条件

  • Node.js 16及以上版本 (使用 v24.9.0 版本测试)
  • npm(Node Package Manager,Node包管理器) 或者 纱线

步骤

# Install dependencies
npm install

# Make the server executable (optional)
chmod +x index.js

______________________________________________________________________

演示

启动MCP检查器

这个(或“它”) MCP 检测器(或 MCP 检查器) 这是一个基于浏览器的测试工具,它允许您与服务器进行交互,并实时查看请求的触发情况。

# Option 1: Use the demo script
./demo.sh

# Option 2: Run directly
npm run inspector

检查器将在您的浏览器中自动打开于 http://localhost:6274

尝试使用引出流程

  1. 导航至“工具” 在左侧边栏
  2. 选择 create_file
  3. 无参数调用: {}
  4. 见证奇迹的发生

- 引出请求出现在 “Elicitations tab”可以翻译为“引出/激发(内容)标签”或“引申内容标签”,具体翻译取决于上下文和使用场景。在这里,“Elicitations”可能指的是通过提问、提示或其他方式引出或激发的思考、讨论或内容,而“tab”则指的是用于组织或展示这些内容的标签或选项卡。因此,整个短语可以理解为用于组织或展示通过某种方式引出或激发的内容的标签或选项卡 - 提供文件名 - 控制返回到Tool,然后再次请求位置信息 - 继续按照引导流程操作,直到文件创建完成

📖 如需详细的分步说明,请参阅 DEMO_GUIDE.md 翻译为中文是:“演示指南.md”(其中,.md 通常表示该文件是 Markdown 格式的,但在此处作为文件名的一部分,直接翻译为“(Markdown 文件)”或省略不译,根据上下文判断)。所以,完整的翻译可以是“演示指南(Markdown 文件).md”或简化为“演示指南.md”

______________________________________________________________________

它是如何运作的

诱发流程架构

这个实现使用了 服务器发起的请求(或引出) 与;带着;用 server.elicitInput()

// Server requests missing parameter
const result = await server.elicitInput({
  message: "Please provide a filename",
  requestedSchema: {
    type: "object",
    properties: {
      filename: { type: "string", description: "Name of the file" }
    },
    required: ["filename"]
  }
}, { timeout: 30000 });

// Handle user response
if (result.action === "accept") {
  args.filename = result.content.filename;
  // Continue processing...
}

流程图

┌─────────────┐
│ Tool Called │
│   (Tools)   │
└──────┬──────┘
       │
       ▼
┌─────────────────┐
│  Elicit Param   │
│ (Elicitations)  │
└──────┬──────────┘
       │
       ▼
┌─────────────────┐
│ User Responds   │
└──────┬──────────┘
       │
       ▼
┌─────────────────┐
│ Process Input   │
│    (Tools)      │
└──────┬──────────┘
       │
       ▼
    Repeat or Complete

创建文件流

  1. 文件名 → 2. 位置 (文档/自定义) → 3。 自定义路径 (如自定义)→ 4。 文件检查 → 5a。 确认追加 (如果存在)→ 5b。 请求内容 6. 成功

5b。 请求内容 (如果是新的话)→ 6。 确认创建 → 7. 成功

删除文件流程

  1. 文件路径 → 2. 文件检查 → 3a。 确认删除 (如果存在)→ 4。 成功

3b。 确认未找到 (如缺失)→ 4。 无行动

______________________________________________________________________

使用示例

创建一个新文件

User: [Calls create_file with {}]

Elicitation: Please provide a filename
User: demo.txt

Elicitation: Choose location (documents/custom)
User: documents

Elicitation: File will be created. Confirm?
User: true

Tool Response: ✅ Successfully created: /Users/you/Documents/demo.txt

追加到现有文件

User: [Calls create_file with {}]

Elicitation: Please provide a filename
User: existing.txt

Elicitation: Choose location
User: documents

Elicitation: File exists. Append content?
User: true

Elicitation: Provide content to append
User: Additional text

Tool Response: ✅ Successfully appended to: /Users/you/Documents/existing.txt

删除文件

User: [Calls delete_file with {}]

Elicitation: Provide file path
User: ~/Documents/demo.txt

Elicitation: File exists. Confirm deletion?
User: true

Tool Response: ✅ Successfully deleted: /Users/you/Documents/demo.txt

______________________________________________________________________

工具参考

create_file

创建一个新文件或向现有文件追加内容,同时进行交互式参数收集。

引出的参数:

参数类型描述
filename字符串要创建的文件的名称
location枚举"documents" 或者 "custom"
custom_path字符串目录路径(仅当位置为“自定义”时)
confirm_append布尔值确认追加到现有文件
content字符串要写入/追加的内容
confirm_creation布尔值确认创建新文件

流量: 文件名 → 位置 → \[自定义路径\] → \[文件检查\] → \[追加确认或内容\] → \[创建确认\] → 成功

______________________________________________________________________

delete_file

在确认后删除文件,或如果文件不存在则予以确认。

引出的参数:

参数类型描述
file_path字符串文件路径(绝对或相对)
confirm_deletion布尔值确认删除(如果文件存在)
acknowledge_not_found布尔值确认缺失文件(如果文件不存在)

流量: 文件路径 → \[文件检查\] → \[删除确认或已知悉\] → 成功/已确认

______________________________________________________________________

配置

对于Claude Desktop

将此添加到您的Claude桌面配置中:

macOS:(直接翻译为中文即为“macOS”,这是苹果公司的操作系统名称,无需额外翻译) ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "filesystem-elicitation": {
      "command": "/path/to/node",
      "args": ["/path/to/mcp-elicitation-fs-example/index.js"]
    }
  }
}
注: 使用 Node.js v16+ 的完整路径。运行 which node 找到你的 Node.js 路径。

服务器功能

{
  capabilities: {
    tools: {},
    elicitation: {}  // ✅ Advertises elicitation support
  }
}

______________________________________________________________________

测试

使用MCP Inspector进行手动测试

npm run inspector

检查员提供:

  • 🔍(放大镜图标,通常表示搜索、查看细节或放大查看) 实时诱发可视化 在“引出(或刺激)选项卡”中
  • 🛠️ 译为中文是“扳手”或“工具”。这个表情符号通常用来表示修理、维修或使用工具的场景。 交互式工具测试 带有JSON输入
  • 📊(图表) 响应检查 带有完整元数据

自动化单元测试

npm test

测试覆盖率:

  • ✅ 逐个参数提取(或:逐一参数启发)
  • ✅ 参数顺序正确
  • ✅ 文件存在性分支逻辑
  • ✅ 确认流程(创建/追加/删除)
  • ✅ 错误处理和边缘情况

______________________________________________________________________

项目结构

.
├── index.js              # Main MCP server with elicitation
├── test.js               # Unit tests
├── demo.sh               # Quick demo launcher
├── package.json          # Dependencies and scripts
├── README.md             # This file
├── DEMO_GUIDE.md         # Detailed demo walkthrough
├── CLAUDE.md             # Developer guidance
└── test-inspector.md     # Inspector testing guide

______________________________________________________________________

重要注意事项

引出支持状态

客户状态备注
MCP 检查器✅ 完全支持“提取”选项卡显示所有请求
Claude Desktop(克劳德桌面版)⏳ 未实现功能请求已开放(截至2025年10月)
这台服务器✅ 准生产就绪完全实现了MCP引出规范

分店信息

  • main *(当前)*使用服务器发起的引出方法 server.elicitInput()

- 在检查器中显示请求提示 “Elicitations tab” 可以翻译为“引出(或激发)内容标签”或“引语/激发内容选项卡”,具体翻译取决于上下文和该标签在实际应用中的具体用途。如果是指在某个软件或系统中用于展示或管理引出内容的板块,那么“引出内容标签”或“引语内容选项卡”可能更为贴切 - 建议用于测试和演示引出流程

  • broken-elicitInput-flow初步实施尝试(仅供参考)

这个分支展示了服务器发起的请求获取模式,该模式在检查器的“请求获取”选项卡中显示请求。

______________________________________________________________________

做出贡献

欢迎贡献!这是一个用于学习和演示MCP(多准则决策/最小化冲突问题等,具体根据上下文确定)引出方法的参考实现。

贡献思路/建议

  • 🎨 额外的文件操作(读取、移动、复制)
  • 🔐 权限处理和验证
  • 📝 更全面的错误信息
  • 🌍 国际化(i18n)
  • 📚 额外的文档和示例

______________________________________________________________________

资源

  • 📖 一本书 MCP规范
  • 🔧(扳手或工具的象征,具体含义根据上下文而定,可译为“扳手”、“工具”等) MCP SDK 文档
  • 🔍 翻译为中文是:放大镜(表示查看细节或搜索) MCP 检查员
  • 💬(这个表情符号在中文中通常被理解为“说”或“对话”的意思,但直接翻译没有对应的中文文字,所以保持原样或根据上下文解释为“对话/说”的意思) MCP社区讨论

______________________________________________________________________

许可证

MIT 许可证 - 详见 许可证 文件中有详细信息

______________________________________________________________________

以❤️倾心打造,作为MCP(可能是指某种特定协议或方法,如“模型控制协议”等,具体需根据上下文确定)阐述的参考实现

报告错误请求功能

目录标签

目录标签

JavaScriptClaude服务器开发交互式协议本地部署文件管理参数引导MCP协议

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP