iCome MCP 统一入口
iCome(新奥定制钉钉)日历、待办、通讯录三大 MCP 服务,共 44 个工具。
工具总览
📅 日历 (calendar) — 17 个工具
| 分类 | 工具 | 说明 |
|------|------|------|
| 查询 | list_calendars | 我的日历列表 |
| 查询 | list_calendar_events | 查指定时段日程(最多100条) |
| 查询 | get_calendar_detail | 查单个日程详情 |
| 查询 | get_calendar_participants | 查日程参与人及响应状态 |
| 查询 | query_busy_status | 查用户/会议室忙闲时段 |
| 查询 | query_available_meeting_room | 查空闲会议室 |
| 查询 | list_meeting_room_groups | 会议室分组列表 |
| 查询 | list_suggested_event_times | 根据参与人忙闲推荐时间 |
| 创建 | create_calendar_event | 创建日程(含参与人/会议室/循环) |
| 修改 | update_calendar_event | 修改日程信息 |
| 删除 | delete_calendar_event | 删除日程 |
| 参与人 | add_calendar_participant | 添加参与人 |
| 参与人 | remove_calendar_participant | 移除参与人 |
| 响应 | respond | 设置响应(接受/拒绝/暂定) |
| 会议室 | add_meeting_room | 预约会议室 |
| 会议室 | delete_meeting_room | 取消会议室 |
| 附件 | add_attachments | 添加附件(需钉盘fileId) |
✅ 待办 (todo) — 17 个工具
| 分类 | 工具 | 说明 |
|------|------|------|
| 查询 | get_user_todos_in_current_org | 我的待办列表(分页) |
| 查询 | get_todo_detail | 查待办详情(推荐用这个) |
| 查询 | query_todo_detail | ⚠️已测返回空,用 get_todo_detail |
| 查询 | list_todo_comment | 待办评论列表 |
| 创建 | create_personal_todo | 创建个人待办 |
| 创建 | create_personal_sub_todo | 创建子待办 |
| 修改 | update_todo_task | 修改待办(标题/优先级/截止/完成) |
| 修改 | update_todo_done_status | 改完成状态 |
| 删除 | delete_todo | 删除待办 |
| 评论 | add_todo_comment | 添加评论 |
| 评论 | delete_todo_comment | 删除评论 |
| 执行人 | add_task_executors | 添加执行人 |
| 执行人 | remove_task_executors | 移除执行人 |
| 参与人 | add_task_participants | 添加参与人 |
| 参与人 | remove_task_participants | 移除参与人 |
| 提醒 | add_todo_reminder | 添加提醒 |
| 提醒 | reset_todo_reminder | 重置提醒规则 |
👥 通讯录 (contact) — 10 个工具
| 分类 | 工具 | 说明 |
|------|------|------|
| 查人 | search_user_by_key_word | 搜组织成员(返回userId) |
| 查人 | search_contact_by_key_word | 搜好友同事(返回详情含职位) |
| 查人 | search_user_by_mobile | 手机号反查(受隐私策略限制) |
| 查人 | get_user_info_by_user_ids | 批量查用户详情 |
| 查人 | get_current_user_profile | 我的信息 |
| 查部门 | search_dept_by_keyword | 搜部门 |
| 查部门 | get_dept_info_by_dept_id | 部门详情(含人数) |
| 查部门 | get_sub_depts_by_dept_id | 子部门列表 |
| 查部门 | get_dept_members_by_deptId | 部门成员列表 |
| 其他 | list_my_followings | 我的特别关注 |
⚠️ 铁律
调用任何工具前,先 schema 确认参数名和类型。 原因:不同工具名不一致(startDateTime vs startTime),类型也不一致(string vs number,SSO userId vs 钉钉UID)。
配置文件
icome-mcp-config.json(工作区根目录),不与 skill 打包:
{
"ICOME_CALENDAR_URL": {"url": "https://mcp-gw.dingtalk.com/server/..."},
"ICOME_TODO_URL": {"url": "https://mcp-gw.dingtalk.com/server/..."},
"ICOME_CONTACT_URL": {"url": "https://mcp-gw.dingtalk.com/server/..."}
}
命令速查
# 查看某服务所有工具的完整参数(推荐开局先跑)
python3 /workspace/skills/icome-mcp/scripts/call_mcp.py describe --service <calendar|todo|contact>
# 查看单个工具的参数 schema
python3 /workspace/skills/icome-mcp/scripts/call_mcp.py schema --service <service> <工具名>
# 调用工具
python3 /workspace/skills/icome-mcp/scripts/call_mcp.py call --service <service> <工具名> --params '<JSON>'
参数规范
--params外层单引号,内层 JSON 双引号:--params '{"key":"value"}'- 时间格式因工具而异(用 schema 确认):
create_calendar_event→ ISO-8601"2026-05-16T10:00:00+08:00"list_calendar_events→ 毫秒时间戳(number)1778774400000query_available_meeting_room→ 毫秒时间戳(string)"1778947200000"query_busy_status→ 毫秒时间戳(number)1778774400000
典型示例
# 📅 日历
python3 /workspace/skills/icome-mcp/scripts/call_mcp.py call --service calendar list_calendar_events \
--params '{"startTime":1778774400000,"endTime":1779033600000}'
python3 /workspace/skills/icome-mcp/scripts/call_mcp.py call --service calendar create_calendar_event \
--params '{"summary":"项目评审","startDateTime":"2026-05-17T10:00:00+08:00","endDateTime":"2026-05-17T11:00:00+08:00","attendees":["10123979","10130014"],"location":"B座1F103"}'
# ✅ 待办
python3 /workspace/skills/icome-mcp/scripts/call_mcp.py call --service todo get_user_todos_in_current_org \
--params '{"pageSize":"10","pageNum":"1"}'
python3 /workspace/skills/icome-mcp/scripts/call_mcp.py call --service todo create_personal_todo \
--params '{"PersonalTodoCreateVO":{"subject":"完成周报","executorIds":["10123979"],"priority":30,"dueTime":1779000000000}}'
# 👥 通讯录
python3 /workspace/skills/icome-mcp/scripts/call_mcp.py call --service contact search_user_by_key_word \
--params '{"keyWord":"振凯"}'
python3 /workspace/skills/icome-mcp/scripts/call_mcp.py call --service contact get_user_info_by_user_ids \
--params '{"user_id_list":["10123979","10130014"]}'
典型工作流
场景1:约会议
search_user_by_key_word搜参与人 → 拿到 userIdquery_busy_status查忙闲- 可选:
list_suggested_event_times推荐时间 - 可选:
query_available_meeting_room找会议室 create_calendar_event创建日程
场景2:分配任务
search_user_by_key_word搜执行人create_personal_todo创建待办,指定执行人- 可选:
add_todo_reminder加提醒
场景3:查某人信息
search_contact_by_key_word搜人名 → 直接返回姓名+职位+userId- 如需更多:
get_user_info_by_user_ids批量查详情
返回值判断
成功和失败都通过 stdout 输出 JSON,判断 "success" 字段:
"success": true→ 成功,数据在"result"中"success": false→ 失败,"errorCode"+"errorMsg"说明原因
首次配置
配置文件缺失时脚本会自动提示。引导用户去 钉钉 AI 能力中心 → MCP 广场 → 分别搜索"钉钉日历""钉钉待办""钉钉通讯录"→ 复制 StreamableHttp 地址。
⚠️ 已知坑位(2026-05-16 验证)
1. add_todo_reminder baseTime 只接受 dueTime/customTime
schema 未标注枚举值。"dueTime" ✅ / "customTime" ✅ / "DUE_DATE" ❌ → 500 错误
2. 待办 userId 入参出参不一致
- 入参用 SSO userId(如
"10123979")✅ - 出参返回钉钉内部 UID(如
"3753072880") - 操作执行人/参与人时继续用 SSO userId,不要手动转换
- 但做 equals 匹配时需要知道两套 ID 不对等
3. query_available_meeting_room 时间格式
毫秒时间戳 string("1778947200000"),不是 ISO-8601
4. respond 组织者不能改自己
组织者对日程使用 respond 会报 300000 错误,这是行为正确的限制
微信扫一扫