使用说明
Evernote MCP服务器
一个模型上下文协议(MCP)服务器,与Evernote无缝集成,使AI助手能够通过标准化的界面创建、阅读、更新和管理笔记和笔记本电脑。
特性
- 📝 创建笔记 -创建内容丰富的新笔记、标签和笔记本作业
- 🔍 搜索笔记 -使用强大的查询功能搜索您的笔记
- 📖 阅读笔记 -按ID检索特定笔记,有或没有内容
- ✏️ 更新备注 -修改现有注释,包括标题、内容和标记
- 📚 管理笔记本 -列出所有笔记本并创建新笔记本
- 🏷️ 标签支持 -用标签组织笔记,以便更好地分类
- 🔒 安全 -使用环境变量进行API密钥管理
- ✅ 经过全面测试 -通过全面的测试套件实现100%的测试覆盖率
先决条件
- Node.js 16.x或更高版本
- npm或yarn包管理器
- Evernote API密钥(从 Evernote开发者门户)
安装
- 克隆存储库:
git clone https://github.com/yourusername/evernote-mcp-server.git
cd evernote-mcp-server
- 安装依赖项:
yarn install
# or
npm install
- 设置环境变量:
export EVERNOTE_API_KEY="your-evernote-api-key"
- 构建TypeScript代码:
yarn build
用法
启动服务器
使用stdio传输运行服务器:
yarn start
准备就绪后,服务器将输出“Evernote MCP服务器在stdio上运行”。
使用Claude Desktop进行配置
要将此MCP服务器与Claude Desktop一起使用,请将以下内容添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"evernote": {
"command": "node",
"args": ["/path/to/evernote-mcp-server/dist/index.js"],
"env": {
"EVERNOTE_API_KEY": "your-evernote-api-key"
}
}
}
}
可用工具
1.create_note
在Evernote中创建新笔记。
参数:
title(必填):备注标题content(必填):备注内容(支持HTML)notebook(可选):应在其中创建笔记的笔记本GUIDtags(可选):标记名数组
例子:
{
"title": "Meeting Notes",
"content": "<p>Important points from today's meeting...</p>",
"notebook": "notebook-guid-123",
"tags": ["meetings", "important"]
}
2.搜索_注释
使用Evernote的搜索语法搜索笔记。
参数:
query(必填):搜索查询字符串notebook(可选):将搜索限制到特定笔记本limit(可选):最大结果数(默认值:10)
例子:
{
"query": "project proposal",
"notebook": "Work",
"limit": 20
}
3.get_note
通过ID检索特定笔记。
参数:
noteId(必需):注意GUIDincludeContent(可选):是否包含备注内容(默认:true)
例子:
{
"noteId": "note-guid-456",
"includeContent": true
}
4.update_note
更新现有注释。
参数:
noteId(必需):注意GUIDtitle(可选):新标题content(可选):新内容tags(可选):新标签(替换现有标签)
例子:
{
"noteId": "note-guid-456",
"title": "Updated Meeting Notes",
"tags": ["meetings", "completed"]
}
5.list_notebooks
列出用户帐户中的所有笔记本。
参数: 无
退货: 带有id、名称和创建日期的笔记本数组。
6.创建笔记本
创建新笔记本。
参数:
name(必填):笔记本名称
例子:
{
"name": "Project Ideas"
}
发展
项目结构
evernote-mcp-server/
├── src/
│ ├── index.ts # Main server implementation
│ ├── index.test.ts # Main test suite
│ └── index.apikey.test.ts # API key validation tests
├── dist/ # Compiled JavaScript output
├── package.json # Project dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── jest.config.js # Jest testing configuration
├── CLAUDE.md # Claude-specific documentation
└── README.md # This file
运行测试
# Run main test suite
yarn test
# Run API key validation tests
yarn test:apikey
# Run all tests
yarn test:all
# Run tests with coverage report
yarn test:coverage
# Run tests in watch mode
yarn test:watch
建筑
# Build TypeScript to JavaScript
yarn build
Evernote API集成
此服务器使用Evernote API与笔记和笔记本进行交互。内容使用ENML(Evernote标记语言)格式化,由服务器自动处理。
ENML内容
在创建或更新笔记时,服务器会自动以适当的ENML格式包装内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
<en-note>Your content here</en-note>
搜索语法
搜索功能支持Evernote的高级搜索语法:
intitle:keyword-在标题中搜索notebook:"Notebook Name"-在特定笔记本中搜索tag:tagname-按标签搜索created:20230101-按创建日期搜索- 将多个条件与空格组合(AND)或
any:前缀(OR)
错误处理
服务器实现了全面的错误处理:
- API密钥错误:未配置API键时返回清除错误
- 网络错误:用描述性消息包装网络错误
- 无效工具错误:返回未知工具名称的错误
- API错误:正确转发Evernote API错误消息
所有错误均遵循MCP错误格式,并带有相应的错误代码。
安全考虑
- 使用环境变量安全地存储Evernote API密钥
- 永远不要将API密钥提交到版本控制
- 使用
.env本地开发文件(记得添加到.gitignore) - 定期旋转API键
- 通过Evernote开发者门户监控API的使用情况
故障排除
常见问题
-
“Evernote API密钥未配置”
- 确保
EVERNOTE_API_KEY环境变量已设置 - 检查密钥是否有效且未过期
- 确保
-
“404 Not Found”错误
- 验证API端点URL是否正确
- 检查您是否使用了正确的沙盒/生产环境
-
“权限被拒绝”错误
- 确保您的API密钥具有必要的权限
- 查看Evernote开发者帐户的费率限制
-
连接超时
- 检查您的互联网连接
- 验证Evernote API服务状态
调试模式
要启用调试日志记录,请设置 DEBUG 环境变量:
DEBUG=* yarn start
贡献
欢迎投稿!请按照以下步骤操作:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
开发指南
- 为新功能编写测试
- 保持100%的测试覆盖率
- 遵循TypeScript的最佳实践
- 更新API变更文档
- 使用常规提交消息
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
致谢
- 模型上下文协议 对于MCP规范
- Evernote API 用于笔记管理功能
- 克劳德 用于AI辅助集成
支持
对于问题、疑问或贡献:
- 在GitHub上打开一个问题
- 在创建新问题之前检查现有问题
- 为错误报告提供详细信息
- 包括功能请求示例
