使用说明
动态列表MCP服务器
A. 模型上下文协议 服务器 Dynalist.io,无限文档大纲视图。
Claude和其他人工智能助手可以以编程方式读取、写入、搜索和组织Dynalist文档。
特征
- 19工具 用于阅读、写作、搜索和组织文档。
- 基于路径的访问控制 具有拒绝/读取/允许策略、全局匹配和ID锚定。
- 可配置的默认值 用于读取深度、折叠项目、注释、已检查项目、尺寸警告等。
- 结构化响应 使用JSON(
structuredContent)关于成功和错误的明文,以实现广泛的客户端兼容性。 - 本土感觉输出 通过MCP指令,指导代理渲染大纲,在写入前显示差异预览,并优雅地处理大型文档。
- 并发编辑检测 因此,对过时数据的写入在发生之前或之后立即被捕获。
- 内置缓存 以最小化重复读取、访问控制检查和配置重新加载过程中的API调用。
- 经过彻底测试 使用内存中的API mock,在每个写路径窗口进行竞赛模拟,并使用Claude Haiku进行弱模型指令验证。
有关Dynalist API文档,请参阅 apidocs.dynalist.io.
入门
1.安装
git clone https://github.com/JDNdeveloper/dynalist-mcp.git
cd dynalist-mcp
bun install
需要 包子 v1.0+。
2.获取您的API代币
访问 dynalist.io/开发者 并生成API令牌。
3.连接
配置中的所有路径都必须是绝对路径。MCP客户端不扩展 ~ 或 $HOME。参见 docs/client-setup.md 有关故障排除和环境隔离的详细信息。
克劳德代码
添加 .mcp.json 在项目根目录中(或 ~/.claude.json 全球):
{
"mcpServers": {
"dynalist": {
"command": "/absolute/path/to/bun",
"args": ["/absolute/path/to/dynalist-mcp/src/index.ts"],
"env": {
"DYNALIST_API_TOKEN": "your-api-token"
}
}
}
}
法典
添加 ~/.codex/config.toml:
[mcp_servers.dynalist]
command = "/absolute/path/to/bun"
args = ["/absolute/path/to/dynalist-mcp/src/index.ts"]
env = { DYNALIST_API_TOKEN = "your-api-token" }
开源代码
添加 ~/.config/opencode/opencode.json:
{
"mcp": {
"dynalist": {
"type": "local",
"command": ["/absolute/path/to/bun", "/absolute/path/to/dynalist-mcp/src/index.ts"],
"env": {
"DYNALIST_API_TOKEN": "your-api-token"
}
}
}
}
克劳德桌面
选项A: .mcpb 捆
下载最新 .mcpb 文件来自 发布页面首选 设置>扩展>高级设置>安装扩展 并选择下载的文件。在安装过程中,系统将提示您输入API令牌。
选项B:手动配置
将与Claude Code配置片段相同的JSON添加到您的Claude Desktop配置文件中:
-
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json -
视窗:
%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json -
Windows(旧版):
%APPDATA%\Claude\claude_desktop_config.json
提示
代理技能
您可以在Dynalist中创建“技能”:包含代理如何完成任务的分步说明的项目。然后,你可以要求你的经纪人,例如,“按照我的测功技能进行每周复习”。
要使用此功能,请在代理说明文件中添加一个指向您的技能项目或文档的动态列表URL(例如。 CLAUDE.md, AGENTS.md,或克劳德桌面系统提示):
Dynalist skills: https://dynalist.io/d/...
示例:
- “遵循我的测功技能进行每周回顾”
- “运用我的测功技能来计划冲刺”
快速复制项目链接
当将您的代理定向到特定的Dynalist项目时(例如“处理此项目:https://...“),您需要项目的URL。获取它的最快方法是将键盘快捷键绑定到 复制当前项目链接 在 设置>键盘映射。有了这个绑定,一个按键就可以将深度链接复制到剪贴板,准备直接粘贴到您的代理工具中。
文档
- 工具参考:所有工具的参数表、响应形状和示例。
- 配置:配置文件引用、环境变量、字段表和日志记录。
- 访问控制:基于路径的ACL规则、glob语法、特殊性优先级、ID锚定和示例。
- 客户端设置:故障排除、环境隔离和其他MCP客户端详细信息。
- API覆盖范围:动态列表API端点和MCP工具之间的映射。
- 用户体验代理:MCP指令如何塑造代理行为,以实现渲染、确认、大小管理和可组合性。
- 并发:版本保护、位置解析、删除顺序、缓存失效和竞争模拟测试。
- 演出:文档缓存、文件树缓存、配置重新加载、速率限制重试、更改批处理和节点映射。
- 测试:虚拟服务器、竞赛模拟、代理驱动的实时测试和弱模型指令验证。
发展
bun run start # Run the MCP server
bun run typecheck # Type-check without emitting (run after making changes)
bun test # Run the full test suite
bun test --watch # Run tests in watch mode
bun run inspector # Debug with MCP Inspector
更改后需要进行类型检查 在提交之前捕获类型错误。
MCP检验员测试
警告: MCP Inspector和MCP客户端(如Claude Code)连接到实时动态列表帐户,可以修改和删除数据。确保你的
DYNALIST_API_TOKEN指向a 测试账户不是你的真命天子。
DYNALIST_API_TOKEN=your_token bun run inspector
项目结构
src/
├── index.ts # Entry point, server identity, instructions
├── config.ts # Zod-validated config with mtime-based reloading
├── access-control.ts # Path-based ACL (deny/read/allow policies)
├── document-store.ts # LRU-cached document reader with version checks
├── types.ts # Shared types (OutputNode, NodeSummary, etc.)
├── dynalist-client.ts # Wrapper for the Dynalist API
├── sync-token.ts # Opaque sync token generation (sha256-based)
├── version-guard.ts # Pre/post-write version checks for race detection
├── tools/
│ ├── index.ts # Aggregator - registers all tools
│ ├── descriptions.ts # Shared parameter descriptions and guidance constants
│ ├── node-metadata.ts # Heading/color string enums and API translation maps
│ ├── meta.ts # Meta tools (get_instructions)
│ ├── read.ts # Read tools
│ ├── write.ts # Write tools
│ ├── structure.ts # Structure tools (delete, move, reorder)
│ └── files.ts # File management tools
├── utils/
│ └── dynalist-helpers.ts # Shared tool helpers
└── tests/
└── tools/ # Tool integration tests against dummy server
捆绑和释放
该项目可以打包为 .mcpb 用于在MCP客户端中单击安装的捆绑包。捆绑的服务器以Node.js为目标,因此最终用户不需要安装Bun。
bun run bundle # Typecheck, test, build dist/index.js, generate manifest, pack .mcpb
bun run release # Bundle + git tag + GitHub release with .mcpb asset (maintainer only)
bun run release 需要维护者推送访问,在 main 分支,以及版本碰撞 package.json (包和生成的数据都是单一的真实来源 manifest.json).
安全模型
运输
此服务器使用MCP stdio传输:它作为MCP客户端的本地子进程(例如Claude Desktop、Claude Code)运行,并通过stdin/stdout进行通信。没有网络侦听器,没有HTTP服务器,没有端口绑定。无法从计算机外部或同一计算机上的其他进程访问服务器。
LLM访问风险
虽然服务器本身仅在本地,但与之交互的LLM对您的Dynalist数据具有完全的读/写访问权限(如果配置了访问控制策略)。LLM可以读取敏感内容,修改或删除项目,或通过将其包含在响应中来泄露数据。使用门禁系统限制暴露。
要强制全局只读模式(允许所有读取,阻止所有写入):
{
"access": {
"default": "read"
}
}
看 docs/access-controll.md 以获得更精细的选项。
访问控制限制
访问控制系统是最好的努力,不应被视为硬安全边界。已知限制:
- 内容物泄漏:允许文档中的内容可能包含指向被拒绝文档的链接或引用,从而暴露其ID或标题。ACL系统不会清除内容。
- 缓存过期:文件树缓存(默认5分钟TTL)意味着外部重命名/移动可能会导致规则不正确匹配,直到缓存刷新。
- 收件箱旁路:the
send_to_inbox该工具无法检查每个文档的访问权限,因为在发送之前收件箱文件ID未知。当全局访问策略不可写时,它会被阻止,但更窄的拒绝规则无法阻止收件箱写入。
需要严格隔离的用户应使用单独的Dynalist帐户,而不是仅依赖ACL。
特异性优先
规则优先级基于路径特异性, 不 政策严重性。与AWS IAM(明确拒绝总是获胜)不同 allow 覆盖不太具体的 deny.
例如,如果 /Private/** 是 deny 但是 /Private/Shopping List 是 allow,购物清单是可访问的,因为确切的匹配更具体。拒绝规则不是绝对的上限。它们可以被下面更具体的规则所覆盖。
审核你的规则,这样就不会有更具体的允许/读取规则穿透更广泛的拒绝规则。
致谢
最初分叉自 cristip73/测力计mcp.