mac-wechat-mcp
Provides tools for observing WeChat chat windows on macOS, including capturing screenshots, performing OCR, and monitoring for changes, with capabilities for status checks and observation management.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mac-wechat-mcpCheck for new messages in my chat with Sarah and preview a reply."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mac-wechat-mcp
一个面向 macOS 个人微信的独立 MCP 项目。通过本机截图与 Apple Vision OCR,把当前指定会话的视觉上下文提供给支持 MCP 的 AI 客户端。
v0.1 是只读观察与回复草稿原型,尚不能自动发送微信。 标准 MCP 握手、图片返回和观察状态已通过合成数据测试;真实微信 4.1.13 的 OCR、身份核对、发送者识别与发送回读尚未完成验证。不要将本版本用于无人值守自动回复。
已实现
标准 MCP stdio 接口,使用官方 Python SDK,不依赖任何已有微信 MCP。
本机 Apple Vision OCR;返回聊天区域图片与原始 OCR 块。
单个本地配置的联系人;目标标题不符、窗口移动/缩放、捕获失败时暂停。
首次捕获仅建立基线,默认观察期限 10 分钟、最小轮询间隔 15 秒。
前后画面对比;未处理的观察保留同一个 ID,连续变化保留最早未处理画面。
回复草稿预览:只返回文字,不写入输入框、不发送消息。
合成数据 demo,可在不启动微信、不授权屏幕录制的情况下测试 MCP 客户端。
Related MCP server: wechat-msg-mcp
能力边界
项目 | 当前状态 |
MCP stdio、工具发现、图片返回 | 已用 SDK 客户端测试 |
基线、过期、暂停、观察确认 | 已做自动化测试 |
真实 Mac 窗口截图与 OCR | 已实现,待本机校准及实机验收 |
识别消息发送者、媒体类型、新消息 | 尚未可靠实现;OCR 一律标为 unknown |
语义隐私过滤 | 客户端职责,服务端尚无语义过滤器 |
自动发送及发送确认 | 未开放 |
后台定时监听 | 无;由 MCP 客户端主动轮询 |
画面变化不等于收到新消息。 自己发消息、时间标签、滚动、图片加载都可能改变画面。观察 ID 不是微信消息 ID,不能承诺消息级 exactly-once。
快速运行 demo
需要 Python 3.11+ 和 uv。
git clone https://github.com/849860605/mac-wechat-mcp.git
cd mac-wechat-mcp
uv run mac-wechat-mcp --demo这是 stdio 服务,会等待 MCP 客户端输入。终端不打印欢迎横幅是正常现象,日志写到 stderr。
通用客户端配置:
{
"mcpServers": {
"mac-wechat": {
"command": "uv",
"args": ["--directory", "/absolute/path/mac-wechat-mcp", "run", "mac-wechat-mcp", "--demo"]
}
}
}Claude Desktop、Cursor 等客户端通常接受此类配置,但实际入口请以各客户端文档为准。客户端必须支持 本地 stdio MCP 和图片工具结果,才能完成视觉复核;没有宣称已逐个验证这些客户端。纯云端客户端不能直接运行你 Mac 上的 stdio 进程。
接入真实微信
先阅读 校准说明,生成自己的本地配置。示例坐标不能直接当成已验证配置。
uv run --extra macos mac-wechat-mcp --config /absolute/path/config.local.json --doctor
uv run --extra macos mac-wechat-mcp --config /absolute/path/config.local.json第一版使用 Python + PyObjC 调用 macOS 原生 API,便于安装与 MCP 集成;不需要运行 Swift 编译工具。微信须处于前台、可见、已登录,电脑须保持解锁。
工具
工具 | 行为 |
| 查看后端、到期时间及限制 |
| 建立新基线;默认 600 秒、15 秒间隔 |
| 到达间隔后捕获;返回前后图片及 OCR |
| 返回未发送草稿,不操作微信 |
| 确认观察结果;uncertain 会暂停 |
| 暂停并使待处理草稿失效 |
| 仅 demo:改变合成画面 |
AI 客户端负责生成回复;项目不内置模型、不要求模型 API Key,也不自动调用外部模型服务。
数据与权限
本机 OCR 不需要网络请求。MCP 返回的图片、文字会交给接入的 AI 客户端,可能进一步发往该客户端的模型服务商。
仅返回校准的消息区域,标题用于本机核对。捕获时临时生成完整微信窗口 PNG,正常结束后删除;异常终止时操作系统临时目录中可能留下文件。
不读取微信数据库,不上传联系人清单,不提供任意文件读取、Shell、浏览器或跨会话操作工具。
不持久化聊天内容;当前会话的少量前后图片保留在进程内存中。
备注名不能证明唯一身份。启用前须由使用者核对联系人资料;本版本不声称能自动解决同名联系人。
不在仓库提交真实截图、聊天内容、本地配置、密钥、运行日志。
开发与验证
uv sync --extra macos # 非 macOS 可省略 --extra macos
PYTHONPATH=src uv run python -m unittest discover -s tests -v本机已通过 21 项状态/协议测试,以及 1 项 Apple Vision 合成图片 OCR 测试;wheel 和源码包构建成功。原生 OCR 测试需允许系统 Vision 运行,受限沙箱中可能失败。
测试包含真实 stdio 子进程握手、工具调用与 PNG 返回,但微信画面由 demo 合成,不是微信实机收发测试。
架构:server.py 定义 MCP 接口;core.py 管理观察生命周期;macos.py 负责窗口截图与 OCR;demo.py 提供无微信测试后端。
License
MIT。独立第三方项目,与腾讯/微信无隶属关系。
Available Tools
7 toolsacknowledge_observationA
Acknowledge client review: no_new_incoming_text, privacy_skip, reviewed, or uncertain.
uncertain pauses the session. This records review only, never a send receipt.
| Name | Required | Description | Default |
|---|---|---|---|
| outcome | Yes | ||
| session_id | Yes | ||
| observation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses a meaningful side effect (uncertain pauses the session) and a non-effect (never a send receipt). It does not cover auth, reversibility, or error behavior, but annotations already cover the destructive/read-only profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences carry all essential information with no filler. The outcome values are front-loaded, followed by the important side effect and the exclusion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter tool, the description covers purpose, valid inputs, a key side effect, and what it does not do. It does not describe the response or prerequisites, but the tool is straightforward and the missing details are unlikely to block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds semantic value for the outcome parameter by listing the only valid values. However, session_id and observation_id are left entirely to their schema titles, and the meanings of the outcome values themselves are not explained. With 0% schema coverage, this is partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Acknowledge') and resource ('client review') and enumerates the four outcomes, so it's clear what the tool does. It also clarifies that this is not a send receipt, which helps separate it from preview/reply actions, though it does not explicitly contrast any sibling tool by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use the tool: acknowledging client review with one of four outcomes. The warning that 'uncertain pauses the session' and that it 'never [is] a send receipt' provide some when-not guidance, but no sibling alternative is explicitly named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
demo_advanceA
DEMO ONLY: change the synthetic image, without accessing WeChat.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the description is not solely responsible for safety disclosure. It adds useful context by stating the change affects a 'synthetic image' and does not access WeChat, which clarifies the non-real-world impact. However, it does not explain return values, side effects, or prerequisites, which is acceptable given the demo scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that communicates the demo-only nature, the action, the resource, and a key constraint (no WeChat access). Every word earns its place; the structure is front-loaded with the most important qualifier ('DEMO ONLY').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema demo tool, the description is sufficiently complete to allow an agent to understand its purpose and scope. It lacks details like expected outcome or call sequence, but given its simplicity and demo purpose, these omissions are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters with 100% schema description coverage, so the description need not document parameters. Per the baseline for 0-parameter tools, a score of 4 is appropriate; the description's mention of 'synthetic image' provides semantic context for the operation, which is more than the empty schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('change the synthetic image') and resource ('synthetic image'), with an explicit scope ('without accessing WeChat'). The 'DEMO ONLY' prefix signals its demo nature, distinguishing it from the observation and status sibling tools, though it does not name a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus the listed siblings (get_status, start_observation, poll_changes, etc.). 'DEMO ONLY' implies a demo context, but no clear conditions or alternatives are provided, leaving an agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusARead-only
Report backend availability, observation expiry and explicit sending limitations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description aligns with those by saying 'Report'. It adds useful context about what the status covers, especially 'explicit sending limitations', but it does not disclose details like staleness or error behavior, which is acceptable given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that names three distinct status dimensions without wasted words. It is compact and communicates the tool's scope efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only status tool, the description is nearly complete: it tells the agent what kind of information will be reported. The main gap is the lack of any guidance about when checking status matters relative to the observation lifecycle, but the low complexity and strong annotations make this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is fully self-documenting, so there is little for the description to add. The baseline of 4 applies because there is no parameter burden on the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Report') and names concrete resources: backend availability, observation expiry, and sending limitations. It clearly reads as a read-only status tool and does not overlap semantically with siblings like poll_changes or acknowledge_observation, though it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to call this tool versus alternatives such as poll_changes or preview_reply. An agent can infer that status checks belong here, but the description provides no explicit context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_observationA
Pause the current session and invalidate pending drafts. Restart creates a new baseline.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says the tool will 'invalidate pending drafts,' which is a destructive/canceling effect on pending data, yet the annotations declare destructiveHint=false. This directly contradicts the annotation and could mislead an agent about the tool's safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise, information-dense sentences. The first states the core action and side effect; the second states the restart consequence. There is no filler or redundant repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description covers the action, the side effect, and the restart implication. It is largely sufficient, though it could explicitly name the restart tool or clarify whether a successful pause returns confirmation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema requires no additional documentation. The description still adds useful context by clarifying that the operation targets the 'current session' implicitly rather than through arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and effect: 'Pause the current session and invalidate pending drafts.' It clearly identifies the resource (current session) and the behavior, distinguishing it from sibling tools like start_observation and poll_changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when the current session needs to be paused. It also implications about restart behavior ('Restart creates a new baseline'), which helps an agent understand the consequence. However, it does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poll_changesA
Return pending before/after chat images and raw OCR after the polling interval.
A visual change can be a timestamp, own message, media or scrolling. It is not proof of a new incoming message. Repeated polls retain the pending observation ID.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds valuable behavioral context: repeated polls retain the pending observation ID, and visual changes are explicitly not proof of a new incoming message. This helps the agent interpret results correctly, though it does not clarify the non-read-only implication from readOnlyHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all informative. The main return value is front-loaded, and each additional sentence earns its place by clarifying visual-change semantics and poll behavior. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what is returned, when to call it, and how to interpret results. It does not define 'pending observation ID' or address the potential side effects implied by readOnlyHint=false, but these are minor given the single parameter and simple nature of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description never mentions session_id. With only one parameter, its purpose is somewhat inferable from the tool name and context, but the description does not explicitly add meaning to the schema, so it fails to compensate for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Return') and resource ('pending before/after chat images and raw OCR'), plus the timing condition ('after the polling interval'). It is distinct enough from siblings like get_status or acknowledge_observation, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool ('after the polling interval') but gives no explicit guidance on when not to use it or which sibling to choose instead. Usage context is present but underdeveloped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_replyARead-only
Return an unsent draft for the latest observation. Does not paste or send anything.
Client must first identify new incoming text, merge bursts and skip privacy questions. This server does not claim to enforce semantic privacy classification.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| session_id | Yes | ||
| observation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the readOnlyHint and destructiveHint annotations: it confirms no paste/send side effect and discloses that semantic privacy classification is not enforced server-side. This is useful operational caveat information that annotations alone would not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and every sentence adds value: the no-send guarantee, client prerequisites, and privacy limitation. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description omits essential parameter semantics and has no output schema to explain the draft return format. It gives useful server-side caveats and preconditions, but a 3-required-parameter tool with zero schema coverage needs more explicit input/output guidance to be safely invocable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden of explaining session_id, observation_id, and text, but it does not define any of them. 'Latest observation' loosely relates to observation_id, yet the role of text and session_id remains unexplained, and the requirement of text is confusing given the tool 'returns' a draft.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('Return'), a clear resource ('unsent draft for the latest observation'), and explicitly disambiguates by saying it does not paste or send anything. This makes the tool's purpose immediately distinguishable from sibling tools like acknowledge_observation or poll_changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear preconditions and context: the client must first identify new incoming text, merge bursts, and skip privacy questions. It does not explicitly name alternative tools or state when not to use it, but the usage context is concrete enough for an agent to decide when this preview step is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_observationA
Capture baseline for the locally verified contact; never reply to baseline history.
This does not launch a timer. The MCP client must call poll_changes. Requires an image-capable client for subsequent before/after review.
| Name | Required | Description | Default |
|---|---|---|---|
| duration_seconds | No | ||
| interval_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only supply readOnlyHint=false and destructiveHint=false. The description adds meaningful behavioral context: it does not launch a timer, requires a follow-up poll_changes call, and needs an image-capable client for later review. This goes beyond the annotation hints without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each with a distinct role: core purpose, timer clarification, and client requirement. There is no filler or redundancy, and the most important info is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and two optional parameters that are unexplained. While the description covers the overall workflow, an agent cannot determine what duration_seconds vs. interval_seconds control or what the call returns, which is a significant gap for a tool with schema coverage of 0%.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description never mentions duration_seconds or interval_seconds. There is no explanation of how these settings affect the baseline capture, leaving all meaning to be guessed from parameter names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Capture baseline for the locally verified contact' – a specific action and target resource – and explicitly notes 'never reply to baseline history.' It also distinguishes itself from poll_changes by stating it does not launch a timer, making the tool's role clear among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives direct sequential guidance: after this tool, 'The MCP client must call poll_changes.' It also sets a clear prerequisite ('Requires an image-capable client') and a behavioral restriction ('never reply'). It stops short of naming alternative observation-related tools or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
acknowledge_observation - First observed
demo_advance - First observed
get_status - First observed
pause_observation - First observed
poll_changes - First observed
preview_reply - First observed
start_observation
TDQS
Scored across 7 tools
Each tool maps cleanly to a distinct stage in the observation workflow: status, start, poll, acknowledge, preview, pause, and demo advance. The descriptions carefully separate internal bookkeeping from WeChat-facing actions, so there is little chance of selecting the wrong tool.
Six of seven tools follow a consistent verb_noun pattern such as get_status, start_observation, poll_changes, acknowledge_observation, preview_reply, and pause_observation. demo_advance is a minor naming outlier, reversing the expected noun-verb order.
Seven tools is well-scoped for the intended observation-and-preview workflow. Each tool adds a distinct capability, and demo_advance is clearly labeled as demo-only rather than bloating the surface area.
The toolset covers the full lifecycle from baseline capture through polling, acknowledgment, reply preview, and pause/restart. The absence of a send action is intentional and consistently documented, so the surface feels complete for its stated no-send, human-in-the-loop purpose.
Maintenance
Related MCP Connectors
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Cross-device AI memory with encrypted activity capture and context handoff between AI tools
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables automation of WeChat on macOS through the Accessibility API, allowing LLMs to fetch recent messages from contacts and send replies based on conversation history.49 PyPI255MIT
- FlicenseNot gradedqualityBmaintenanceProvides AI clients read-only access to WeChat chat history by extracting and decrypting the local Mac database, enabling search, summary, and analysis of messages.-
- AlicenseNot gradedqualityDmaintenanceA production-oriented MCP server that exposes task-level WeChat Desktop automation to AI clients, enabling status checks, message fetching/reply, contact addition, and Moment publishing on macOS via accessibility automation.2MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that lets an LLM read and drive the macOS WeChat client through the Accessibility API, without reverse-engineering or injected code. It supports listing chats, opening conversations, reading messages, sending actions, and saving media locally.MIT