WeCom Bot MCP Server
A server for sending messages via WeCom bots using FastMCP, supporting asynchronous communication and message tracking through webhooks.
loonghao
Tools
send_wecom_file
Send file to WeCom. Args: file_path: Path to file ctx: FastMCP context Returns: dict: Response containing status and message Raises: WeComError: If file is not found or API call fails
send_wecom_image
Send image to WeCom. Args: image_path: Path to image file or URL ctx: FastMCP context Returns: dict: Response containing status and message Raises: WeComError: If image is not found or API call fails.
send_message
Send message to WeCom. Args: content: Message content msg_type: Message type (text, markdown) mentioned_list: List of mentioned users mentioned_mobile_list: List of mentioned mobile numbers ctx: FastMCP context Returns: dict: Response containing status and message Raises: WeComError: If message sending fails
README
WeCom Bot MCP Server
<div align="center"> <img src="wecom.png" alt="WeCom Bot Logo" width="200"/> </div>
A Model Context Protocol (MCP) compliant server implementation for WeCom (WeChat Work) bot.
<a href="https://glama.ai/mcp/servers/amr2j23lbk"><img width="380" height="200" src="https://glama.ai/mcp/servers/amr2j23lbk/badge" alt="WeCom Bot Server MCP server" /></a>
Features
- Support for multiple message types:
- Text messages
- Markdown messages
- Image messages (base64)
- File messages
- @mention support (via user ID or phone number)
- Message history tracking
- Configurable logging system
- Full type annotations
- Pydantic-based data validation
Requirements
- Python 3.10+
- WeCom Bot Webhook URL (obtained from WeCom group settings)
Installation
There are several ways to install WeCom Bot MCP Server:
1. Automated Installation (Recommended)
Using Smithery (For Claude Desktop):
npx -y @smithery/cli install wecom-bot-mcp-server --client claude
Using VSCode with Cline Extension:
- Install Cline Extension from VSCode marketplace
- Open Command Palette (Ctrl+Shift+P / Cmd+Shift+P)
- Search for "Cline: Install Package"
- Type "wecom-bot-mcp-server" and press Enter
2. Manual Installation
Install from PyPI:
pip install wecom-bot-mcp-server
Configure MCP manually:
Create or update your MCP configuration file:
// For Windsurf: ~/.windsurf/config.json
{
"mcpServers": {
"wecom": {
"command": "uvx",
"args": [
"wecom-bot-mcp-server"
],
"env": {
"WECOM_WEBHOOK_URL": "your-webhook-url"
}
}
}
}
Configuration
Setting Environment Variables
# Windows PowerShell
$env:WECOM_WEBHOOK_URL = "your-webhook-url"
# Optional configurations
$env:MCP_LOG_LEVEL = "DEBUG" # Log levels: DEBUG, INFO, WARNING, ERROR, CRITICAL
$env:MCP_LOG_FILE = "path/to/custom/log/file.log" # Custom log file path
Log Management
The logging system uses platformdirs.user_log_dir()
for cross-platform log file management:
- Windows:
C:\Users\<username>\AppData\Local\hal\wecom-bot-mcp-server
- Linux:
~/.local/share/hal/wecom-bot-mcp-server
- macOS:
~/Library/Application Support/hal/wecom-bot-mcp-server
The log file is named mcp_wecom.log
and is stored in the above directory.
Usage
Starting the Server
wecom-bot-mcp-server
Usage Examples (With MCP)
# Scenario 1: Send weather information to WeCom
USER: "How's the weather in Shenzhen today? Send it to WeCom"
ASSISTANT: "I'll check Shenzhen's weather and send it to WeCom"
await mcp.send_message(
content="Shenzhen Weather:\n- Temperature: 25°C\n- Weather: Sunny\n- Air Quality: Good",
msg_type="markdown"
)
# Scenario 2: Send meeting reminder and @mention relevant people
USER: "Send a reminder for the 3 PM project review meeting, remind Zhang San and Li Si to attend"
ASSISTANT: "I'll send the meeting reminder"
await mcp.send_message(
content="## Project Review Meeting Reminder\n\nTime: Today 3:00 PM\nLocation: Meeting Room A\n\nPlease be on time!",
msg_type="markdown",
mentioned_list=["zhangsan", "lisi"]
)
# Scenario 3: Send a file
USER: "Send this weekly report to the WeCom group"
ASSISTANT: "I'll send the weekly report"
await mcp.send_message(
content=Path("weekly_report.docx"),
msg_type="file"
)
Direct API Usage
Send Messages
from wecom_bot_mcp_server import mcp
# Send markdown message
await mcp.send_message(
content="**Hello World!**",
msg_type="markdown"
)
# Send text message and mention users
await mcp.send_message(
content="Hello @user1 @user2",
msg_type="text",
mentioned_list=["user1", "user2"]
)
Send Files
from wecom_bot_mcp_server import send_wecom_file
# Send file
await send_wecom_file("/path/to/file.txt")
Send Images
from wecom_bot_mcp_server import send_wecom_image
# Send local image
await send_wecom_image("/path/to/image.png")
# Send URL image
await send_wecom_image("https://example.com/image.png")
Development
Setup Development Environment
- Clone the repository:
git clone https://github.com/loonghao/wecom-bot-mcp-server.git
cd wecom-bot-mcp-server
- Create a virtual environment and install dependencies:
# Using uv (recommended)
pip install uv
uv venv
uv pip install -e ".[dev]"
# Or using traditional method
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -e ".[dev]"
Testing
# Using uv (recommended)
uvx nox -s pytest
# Or using traditional method
nox -s pytest
Code Style
# Check code
uvx nox -s lint
# Automatically fix code style issues
uvx nox -s lint_fix
Building and Publishing
# Build the package
uv build
# Build and publish to PyPI
uv build && twine upload dist/*
Project Structure
wecom-bot-mcp-server/
├── src/
│ └── wecom_bot_mcp_server/
│ ├── __init__.py
│ ├── server.py
│ ├── message.py
│ ├── file.py
│ ├── image.py
│ ├── utils.py
│ └── errors.py
├── tests/
│ ├── test_server.py
│ ├── test_message.py
│ ├── test_file.py
│ └── test_image.py
├── docs/
├── pyproject.toml
├── noxfile.py
└── README.md
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contact
- Author: longhao
- Email: hal.long@outlook.com
Recommended Servers
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Apple MCP Server
Enables interaction with Apple apps like Messages, Notes, and Contacts through the MCP protocol to send messages, search, and open app content using natural language.
@kazuph/mcp-gmail-gas
Model Context Protocol server for Gmail integration. This allows Claude Desktop (or any MCP client) to interact with your Gmail account through Google Apps Script.
MCP Server Trello
Facilitates interaction with Trello boards via the Trello API, offering features like rate limiting, type safety, input validation, and error handling for seamless management of cards, lists, and board activities.

Linear MCP Server
A Model Context Protocol server that integrates with Linear's issue tracking system, allowing LLMs to create, update, search, and comment on Linear issues through natural language interactions.
Composio MCP Server
A server implementation that provides MCP-compatible access to Composio applications like Gmail and Linear, allowing interaction through a structured interface for language models.

Folderr
A Model Context Protocol (MCP) server that provides tools to interact with Folderr's API, specifically for managing and communicating with Folderr Assistants.

mcp-google
A specialized Model Context Protocol (MCP) server that integrates Google services (Gmail, Calendar, etc.) into your AI workflows. This server enables seamless access to Google services through MCP, allowing AI agents to interact with Gmail, Google Calendar, and other Google services.
MCP-JIRA-Python Server
A Python-based server allowing seamless integration with JIRA for managing and interacting with projects through custom APIs.
Email Sending MCP
Send emails directly from Cursor with this email sending MCP server