yinxiang-mcp
非官方印象笔记MCP服务器,支持笔记本、原生超级笔记、原始ENML和资源附件操作。
README
yinxiang-mcp
非官方印象笔记(Yinxiang / Evernote China)MCP Server。通过 stdio 暴露笔记本、原生超级笔记、原始 ENML 和资源附件相关操作。
本项目不是印象笔记或 Evernote 官方项目,也不代表官方背书。
安装
npx -y @yanghechuan/yinxiang-mcp
建议锁定版本:
npx -y @yanghechuan/yinxiang-mcp@0.7.0
认证
当前版本使用 Direct Token 认证,暂未实现 OAuth。
需要配置两个环境变量:
YINXIANG_DEV_TOKEN:在 https://dev.yinxiang.com 申请的 Developer TokenYINXIANG_NOTESTORE_URL:NoteStore URL,例如https://app.yinxiang.com/shard/sXX/notestore
MCP 配置
{
"mcpServers": {
"yinxiang": {
"command": "npx",
"args": ["-y", "@yanghechuan/yinxiang-mcp@0.7.0"],
"env": {
"YINXIANG_DEV_TOKEN": "<your-token>",
"YINXIANG_NOTESTORE_URL": "https://app.yinxiang.com/shard/sXX/notestore"
}
}
}
}
工具列表
笔记本与笔记本组
list-notebooks:列出笔记本,包含guid、stack、默认笔记本标记和更新元数据。get-notebook:按guid读取单个笔记本元数据。create-notebook:创建笔记本,可选加入笔记本组。update-notebook:重命名笔记本或更新所属笔记本组,需要confirm=true。delete-notebook:删除笔记本,需要confirm=true且confirmGuid === guid;非空笔记本还需要force=true。list-stacks:从笔记本的stack字段反推笔记本组列表。create-stack:通过把一个已有笔记本放入 stack 来创建笔记本组,需要confirm=true。rename-stack:批量更新组内笔记本的stack字段来重命名笔记本组,需要confirm=true。delete-stack:清空组内笔记本的stack字段来删除笔记本组,不删除笔记本,需要confirm=true。move-notebook-to-stack:将单个笔记本移入指定笔记本组,需要confirm=true。remove-notebook-from-stack:将单个笔记本移出当前笔记本组,需要confirm=true。
笔记
find-notes:按 Evernote 搜索语法和/或笔记本 GUID 搜索笔记元数据。get-note-raw:读取原始 ENML、笔记本 GUID、标签和属性,不经过 Markdown 转换。create-super-note:使用原生块模型创建印象笔记超级笔记。update-super-note:使用原生块模型覆盖笔记正文,需要confirm=true。append-super-note-blocks:保留已有 ENML,在末尾追加原生块,需要confirm=true。replace-super-note-block:按blockId替换一个原生块,需要confirm=true。delete-super-note-block:按blockId删除一个原生块,需要confirm=true。replace-note-enml:用完整 ENML 或en-note内部 body 直接覆盖正文,需要confirm=true。clone-note:原样克隆 ENML 正文和笔记元数据,不经过 Markdown 转换。attach-file:将本地文件追加为 Evernote Resource,并在正文追加匹配的<en-media>,需要confirm=true。export-note-resource:按resourceGuid或 MD5hash导出单个资源。delete-note-resource:按resourceGuid或 MD5hash删除单个资源和匹配的<en-media>,需要confirm=true。move-note:移动笔记到另一个笔记本,不修改标题和正文,需要confirm=true。clear-note-content:清空笔记正文,保留标题和所在笔记本,需要confirm=true。delete-note:将笔记移入废纸篓,需要confirm=true。expunge-note:永久删除笔记,需要confirm=true且confirmGuid === guid。
原生块模型
create-super-note、update-super-note 和 append-super-note-blocks 接收 blocks 数组。字符串会被当作普通段落;对象示例:
[
{
"type": "heading",
"level": 2,
"id": "stable-block-id",
"runs": [
{ "text": "蓝色加粗标题", "bold": true, "color": "#1677ff" }
]
},
{
"type": "paragraph",
"runs": [
{ "text": "普通文字 " },
{ "text": "红色加粗", "bold": true, "color": "#d4380d" },
{ "text": " 大号文字", "fontSize": 22 },
{ "text": " 链接", "href": "https://example.com?a=1&b=2" }
]
},
{
"type": "todo",
"checked": false,
"runs": [{ "text": "待办事项" }]
},
{
"type": "table",
"id": "table-1",
"header": true,
"rows": [
[{ "text": "名称" }, { "text": "状态" }],
[{ "text": "任务 A" }, { "text": "完成", "color": "#52c41a" }]
]
}
]
支持的块类型:heading、paragraph、blockquote、code、divider、todo、bulleted_list、numbered_list、table。
支持的文字样式:bold、italic、underline、strike、code、color、backgroundColor、fontSize、href。
颜色必须使用 #RRGGBB;fontSize 必须是 8 到 72 的整数。正文默认字号为 16px。标题默认使用客户端标题层级,只有显式传入 fontSize 时才覆盖标题内部文字。
表格块必须提供稳定 id,便于后续用 replace-super-note-block 或 delete-super-note-block 编辑/删除整张表。
文件资源
attach-file 会读取本地文件、计算 MD5、创建 Evernote Resource,并在正文中追加匹配的 <en-media>。MIME 会根据扩展名自动推断,也可以显式传入。
{
"guid": "note-guid",
"filePath": "/tmp/demo.png",
"fileName": "demo.png",
"confirm": true
}
资源可以通过 resourceGuid 或 MD5 hash 导出和删除。
本地开发
npm install
cp .env.example .env
npm test
npm run verify
npm start
npm run verify 是只读验证:它会通过列出笔记本来验证 token 和 NoteStore URL 是否可用。
发布
npm test
npm pack --dry-run
npm publish --access public
发布前必须确认 npm tarball 中不包含 .env、真实 token、日志或私人笔记内容。
限制
- 使用
evernote@2.0.5,底层是较旧的 EDAM API。 - Evernote/印象笔记的笔记本组不是独立实体,本项目通过笔记本的
stack字段实现组管理。 - 原生超级笔记工具不经过 Markdown 中转,适合保留加粗、颜色、链接、待办、表格等富文本样式。
- Markdown 兼容函数仍保留在内部,但不作为 MCP 工具暴露,避免误用导致富文本样式丢失。
- 资源工具支持本地图片、音频和通用附件,可按单资源导出和删除。
- 可折叠标题依赖印象笔记超级笔记的
other-props.blockId、yinxiang.superNote与yinxiang.noteLayout标记;旧客户端可能只显示普通标题样式。
安全
不要提交真实 Developer Token、绑定私人账号的 NoteStore URL、请求日志或导出的笔记内容。更多说明见 SECURITY.md。
开源协议
本项目使用 MIT License。完整协议内容见 LICENSE。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。