使用说明
JMAP MCP-JMAP服务器集成
一个模型上下文协议(MCP)服务器,用于通过Jmap协议与Jmap服务器交互,支持电子邮件、日历和联系人。
演示
以下是与Claude Desktop配合使用的JMAP MCP服务器:
屏幕截图显示MCP工具成功地从JMAP服务器检索和搜索电子邮件数据,展示了Claude Desktop和您的电子邮件系统之间的无缝集成。
配置
环境变量(推荐)
可以使用通过MCP客户端配置传递的环境变量来配置服务器:
JMAP_BASE_URL-Jmap邮件服务器的基本URL(例如。,https://mail.example.com)JMAP_USERNAME-用于身份验证的用户名/电子邮件JMAP_PASSWORD-身份验证密码JMAP_ACCOUNT_ID-(可选)要使用的特定帐户ID
这些应该在MCP客户端的配置文件中配置(见下面的示例)。
配置文件(回退)
如果未设置环境变量,服务器将在以下位置查找配置文件:
- 指定的路径
JMAP_CONFIG_PATH环境变量 jmap-config.json在当前工作目录中.jmap-config.json在用户的主目录中
示例配置文件:
{
"baseUrl": "https://mail.example.com",
"username": "user@example.com",
"password": "your-password",
"accountId": "account123"
}
特性
- 如果提供了配置,则启动时自动连接
- 支持全面的JMAP操作:
电子邮件操作
- 获取邮箱
- 获取电子邮件
- 搜索电子邮件
- 发送电子邮件
- 标记为已读/未读
- 删除电子邮件
日历操作
- 获取日历
- 获取日历事件
- 创建日历事件
- 更新日历事件
- 删除日历事件
联系运营
- 获取地址簿
- 获取联系人
- 搜索联系人
- 创建联系人
- 更新联系人
- 删除联系人
用法
服务器将在启动时自动尝试使用配置的凭据进行连接。如果成功,所有电子邮件操作将立即可用。
如果没有提供配置或连接失败,您可以使用 connect_jmap 手动建立连接的工具。
安装
先决条件
- Node.js 18+
- npm或纱线
- 在启用Jmap的情况下访问Jmap邮件服务器
设置
- 克隆存储库:
git clone https://github.com/vaderyang/jmap_mcp_server.git
cd jmap_mcp_server
- 安装依赖项:
npm install
- 构建项目:
npm run build
用法
运行MCP服务器
服务器通过stdio通信,旨在与MCP兼容的客户端一起使用:
npm start
对于自动重新加载的开发:
npm run dev
使用Claude Desktop进行配置
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在 macOS 上:
{
"mcpServers": {
"jmap-mail": {
"command": "node",
"args": ["/path/to/jmap-mcp-server/dist/index.js"],
"env": {
"JMAP_BASE_URL": "https://mail.example.com",
"JMAP_USERNAME": "user@example.com",
"JMAP_PASSWORD": "your-password",
"JMAP_ACCOUNT_ID": "account123"
}
}
}
}
替代方案:使用配置文件
如果您不希望将凭据放入Claude Desktop配置中,可以省略 env 部分并使用配置文件:
{
"mcpServers": {
"jmap-mail": {
"command": "node",
"args": ["/path/to/jmap-mcp-server/dist/index.js"],
"env": {
"JMAP_CONFIG_PATH": "/path/to/your/jmap-config.json"
}
}
}
}
使用光标进行配置
对于Cursor,将MCP服务器配置添加到您的工作区或全局设置中:
{
"@mcp": {
"jmap-mail": {
"command": "node",
"args": ["/path/to/jmap-mcp-server/dist/index.js"],
"env": {
"JMAP_BASE_URL": "https://mail.example.com",
"JMAP_USERNAME": "user@example.com",
"JMAP_PASSWORD": "your-password",
"JMAP_ACCOUNT_ID": "account123"
}
}
}
}
MCP配置参考
有关详细的设置说明,请参阅官方文档:
克劳德桌面
- 官方文件: 克劳德桌面MCP指南
- 配置位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
光标
- 官方文件: 光标MCP设置
- 配置:通过Cursor的设置或配置文件添加MCP服务器
MCP资源概述
- MCP官方网站: 模型上下文协议.io
- MCP GitHub存储库: github/modelcontextprotocol
- MCP服务器示例: github/modelcontextprotocol/servers
可用工具
connect_jmap
连接到Jmap邮件服务器。其他工具调用不需要此功能。
参数:
baseUrl:Jmap服务器的基本URL(例如。,https://mail.example.com)username:您的电子邮件/用户名password:您的密码
get_mailboxes
从服务器检索所有邮箱。
get_emails
从特定邮箱或所有电子邮件中获取电子邮件。
参数:
mailboxId(可选):特定邮箱IDlimit(可选):最大电子邮件数(默认值:50)
get_email_by_id
通过ID检索特定电子邮件。
参数:
emailId:电子邮件ID
search_emails
通过文本查询搜索电子邮件。
参数:
query:搜索查询字符串limit(可选):最大结果(默认值:20)
send_email
发送一封新电子邮件。
参数:
to:收件人电子邮件地址数组subject:电子邮件主题textBody(可选):纯文本正文htmlBody(可选):HTML正文cc(可选):CC收件人bcc(可选):BCC收件人inReplyTo(可选):用于回复的消息IDreferences(可选):参考消息ID
mark_as_read
将电子邮件标记为已读。
参数:
emailIds:电子邮件ID数组
mark_as_unread
将电子邮件标记为未读。
参数:
emailIds:电子邮件ID数组
delete_emails
删除电子邮件(移至垃圾箱)。
参数:
emailIds:电子邮件ID数组
日历工具
get_calendars
从服务器检索所有日历。
get_calendar_events
从特定日历或所有日历中获取日历事件。
参数:
calendarId(可选):特定日历IDlimit(可选):最大事件数(默认值:50)
create_calendar_event
创建新的日历事件。
参数:
calendarId:用于在中创建事件的日历IDtitle:事件标题description(可选):事件描述start:ISO 8601格式的事件开始时间(例如“2024-01-15T10:00:00Z”)end:ISO 8601格式的事件结束时间(例如“2024-01-15T11:00:00Z”)location(可选):活动地点participants(可选):参与者电子邮件地址数组showWithoutTime(可选):这是否是全天事件(默认值:false)
update_calendar_event
更新现有日历事件。
参数:
eventId:要更新的事件IDtitle(可选):新事件标题description(可选):新事件描述start(可选):ISO 8601格式的新事件开始时间end(可选):ISO 8601格式的新事件结束时间location(可选):新活动地点participants(可选):新的参与者电子邮件地址数组
delete_calendar_event
删除日历事件。
参数:
eventId:要删除的事件ID
联系工具
get_address_books
从服务器检索所有通讯簿。
get_contacts
从特定地址簿或所有地址簿中获取联系人。
参数:
addressBookId(可选):特定地址簿IDlimit(可选):最大联系人数量(默认值:50)
search_contacts
通过文本查询搜索联系人。
参数:
query:搜索查询以查找联系人limit(可选):最大结果数(默认值:20)
create_contact
创建新联系人。
参数:
addressBookId:用于在中创建联系人的通讯簿IDfirstName(可选):联系人名字lastName(可选):联系人姓氏emails(可选):电子邮件对象数组type和valuephones(可选):电话对象数组type和valueaddresses(可选):地址对象数组type,street,city,state,country,postalCodecompany(可选):联系公司/组织jobTitle(可选):联系职位notes(可选):联系方式
update_contact
更新现有联系人。
参数:
contactId:要更新的联系人IDfirstName(可选):新联系人名字lastName(可选):新联系人姓氏emails(可选):新的电子邮件对象数组type和valuephones(可选):新的电话对象阵列type和valueaddresses(可选):新的地址对象数组type,street,city,state,country,postalCodecompany(可选):新联系人公司/组织jobTitle(可选):新联系人职位notes(可选):新联系人备注
delete_contact
删除联系人。
参数:
contactId:要删除的联系人ID
示例用法
使用此MCP服务器连接到Claude后,您可以使用以下自然语言命令:
电子邮件:
- “显示我最近的电子邮件”
- “搜索有关“项目更新”的电子邮件”
- “发送电子邮件至alice@example.com关于会议”
- “将所有未读电子邮件标记为已读”
日历:
- “显示我的日历”
- “获取我本周的日历事件”
- “创建明天下午2点的会议”
- “更新项目审查会议地点”
联络:
- “显示我的所有联系人”
- “搜索名为John的联系人”
- “为Jane Smith创建新联系人”
- “更新Alice的电话号码”
JMAP协议
此服务器实现了用于现代电子邮件、日历和联系人操作的JMAP协议:
- JMAP核心 (
urn:ietf:params:jmap:core) - JMAP邮件 (
urn:ietf:params:jmap:mail) - JMAP日历 (
urn:ietf:params:jmap:calendars) - JMAP联系人 (
urn:ietf:params:jmap:contacts)
Jmap配置
确保您的Jmap Mail服务器在配置中启用了Jmap:
[server.listener.jmap]
bind = ["0.0.0.0:8080"]
protocol = "jmap"
tls.implicit = false
[jmap]
default-language = "en"
安全考虑
- 凭证:服务器需要用户名/密码身份验证
- 传输层安全:始终使用HTTPS端点进行生产
- 网络:确保JMAP端口访问的防火墙规则正确
- 认证:考虑使用特定于应用程序的密码(如果可用)
发展
项目结构
jmap-mcp-server/
├── src/
│ └── index.ts # Main server implementation
├── dist/ # Compile