wecom_mcpis an MCP tool, and all operations are completed by calling this tool.
⚠️ Prerequisites: Before the first call to
wecom_mcp, you must follow thewecom-preflightskill to perform the prerequisite check to ensure the tool has been added to the allowlist.
Overview
wecom-meeting-query provides WeCom meeting query capabilities, including the following functions:
- Query meeting list - Query the list of meeting IDs by user and time range (limitation: the current day and 30 days before and after, maximum 100)
- Get meeting details - Query complete meeting information by meeting ID
Command invocation method
View the list of available commands: use the wecom_mcp tool to call wecom_mcp list meeting
Execute a specified command: use the wecom_mcp tool to call wecom_mcp call meeting <tool_name> '<json_params>'
Detailed command description
1. Query meeting list (list_user_meetings)
Query the list of meeting IDs for a specified user within a time range.
Execute command
Use the wecom_mcp tool to call wecom_mcp call meeting list_user_meetings '{"begin_datetime": "2026-03-01 00:00", "end_datetime": "2026-03-31 23:59", "limit": 100}'
Input parameter description
| Parameter | Type | Required | Description |
|---|---|---|---|
begin_datetime |
string | No | Query start time, format:YYYY-MM-DD HH:mm |
end_datetime |
string | No | Query end time, format:YYYY-MM-DD HH:mm |
cursor |
string | No | Pagination cursor, used to get the next page of data |
limit |
integer | No | Number of items returned per page, maximum 100 |
Limitation: The time range only supports the current day and 30 days before and after.
Return parameters
{
"errcode": 0,
"errmsg": "ok",
"next_cursor": "分页游标字符串, 为空表示无更多",
"meetingid_list": ["会议ID_1", "会议ID_2"]
}
| Field | Type | Description |
|---|---|---|
meetingid_list |
array | Meeting ID list |
next_cursor |
string | Next page cursor, empty means no more data |
2. Get meeting details (get_meeting_info)
Query the complete details of a meeting by meeting ID.
Execute command
Use the wecom_mcp tool to call wecom_mcp call meeting get_meeting_info '{"meetingid": "<会议id>"}'
Input parameter description
| Parameter | Type | Required | Description |
|---|---|---|---|
meetingid |
string | Yes | Meeting ID, obtained through list_user_meetings Get |
meeting_code |
string | No | Meeting number |
sub_meetingid |
string | No | Sub-meeting ID |
Return parameters
{
"errcode": 0,
"errmsg": "ok",
"creator_userid": "创建者userid",
"admin_userid": "会议管理userid (与 creator_userid 有且仅返回一个)",
"title": "会议标题",
"meeting_start_datetime": "YYYY-MM-DD HH:mm",
"meeting_duration": 会议时长秒数,
"description": "会议描述文本",
"location": "会议地点文本",
"main_department": 创建者主部门ID,
"status": 会议状态枚举值,
"meeting_type": 会议类型枚举值,
"attendees": {
"member": [
{
"userid": "内部成员userid",
"status": 与会状态枚举值,
"first_join_datetime": "YYYY-MM-DD HH:mm",
"last_quit_datetime": "YYYY-MM-DD HH:mm",
"total_join_count": 加入次数,
"cumulative_time": 累计在会时长秒数
}
],
"tmp_external_user": [
{
"tmp_external_userid": "外部临时用户ID",
"status": 与会状态枚举值,
"first_join_datetime": "YYYY-MM-DD HH:mm",
"last_quit_datetime": "YYYY-MM-DD HH:mm",
"total_join_count": 加入次数,
"cumulative_time": 累计在会时长秒数
}
]
},
"settings": {
"remind_scope": 提醒范围枚举值,
"need_password": 是否需要密码布尔值,
"password": "会议密码",
"enable_waiting_room": 是否启用等候室布尔值,
"allow_enter_before_host": 是否允许提前入会布尔值,
"enable_enter_mute": 入会静音枚举值,
"allow_unmute_self": 是否允许自我解除静音布尔值,
"allow_external_user": 是否允许外部用户布尔值,
"enable_screen_watermark": 是否开启水印布尔值,
"watermark_type": 水印类型枚举值,
"auto_record_type": "录制类型枚举字符串",
"attendee_join_auto_record": 参会者加入自动录制布尔值,
"enable_host_pause_auto_record": 主持人可暂停录制布尔值,
"enable_doc_upload_permission": 允许上传文档布尔值,
"enable_enroll": 是否开启报名布尔值,
"enable_host_key": 是否启用主持人密钥布尔值,
"host_key": "主持人密钥字符串",
"hosts": {"userid": ["主持人userid列表"]},
"current_hosts": {"userid": ["当前主持人userid列表"]},
"co_hosts": {"userid": ["联席主持人userid列表"]},
"ring_users": {"userid": ["响铃用户userid列表"]}
},
"meeting_code": "会议号码字符串",
"meeting_link": "会议链接URL",
"has_vote": 是否有投票布尔值,
"has_more_sub_meeting": 是否有更多子会议枚举值,
"remain_sub_meetings": 剩余子会议场数,
"current_sub_meetingid": "当前子会议ID",
"guests": [
{
"area": "国际区号",
"phone_number": "手机号字符串",
"guest_name": "嘉宾姓名"
}
],
"reminders": {
"is_repeat": 是否周期性枚举值,
"repeat_type": 重复类型枚举值,
"repeat_until_type": 结束类型枚举值,
"repeat_until_count": 限定次数,
"repeat_until_datetime": "YYYY-MM-DD HH:mm",
"repeat_interval": 重复间隔数值,
"is_custom_repeat": 是否自定义重复枚举值,
"repeat_day_of_week": [星期几数组],
"repeat_day_of_month": [日期数组],
"remind_before": [提醒秒数数组]
},
"sub_meetings": [
{
"sub_meetingid": "子会议ID",
"status": 子会议状态枚举值,
"start_datetime": "YYYY-MM-DD HH:mm",
"end_datetime": "YYYY-MM-DD HH:mm",
"title": "子会议标题",
"repeat_id": "周期性会议分段ID"
}
],
"sub_repeat_list": [
{
"repeat_id": "周期性会议分段ID",
"repeat_type": 重复类型枚举值,
"repeat_until_type": 结束类型枚举值,
"repeat_until_count": 限定次数,
"repeat_until_datetime": "YYYY-MM-DD HH:mm",
"repeat_interval": 重复间隔数值,
"is_custom_repeat": 是否自定义重复枚举值,
"repeat_day_of_week": [星期几数组],
"repeat_day_of_month": [日期数组]
}
]
}
Key return fields:
| Field | Type | Description |
|---|---|---|
creator_userid |
string | Creator userid, only one of this and admin_userid is returned |
admin_userid |
string | Meeting admin userid, only one of this and creator_userid is returned |
title |
string | Meeting title |
meeting_start_datetime |
string | Meeting start time |
meeting_duration |
integer | Meeting duration (seconds) |
main_department |
integer | Main department to which the creator belongs |
status |
integer | Meeting status (1: Not started, 2: In progress, 3: Ended, 4: Canceled, 5: Expired) |
meeting_type |
integer | Meeting type (0: One-time meeting, 1: Recurring meeting, 2: WeChat-exclusive meeting, 3: Rooms screen casting meeting, 5: Personal meeting number meeting, 6: Webinar) |
meeting_code |
string | Meeting number |
meeting_link |
string | Meeting link |
attendees.member |
array | Internal participant list |
attendees.member[].status |
integer | Attendance status (1: Attended, 2: Not attended) |
attendees.tmp_external_user |
array | External participant (temporary ID) |
attendees.tmp_external_user[].status |
integer | Attendance status (1: Attended, 2: Not attended) |
guests |
array | External guest list, each item contains area, phone_number, guest_name |
current_sub_meetingid |
string | Current sub-meeting ID |
settings.ring_users |
object | Ringing user list |
settings.need_password |
boolean | Whether a password is required (read-only field) |
settings.enable_doc_upload_permission |
boolean | Whether members are allowed to upload documents |
settings.hosts |
object | Host list |
settings.current_hosts |
object | Current host list |
settings.co_hosts |
object | Co-host list |
reminders |
object | Recurring configuration |
has_vote |
boolean | Whether there is a poll (only the meeting creator and host have permission to query) |
has_more_sub_meeting |
integer | Whether there are more sub-meeting exceptions (0: No more, 1: More) |
remain_sub_meetings |
integer | Remaining number of sub-meeting sessions |
sub_meetings |
array | Sub-meeting list |
sub_meetings[].status |
integer | Sub-meeting status (0: Default/Exists, 1: Deleted) |
sub_meetings[].repeat_id |
string | Recurring meeting segment ID, used to associate the segment to which the sub-meeting belongs |
sub_repeat_list |
array | Recurring meeting segment information. After modifying one session of a recurring meeting, different segments may be generated, and each segment has a different recurrence rule |
Typical workflows
Workflow 1: Query meeting list
Example: The user says "Help me check what meetings there are this week"
Steps:
- Determine the time range: Calculate the start and end time of this week based on the current date.
- Query the meeting ID list:
Use the wecom_mcp tool to call wecom_mcp call meeting list_user_meetings '{"begin_datetime": "2026-03-16 00:00", "end_datetime": "2026-03-22 23:59", "limit": 100}'
- Query meeting details one by one (for each returned meetingid):
Use the wecom_mcp tool to call wecom_mcp call meeting get_meeting_info '{"meetingid": "<会议id1>"}'
Use the wecom_mcp tool to call wecom_mcp call meeting get_meeting_info '{"meetingid": "<会议id2>"}'
- Summarize and display:
📋 本周会议列表 (共 3 场):
1. 📅 技术方案评审
🕐 2026-03-17 10:00 - 11:00
👥 张三, 李四, 王五
2. 📅 产品需求沟通
🕐 2026-03-18 14:00 - 15:00
👥 赵六, 钱七
3. 📅 周五周会
🕐 2026-03-21 09:00 - 10:00
👥 全组成员
Pagination handling: If
next_cursoris not empty, use thecursorparameter to continue fetching the next page.
Workflow 2: Get meeting details
Example: The user says "Help me check the details of the technical solution review meeting"
Steps:
- Locate the meeting: First find the meetingid of the target meeting through meeting list query (match by keyword).
- Query details:
Use the wecom_mcp tool to call wecom_mcp call meeting get_meeting_info '{"meetingid": "<target_meetingid>"}'
- Display the result:
#Meeting number: <meeting number>
📅 <会议标题>
🕐 时间: <开始时间>, 时长 <时长>
📍 地点: <会议地点>
📝 描述: <会议描述>
👤 创建者: <创建者姓名>
👥 参与者: <参与者姓名列表>
🔗 会议链接: <会议链接>
Workflow 3: Find meetings by keyword
Example: The user says "When is the technical review meeting?"
Query strategy:
- Determine the query range: By default, query 30 days before and after the current day (interface limit range).
- Fetch the meeting list:
Use the wecom_mcp tool to call wecom_mcp call meeting list_user_meetings '{"begin_datetime": "2026-02-15 00:00", "end_datetime": "2026-04-16 23:59", "limit": 100}'
- Query details one by one and match title keywords.
- Stop querying after a match is found, and display the result:
#Meeting number: <meeting number>
✅ 找到会议: "<会议标题>"
📅 时间: <开始时间>, 时长 <时长>
📍 地点: <会议地点>
👥 参与者: <参与者姓名列表>
🔗 会议链接: <会议链接>
- Handling when not found: Inform the user that no matching meeting was found within 30 days before and after, and ask them to confirm the meeting name.
Notes
- Time format: uniformly use the
YYYY-MM-DD HH:mmformat - Meeting list time range limit: only supports querying meetings within the current day and 30 days before and after
- Querying details requires two steps: first use
list_user_meetingsto get the meeting ID list, then useget_meeting_infoto get details one by one