使用说明
4D文档查看器
用于浏览4D命令文档的VS代码扩展和MCP(模型上下文协议)服务器。
概述
该项目提供 双向 要访问4D命令文档:
- VS代码扩展:通过智能命令检测直接在VS Code中浏览文档
- MCP服务器:与Claude等AI助手一起用作模型上下文协议服务器
这两种模式共享相同的缓存系统,以提高性能。
特性
VS代码扩展功能
- 智能命令检测:自动检测来自以下来源的4D命令:
- 选中文本
- 光标位置的单词
- LSP/悬停信息
- 剥离命令编号(例如。,
:C123格式)获取命令名时
- 两种显示模式:
- 在浏览器中打开(快速外部参考)
- 在编辑器webview中打开(具有CSS样式的集成文档)
- 上下文菜单集成:右键单击命令可快速访问
- 自动缓存:更快的后续查找
MCP服务器功能
- 获取4D命令文档:检索任何4D命令的HTML文档
- 智能缓存:自动将文档缓存在特定于操作系统的缓存目录中
- 缓存管理:需要获取新文档时清除缓存
- 浏览器集成:直接在默认浏览器中打开文档URL
安装
作为VS代码扩展
- 构建扩展:
npm install
npm run build
- 本地安装:
- 按
F5在新的VS Code窗口中运行扩展(用于开发) - 或者打包并安装:
- 按
npm run package
code --install-extension mcp-4d-docs-0.1.0.vsix
作为MCP服务器
# Clone or navigate to the project
cd mcp-4d-docs
# Install dependencies
npm install
# Build the TypeScript code
npm run build
用法
使用VS代码扩展
- 打开4D代码文件(或任何文件)
- 选择4D命令名称或将光标放在其上
- 使用以下方法之一:
- 命令面板 (
Cmd+Shift+P):4D: Open Command Documentation in Browser4D: Open Command Documentation in Editor
- 右键单击上下文菜单:
- 选择命令文本,右键单击,选择选项
- 键盘快捷键:(可以在VS Code中配置)
- 命令面板 (
如果没有检测到命令,系统将提示您手动输入一个。
用作MCP服务器
添加到您的MCP客户端配置中(例如,Claude Desktop):
{
"mcpServers": {
"4d-docs": {
"command": "node",
"args": ["/absolute/path/to/mcp-4d-docs/build/index.js"]
}
}
}
对于VS代码,添加到 .vscode/mcp.json:
{
"mcpServers": {
"4d-docs": {
"command": "node",
"args": ["/absolute/path/to/mcp-4d-docs/build/index.js"]
}
}
}
可用的MCP工具
get_4d_command_docs
获取4D命令的文档。
参数:
command_name(string):4D命令的名称(例如,“活动快照”、“列表排列”)
退货:
- 从中提取的HTML文档内容
<article>标签内<main>章节
例子:
// Fetches from https://developer.4d.com/docs/commands/activity-snapshot
get_4d_command_docs("ACTIVITY SNAPSHOT")
clear4d_docs_cache
清除所有缓存的文档文件。
退货:
- 指示已清除文件数的消息
open4d_command_in_browser
在默认web浏览器中打开4D命令文档页面。
参数:
command_name(string):4D命令的名称(例如,“活动快照”、“列表排列”)
退货:
- 确认URL已打开的消息
例子:
// Opens https://developer.4d.com/docs/commands/activity-snapshot in your browser
open_4d_command_in_browser("ACTIVITY SNAPSHOT")
运作原理
-
命令检测 (VS代码扩展):
- 首先检查所选文本
- 回退到光标位置的单词
- 在可用时使用LSP悬停信息
- 如果需要,提示手动输入
-
URL译码:命令名称转换为小写,空格替换为连字符
- 示例:“活动快照”→ “活动快照”
-
文档获取:服务器从以下位置请求文档:
https://developer.4d.com/docs/commands/<encoded-command-name>
-
HTML提取:服务器解析HTML并提取
<article>节点内部<main>标签 -
链接重写:相对
/docs/链接转换为绝对URL -
缓存:结果缓存在操作系统缓存目录中:
- macOS:
~/Library/Caches/mcp-4d-docs/ - 视窗:
%LOCALAPPDATA%\mcp-4d-docs\ - Linux:
~/.cache/mcp-4d-docs/
- macOS:
-
缓存键:每个命令都使用其名称的MD5哈希作为文件名进行缓存
-
显示 (VS代码扩展):
- 浏览器模式:直接打开URL
- Webview模式:显示具有4D CSS样式和VS Code主题集成的缓存HTML
发展
项目结构
mcp-4d-docs/
├── src/
│ ├── index.ts # MCP server implementation
│ ├── extension.ts # VS Code extension entry point
│ ├── docService.ts # Shared documentation service
│ ├── commandDetector.ts # Command name detection logic
│ └── webviewProvider.ts # Webview panel management
├── build/ # Compiled JavaScript output
├── logo.png # Extension icon
├── package.json # Project metadata & VS Code extension config
├── tsconfig.json # TypeScript configuration
├── .vscodeignore # Files excluded from extension package
└── README.md
建筑
# Install dependencies
npm install
# Build TypeScript
npm run build
# Watch mode for development
npm run watch
# Package extension
npm run package
测试扩展
按 F5 在VS Code中启动加载了扩展的扩展开发主机。
测试MCP服务器
# Use MCP Inspector
npx @modelcontextprotocol/inspector node build/index.js
依赖项
@modelcontextprotocol/sdk-模型上下文协议SDKcheerio-HTML解析@types/vscode-VS代码API类型@vscode/vsce-VS代码扩展打包
配置
扩展设置
该扩展可以开箱即用,无需配置。它将:
- 打开4D文件时激活(
onLanguage:4d) - 可通过命令选项板用于任何文件类型
- 将文档缓存在系统缓存目录中
自定义密钥绑定
您可以在VS Code中添加自定义键盘快捷键:
{
"key": "cmd+k cmd+d",
"command": "4d-docs.openInWebview",
"when": "editorTextFocus"
},
{
"key": "cmd+k cmd+b",
"command": "4d-docs.openInBrowser",
"when": "editorTextFocus"
}
出版
个人使用
该扩展已准备好在本地使用。在构建和包装之后:
npm run package
code --install-extension mcp-4d-docs-0.1.0.vsix
用于分销
在发布到VS代码市场之前:
-
更新发布者名称 在
package.json:"publisher": "your-actual-publisher-id" -
添加存储库URL 在
package.json:"repository": { "type": "git", "url": "https://github.com/yourusername/mcp-4d-docs.git" } -
添加许可证文件 (例如,带有MIT许可证文本的LICENSE.txt)
-
发布到市场:
vsce publish或者创建VSIX以进行共享:
npm run package # Share the .vsix file
许可证
麻省理工学院
贡献
欢迎投稿!请随时提交问题或拉取请求。
- []如果远程CSS不存在(例如,如果它被重命名),请考虑在插件中嵌入一个。
- []支持4D语言高亮显示(Prism?)。
- []通过命令面板请求文档时,请按住一个键,以允许强制下载(即绕过缓存)。
