Vexa
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
WhatsApp for your agent: chats, messages, media, contacts and groups behind MCP tools.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
WAZAP_READ_ONLY, WAZAP_DATA_DIRต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"wazap": {
"command": "npx",
"args": [
"-y",
"wazap-mcp"
],
"env": {
"WAZAP_READ_ONLY": "ใส่ค่าของคุณ",
"WAZAP_DATA_DIR": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add wazap --env WAZAP_READ_ONLY='ใส่ค่าของคุณ' --env WAZAP_DATA_DIR='ใส่ค่าของคุณ' -- npx -y wazap-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"wazap": {
"command": "npx",
"args": [
"-y",
"wazap-mcp"
],
"env": {
"WAZAP_READ_ONLY": "ใส่ค่าของคุณ",
"WAZAP_DATA_DIR": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"wazap": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"wazap-mcp"
],
"env": {
"WAZAP_READ_ONLY": "ใส่ค่าของคุณ",
"WAZAP_DATA_DIR": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
WAZAP_READ_ONLY envWAZAP_DATA_DIR envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub razvangirgiz ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.6.0) เข้า registry 17 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Vexa, emailmd, MCP WhatsApp Cloud
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
Render markdown into email-safe HTML, lint drafts for deliverability problems, and preview emails.
MCP server for WhatsApp Cloud API (Meta) — messages, media, and templates via Graph API
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
╭───────────────╮
│ ▄██▀ │ ██╗ ██╗ █████╗ ███████╗ █████╗ ██████╗ │ ▄██▀ │ ██║ ██║██╔══██╗╚══███╔╝██╔══██╗██╔══██╗ │ ▄███████▀ │ ██║ █╗ ██║███████║ ███╔╝ ███████║██████╔╝ │ ▄██▀ │ ██║███╗██║██╔══██║ ███╔╝ ██╔══██║██╔═══╝ │ ▄█▀ │ ╚███╔███╔╝██║ ██║███████╗██║ ██║██║ ╰─╮╭────────────╯ ╚══╝╚══╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╰╯ WhatsApp for your AI agent.
wazap is an MCP server for your own WhatsApp account. It links as a device, the way WhatsApp Web does, keeps what it sees on your machine, and gives any MCP client — Claude, ChatGPT, Gemini, Cursor, Codex — 23 tools over your chats, messages, media, contacts and groups.
You stop opening WhatsApp to find things and ask instead:
No browser, no business account, no third-party service. There is no wazap cloud: it runs where you run it.
You need Node.js 22.16+ on the 22 line, or 24+, and a phone with WhatsApp.
npx wazap-mcp setup
setup links your account, finds the MCP clients installed on this machine (Claude Code, Claude Desktop, Cursor, Codex, Gemini CLI), writes their config, installs the five skills where the client reads them, and tells you what to restart. Then ask your assistant: *"what did I miss on WhatsApp today?"*
Rather let your agent do it? Paste this into it:
Set up WhatsApp for me: run
npx wazap-mcp setup --agentand follow what it prints.
npx wazap-mcp on its own, in a terminal, starts nothing: it prints where you stand and the next command. When something is off, npx wazap-mcp status is the first thing to run; it prints a fix next to anything broken.
| Client | Fastest path |
|---|---|
| Claude Code | /plugin marketplace add razvangirgiz/wazap, then /plugin install wazap@wazap |
| Claude Desktop | download wazap- .mcpb from Releases and double-click it |
| Cursor | the badge below, then npx wazap-mcp skills install cursor |
| Codex CLI | npx wazap-mcp connect codex, then npx wazap-mcp skills install codex |
| Gemini CLI | npx wazap-mcp connect gemini |
| claude.ai, ChatGPT, other hosted agents | a URL they sign in to with OAuth: see Remote access |
| Anything else | command npx -y wazap-mcp, transport stdio |
The hand-written entry, for any client that takes the usual JSON:
{
"mcpServers": { "whatsapp": { "command": "npx", "args": ["-y", "wazap-mcp"] } } }
Every step setup takes, each file connect writes, and upgrading are in docs/install.md.
Linking is a one-time step. setup does it for you; on its own it is:
npx wazap-mcp login # QR code: Settings → Linked devices → Link a device
npx wazap-mcp login --phone +15550100 # pairing code instead, no camera needed
With --phone, wazap prints an 8-character code. On the phone, go to WhatsApp → Settings → Linked devices → Link a device → Link with phone number instead and type it in. The pairing code works over SSH and on a headless server, where a QR is impractical.
An assistant can link the account itself, too: the link_account tool returns the same code, so a Claude Desktop user never needs a terminal.
Several WhatsApp accounts can live in one wazap (wazap account add , then wazap login --account ); see docs/accounts.md.
What every argument means, and every error code, is in docs/tools.md. The assistant gets all of it by calling learn.
| Tool | Kind | What it does |
|---|---|---|
learn | read | The guide to every tool, id format, workflow and error code. Call it first. |
get_status | read | Connection, sync, linked accounts, how fresh the history is, webhook delivery, versions. |
link_account | read | Link an account from the assistant; returns the 8-character code to type into the phone. |
list_chats | read | Conversations newest-first: all, unread, groups, individual or archived. |
read_messages | read | One chat, paging back into the phone's history; chat_id: "status" reads the stories. |
catch_up | read | "What did I miss?" across every account, in one call and within a token budget. |
search | read | Messages by meaning and by words at once, narrowed by chat, sender or date. |
get_message | read | One message in full: its quote, reactions and who left them, poll votes, delivery and read receipts. |
find_contact | read | Who "mama", a nickname, a group name or a number means, before anything is drafted. |
list_contacts | read | The phone's address book a page at a time: saved name, number, when you last talked. |
get_group_info | read | Participants, admins, group settings, the invite link for an admin. |
get_media | read | A voice note as its transcript, a photo as an image, any file saved to disk; served from the copy kept on arrival first. |
wait_for_messages | read | Block up to 55 s until a message arrives, with a cursor so nothing is missed between calls. |
remember | local | A note, tags or details about a person, kept on this machine. Nothing changes on WhatsApp. |
send_message | write | Draft a message, media, poll, location or forward — and send nothing. send_at drafts it for a later time. |
confirm_send | write | Send that draft, once, after the user has seen the preview and said yes; a draft for later is scheduled. |
edit_message | write | Edit your own message, within WhatsApp's 15-minute window. |
react_to_message | write | Add or remove an emoji reaction. |
delete_message | write | Delete for everyone (your own message, or anyone's in a group you admin), or only on this account. |
manage_chat | write | Preview archive, pin, mute, star, clear, delete, block and undo actions; confirm the preview to apply once. mark_read remains direct. |
manage_group | write | Create, join, rename, add, remove, promote, invite links, join requests, settings, leave. |
scheduled_messages | write | List the scheduled messages (sent, missed, failed too) or cancel one before it goes. |
reminder | local | "Remind me if Ana has not answered in 2 days": set, list or cancel; posted to your webhook when due. |
Scheduled messages and reminders. send_message with send_at ("tomorrow at 9" as 2026-10-12T09:00 in Europe/Bucharest) drafts a message for later; the user's yes to that preview, time included, schedules it, and every send check runs again when it goes. One wazap could not send within 15 minutes of its time is reported as missed, never sent late. reminder keeps "remind me if Ana has not answered in 2 days" and posts it to your webhook when due. Both survive restarts; see Scheduling a message and Reminders.
Two features are off by default and can run entirely on your machine: voice transcription with whisper.cpp (docs/voice.md) and semantic recall, so search matches meaning and not only words (docs/recall.md). Turn them on with wazap config transcribe local and wazap config recall local.
Tools say what is possible; the five Agent Skills in skills/ say how to do the job well.
| Skill | What the agent does |
|---|---|
whatsapp-inbox | Triage: needs you / FYI / noise, plus replies you forgot. Read-only. |
whatsapp-recall | Find an address, an invoice, a photo, a thing someone said. Read-only. |
whatsapp-groups | Catch up on a busy group: decisions, dates, what is asked of you. Read-only. |
whatsapp-send | Find who you mean, draft in the chat's own tone, show it, send on a yes. |
wazap-setup | Diagnose, link or repair the connection. |
setup installs them for Claude Code, Codex and Cursor (npx wazap-mcp skills install does it by hand). Every other client gets the same five as MCP prompts from the server, with nothing to install.
stdio is the default: the client starts npx -y wazap-mcp and talks to it over stdin/stdout. Nothing listens on the network.
HTTP (Streamable HTTP) is for a server that outlives the client, or one another machine reaches:
npx wazap-mcp serve --http # http://127.0.0.1:8766/mcp, health at /healthz
--host/--port (or WAZAP_HOST/WAZAP_PORT) move it. wazap refuses to bind anything but loopback without WAZAP_READ_TOKEN. Clients authenticate with a static bearer token (WAZAP_READ_TOKEN, plus WAZAP_WRITE_TOKEN for the write tools) or with OAuth 2.1, which wazap serves itself. Details in docs/self-host.md.
Two commands keep wazap running and reachable from hosted agents:
npx wazap-mcp service install # a launchd agent (macOS) or systemd user unit (Linux)
npx wazap-mcp expose # a public https URL through Tailscale Funnel or Cloudflare Tunnel
expose prints the URL and a consent password. Give the agent only the URL; it registers itself, and the consent page asks you for the password and whether that agent may only read or also send. See Keep it running.
The service recovers by itself: a dropped link is retried with backoff, a watchdog replaces a socket that went dead across a sleep or stopped answering, and when reconnecting keeps failing wazap exits so launchd or systemd starts it fresh. The linked session is never deleted for any of that; only WhatsApp unlinking the device needs a new link. Set WAZAP_WEBHOOK_EVENTS to include alert to be told when the link has been down for 5 minutes, when it is back, and when it needs linking again (Link alerts); get_status shows the same under link.
On a server of your own, the session never leaves it. With Docker (images for amd64 and arm64 at ghcr.io/razvangirgiz/wazap):
mkdir wazap && cd wazap
curl -fsSLO https://raw.githubusercontent.com/razvangirgiz/wazap/main/docker-compose.yml printf 'WAZAP_READ_TOKEN=%s\nWAZAP_WRITE_TOKEN=%s\n' $(openssl rand -hex 32) $(openssl rand -hex 32) > .env docker compose run --rm wazap login --phone +15550100 # once; the session lands in the volume docker compose up -d curl -s http://127.0.0.1:8766/healthz
The container publishes port 8766 on loopback only; put TLS in front (deploy/Caddyfile is two lines). A systemd unit is in deploy/wazap.service. Both setups, reverse-proxy trust and the OAuth server are in docs/self-host.md. Calling wazap from your own product, and receiving signed webhooks for incoming messages, is in docs/api-and-webhooks.md.
Every setting is optional. They are environment variables, read from the process or from `~/
ตัดมาแค่ช่วงต้น อ่านต่อใน repo