createInnerAppLABSCO SUMMARY
The company directory, calendar and to-dos on one connection.
It is published in the open-dingtalk GitHub organisation and split into capability groups, so an assistant that only needs contacts and calendar loads those two rather than the whole workplace API.
What it is
An MCP server for DingTalk from the open-dingtalk GitHub organisation, run with npx dingtalk-mcp. Capability groups are switched on individually through ACTIVE_PROFILES, and each group maps to the DingTalk API permissions your app has to hold.
What you get
- Contacts searched and members read, and the department list with its members
- Messages and DING alerts sent through a robot
- Calendar events read and written, and to-dos read and written
- Check-in records read, and work notices sent
- Company culture honors, work reports, and the service window
- Teambition project and task read and write
- Each group loaded separately through ACTIVE_PROFILES, or all of them with ALL
Requirements
A DingTalk developer account and an app, which give you DINGTALK_Client_ID and DINGTALK_Client_Secret. ACTIVE_PROFILES selects which groups load — contacts and robot messaging are on by default. Robot messaging also needs the robot's own code or access token, work notices need the app's agent id, and each group requires its own DingTalk API permissions on the app.
Setup effort
One command plus credentials — npx -y dingtalk-mcp@latest, then supply credentials
USE CASES
Finding a colleague and where they sit
Search the contact list and read the department list with its members.
Sending an alert people will actually see
A robot posts the message or the DING.
Keeping the calendar in the conversation
Read and write calendar events, and manage to-dos alongside them.
Keeping an assistant's tool list small
Load only the groups you need through ACTIVE_PROFILES instead of the whole API.
Working project tasks
Read and write Teambition projects and tasks.
98 tools
Listed in project code.
updateInnerApplistAllApplistAllInnerAppslistUserVilebleAppgetMicroAppScopesetMicroAppScopepublishInnerAppVersionrollbackInnerAppVersionlistInnerAppVersionpageInnerAppHistoryVersioncreateEventupdateEventdeleteEventgetEventaddAttendeeremoveAttendeegetAttendeesgetCalendarViewgetDepartmentCheckinRecordsgetUserCheckinRecordscurrentDateTimesearchUsergetUserDetailByUserIdgetUserIdByMobilegetUserIdByUnionIdgetDepartmentUsersByDepIdgetDepartmentDetailsearchDepartmentlistSubDepartmentslistSubDepartmentIdsgetDepartmentParentsgetUserDepartmentParentssendDINGMessageByRobotrecallDINGMessagemcp_dingtalk-honor_grantHonormcp_dingtalk-honor_queryOrgHonorsmcp_dingtalk-honor_queryUserHonorsmcp_dingtalk-honor_createOrgHonormcp_dingtalk-honor_recallHonornotableSupportedSearchFiltersnotableSupportedFieldInfonotableRecordValuesFormatqueryNotablesgetNotableSheetgetNotableAllSheetsupdateNotableSheetNamecreateNotableSheetdeleteNotableSheetlistNotableRecordsgetNotableRecorddeleteNotableRecordsinsertNotableRecordsupdateNotableRecordsgetNotableAllFieldscreateNotableFielddeleteNotableFieldupdateNotableFieldsendNoticegetSendResultgetSendProgressrecallNoticecreateReportsaveReportDraftgetReportListgetReportTemplateListgetReportTemplateDetailsendMessageToGroupByRobotrecallGroupMessageByRobotbatchSendMessageToUsersByRobotbatchRecallToUsersMessageByRobotsendMessageToGroupByCustomRobotsendServiceWindowMessagebatchSendServiceWindowMessagegetServiceWindowFollowerInfolistServiceWindowFollowersInfogetUserFollowStatuslistServiceWindowsqueryTasksdeleteTaskcreateTaskupdateTaskupdateExecutorsTaskStatuscreateProjectqueryProjectsByProjectNamequeryProjectStatusesByProjectIdqueryProjectMembersByProjectIdaddProjectMembersremoveProjectMemberslistProjectTaskslistUserProjectTasksqueryProjectTaskDetailcreateProjectTaskdeleteProjectTaskupdateProjectTaskNoteupdateProjectTaskContentupdateProjectTaskExecutorsupdateProjectTaskInvolveMembersBEFORE YOU INSTALL
What to know first
Tools you get
98 tools registered in the project's code. With ACTIVE_PROFILES unset, contacts and robot messaging load (13 tools); setting it loads only the groups you list, and ALL loads all 98.
Requires
- npx on PATH
- DINGTALK_Client_ID in your environment
- DINGTALK_Client_Secret in your environment
Optional
- ROBOT_ACCESS_TOKEN in your environment
- ROBOT_CODE in your environment
- DINGTALK_AGENT_ID in your environment
INSTALLATION
Connect your client
Add the block to your client, or run the command directly.
Server setup
Configuration file
{
"mcpServers": {
"dingtalk-mcp": {
"command": "npx",
"args": [
"-y",
"dingtalk-mcp@latest"
],
"env": {
"DINGTALK_Client_ID": "<YOUR_DINGTALK_CLIENT_ID>",
"DINGTALK_Client_Secret": "<YOUR_DINGTALK_CLIENT_SECRET>",
"ACTIVE_PROFILES": "dingtalk-contacts,dingtalk-calendar"
}
}
}
}<YOUR_DINGTALK_CLIENT_ID> and <YOUR_DINGTALK_CLIENT_SECRET> come from your app's Credentials page on the DingTalk developer platform. ROBOT_CODE (the robot that sends messages and DINGs), ROBOT_ACCESS_TOKEN (a custom group robot's access token) and DINGTALK_AGENT_ID (for work notifications) go in the same env block when you use those features — the README lists all of them as env variables. ACTIVE_PROFILES picks which DingTalk services are switched on; ALL turns on every one.
npx
npx -y dingtalk-mcp@latest