Vexa
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
MCP server for Open-Xchange: email (IMAP/SMTP), Sieve filters, CalDAV calendar, CardDAV contacts
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
OX_MCP_MAIL_SERVER, OX_MCP_MAIL_USER, OX_MCP_MAIL_APP_PASSWORD, OX_MCP_CALDAV_SERVER, OX_MCP_CALDAV_USER, OX_MCP_CALDAV_APP_PASSWORD, OX_MCP_CARDDAV_SERVER, OX_MCP_CARDDAV_USER, OX_MCP_CARDDAV_APP_PASSWORDค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"ox": {
"command": "npx",
"args": [
"-y",
"@rheopyrin/ox-mcp"
],
"env": {
"OX_MCP_MAIL_SERVER": "ใส่ค่าของคุณ",
"OX_MCP_MAIL_USER": "ใส่ค่าของคุณ",
"OX_MCP_MAIL_APP_PASSWORD": "ใส่ค่าของคุณ",
"OX_MCP_CALDAV_SERVER": "ใส่ค่าของคุณ",
"OX_MCP_CALDAV_USER": "ใส่ค่าของคุณ",
"OX_MCP_CALDAV_APP_PASSWORD": "ใส่ค่าของคุณ",
"OX_MCP_CARDDAV_SERVER": "ใส่ค่าของคุณ",
"OX_MCP_CARDDAV_USER": "ใส่ค่าของคุณ",
"OX_MCP_CARDDAV_APP_PASSWORD": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add ox --env OX_MCP_MAIL_SERVER='ใส่ค่าของคุณ' --env OX_MCP_MAIL_USER='ใส่ค่าของคุณ' --env OX_MCP_MAIL_APP_PASSWORD='ใส่ค่าของคุณ' --env OX_MCP_CALDAV_SERVER='ใส่ค่าของคุณ' --env OX_MCP_CALDAV_USER='ใส่ค่าของคุณ' --env OX_MCP_CALDAV_APP_PASSWORD='ใส่ค่าของคุณ' --env OX_MCP_CARDDAV_SERVER='ใส่ค่าของคุณ' --env OX_MCP_CARDDAV_USER='ใส่ค่าของคุณ' --env OX_MCP_CARDDAV_APP_PASSWORD='ใส่ค่าของคุณ' -- npx -y @rheopyrin/ox-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"ox": {
"command": "npx",
"args": [
"-y",
"@rheopyrin/ox-mcp"
],
"env": {
"OX_MCP_MAIL_SERVER": "ใส่ค่าของคุณ",
"OX_MCP_MAIL_USER": "ใส่ค่าของคุณ",
"OX_MCP_MAIL_APP_PASSWORD": "ใส่ค่าของคุณ",
"OX_MCP_CALDAV_SERVER": "ใส่ค่าของคุณ",
"OX_MCP_CALDAV_USER": "ใส่ค่าของคุณ",
"OX_MCP_CALDAV_APP_PASSWORD": "ใส่ค่าของคุณ",
"OX_MCP_CARDDAV_SERVER": "ใส่ค่าของคุณ",
"OX_MCP_CARDDAV_USER": "ใส่ค่าของคุณ",
"OX_MCP_CARDDAV_APP_PASSWORD": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"ox": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@rheopyrin/ox-mcp"
],
"env": {
"OX_MCP_MAIL_SERVER": "ใส่ค่าของคุณ",
"OX_MCP_MAIL_USER": "ใส่ค่าของคุณ",
"OX_MCP_MAIL_APP_PASSWORD": "ใส่ค่าของคุณ",
"OX_MCP_CALDAV_SERVER": "ใส่ค่าของคุณ",
"OX_MCP_CALDAV_USER": "ใส่ค่าของคุณ",
"OX_MCP_CALDAV_APP_PASSWORD": "ใส่ค่าของคุณ",
"OX_MCP_CARDDAV_SERVER": "ใส่ค่าของคุณ",
"OX_MCP_CARDDAV_USER": "ใส่ค่าของคุณ",
"OX_MCP_CARDDAV_APP_PASSWORD": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
OX_MCP_MAIL_SERVER envOX_MCP_MAIL_USER envOX_MCP_CALDAV_SERVER envOX_MCP_CALDAV_USER envOX_MCP_CARDDAV_SERVER envOX_MCP_CARDDAV_USER envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 9 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub Rheopyrin ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: OX_MCP_MAIL_APP_PASSWORD, OX_MCP_CALDAV_APP_PASSWORD, OX_MCP_CARDDAV_APP_PASSWORD
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.4) เข้า registry 27 วันที่ผ่านมา
โปรแกรมที่รองรับ 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 รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
An MCP server for Open-Xchange and standards-based mail platforms — read & search email, send & reply, manage server-side filters, calendar events and invitations, contacts, and other people's availability (free/busy), across one or many accounts.
It speaks standard IMAP + SMTP + ManageSieve + CalDAV + CardDAV with RFC 6638 free/busy, so it works with any Open-Xchange deployment or standards-compliant host. Authenticate with your email + app password (the same credential DAVx5 uses) or OAuth2/OIDC.
No affiliation with Open-Xchange.
npx -y @rheopyrin/ox-mcp
npx -y @rheopyrin/ox-mcp --config /path/to/config.json
MCP client config (Claude Desktop / Claude Code):
{
"mcpServers": { "ox": { "command": "npx", "args": ["-y", "@rheopyrin/ox-mcp"], "env": { "OX_MCP_MAIL_SERVER": "mail.example.com", "OX_MCP_MAIL_USER": "you@yourdomain.com", "OX_MCP_MAIL_APP_PASSWORD": "xxxx-xxxx-xxxx-xxxx", "OX_MCP_CALDAV_SERVER": "dav.example.com", "OX_MCP_CALDAV_USER": "you@yourdomain.com", "OX_MCP_CALDAV_APP_PASSWORD": "yyyy-yyyy-yyyy-yyyy" } } } }
On first run (without --config) it creates ~/.ox-mcp/config.json (permissions 0600) with every feature flag listed — reads enabled, writes disabled — and empty hosts for you to fill in.
--config--config (or env OX_MCP_CONFIG; the flag wins) loads an explicit config file instead of ~/.ox-mcp/config.json. The file must exist — nothing is auto-created when the override is used.
Tools are grouped by protocol domain. A group's tools appear only when enabled, and the group's server host must be configured (see *Validation*).
| Group | Read (enabled by default) | Write (disabled by default) |
|---|---|---|
email_* (IMAP/SMTP/Sieve — mail section) | email_list_folders, email_list, email_read, email_search, email_filter_list | email_send, email_save_draft, email_reply, email_reply_all, email_delete, email_move, email_flag, email_mark_read, email_mark_unread, email_mark_spam, email_archive, email_create_folder, email_delete_folder, email_filter_create, email_filter_update |
calendar_* (CalDAV — calDav section) | calendar_list, calendar_list_events, calendar_free_busy | calendar_create_event, calendar_update_event, calendar_delete_event, calendar_accept_event, calendar_decline_event, calendar_tentative_event |
contact_* (CardDAV — cardDav section) | contact_list, contact_find | contact_create |
| meta | list_servers (always on) | — |
list_servers) accepts an optional server argument to target a specific account. A tool is hidden from the tool list unless its flag is enabled for at least one account.email_search searches all folders by default; pass folder to narrow it. On the ox-api transport, body/text match only the subject and addresses of recent messages — use transport: "imap" for true full-text search.email_mark_spam / email_archive find the Junk/Archive folder via IMAP special-use attributes, with name-based fallbacks.email_reply / email_reply_all preserve threading (In-Reply-To/References) and exclude your own address from reply-all recipients.calendar_accept_event / calendar_decline_event / calendar_tentative_event) share one feature flag: respondEvent (calDav section). They rewrite your PARTSTAT on the invitation; the server notifies the organizer.contact_find searches contacts server-side (CardDAV addressbook-query, RFC 6352) with automatic fallback to client-side filtering; fields narrows the match to name/email/phone/org (default name + email). Handy for resolving a name to an email before calendar_free_busy. contact_list is plain enumeration.email_filter_create / email_filter_update manage server-side sieve filters over ManageSieve (port 4190, STARTTLS; requires basic/app-password auth). Rules support conditions on from/to/subject/any header (AND or OR) and actions fileinto (move to folder), discard, markRead, redirect.
Backend depends on
mail.transport: with ox-api (default), filters go through the OXmailfilter/v2module and operate on the account's real webmail rules (rules with tests/actions beyond this model are listed read-only asother). With imap, ox-mcp manages its own sieve script over ManageSieve (port 4190) and activates it — filters from other scripts become inactive while it is active.
Each account is made of up to three self-contained sections — mail, calDav, cardDav — each with its own server, auth (incl. its own login user), and features. This matches servers (like Open-Xchange) that scope app passwords per protocol: your Mail password, CalDAV password, and CardDAV password can all differ.
{
"defaultServer": "default", "timeoutSeconds": 300, // optional; request timeout, default 300 "servers": { "default": { "mail": { "server": "webmail.example.com", // OX HTTP API host (default transport) "transport": "ox-api", // optional; "imap" for direct IMAP/SMTP "imap": { "host": "imap.example.com", "port": 993 }, // optional overrides "smtp": { "host": "smtp.example.com", "port": 587, "secure": false }, // secure optional; 993/465 = TLS, else STARTTLS "auth": { "type": "basic", "user": "me@example.com", "appPassword": "mail-scoped-pw" }, "features": { "search": true, "send": false /* per-tool flags */ } }, "calDav": { "server": "dav.example.com", "auth": { "type": "basic", "user": "me@example.com", "appPassword": "caldav-scoped-pw" }, "features": { "respondEvent": false /* … */ } }, "cardDav": { "server": "dav.example.com", "auth": { "type": "basic", "user": "me@example.com", "appPassword": "carddav-scoped-pw" } } } } }
https:// /appsuite/api). OX deployments validate app passwords at this middleware, so it works even where raw IMAP rejects them; server is the webmail host. Filter tools use the OX mailfilter/v2 module — they list and edit the account's actual webmail rules. Caveat: search matches subject/addresses (not full bodies).server is the mail host, with optional split imap/smtp endpoints.enabled: false on a section is a config master switch for all its tools.Resolution precedence — env always beats config, first defined wins:
OX_MCP_ _ENABLE_EMAIL_SENDOX_MCP_ _ENABLE_MAILOX_MCP_ENABLE_EMAIL_SENDOX_MCP_ENABLE_MAIL / _CALDAV / _CARDDAVservers. .mail.features.sendservers. .mail.enabledtrue for reads, false for writes# enable sending on all accounts
OX_MCP_ENABLE_EMAIL_SEND=true
OX_MCP_ENABLE_CALDAV=false
OX_MCP_WORK_ENABLE_CALENDAR_CREATE_EVENT=true
OX_MCP_ENABLE_CALENDAR_RESPOND_EVENT=true
Booleans accept true/1/yes/on and false/0/no/off.
Every section field is settable via env: OX_MCP_[ID_] _ with SECTION ∈ MAIL | CALDAV | CARDDAV. The default account uses the non-indexed form.
| Env var | Meaning |
|---|---|
OX_MCP_MAIL_SERVER / OX_MCP_CALDAV_SERVER / OX_MCP_CARDDAV_SERVER | section host |
OX_MCP_MAIL_USER / OX_MCP_CALDAV_USER / OX_MCP_CARDDAV_USER | section login user |
OX_MCP_MAIL_APP_PASSWORD / OX_MCP_CALDAV_APP_PASSWORD / … | section app password (basic auth) |
OX_MCP_MAIL_IMAP_HOST / _IMAP_PORT / _SMTP_HOST / _SMTP_PORT | mail transport overrides (Gmail-style split hosts) |
OX_MCP_MAIL_IMAP_SECURE / _SMTP_SECURE | force TLS (true) or STARTTLS (false) on a non-standard port |
OX_MCP_MAIL_AUTH_TYPE, _CLIENT_ID, _REFRESH_TOKEN, … | per-section OAuth/OIDC fields |
OX_MCP_TIMEOUT_SECONDS | request timeout for all HTTP/IMAP/SMTP operations (default 300) |
Default ports: IMAP 993, SMTP 465, DAV 443, ManageSieve 4190. TLS mode derives from the port (993/465 implicit TLS; 143/587 STARTTLS) unless secure is set explicitly.
Configuration is validated strictly at startup: every present section with enabled tools must have a server (or split imap/smtp hosts for mail) and a login user, or the server exits with an error naming the exact field. Accounts with zero sections error too. Absent sections are simply disabled — no error.
basic (app password) is the default. Other Open-Xchange-aligned mechanisms are supported per section via auth.type / OX_MCP_[ID_] _AUTH_TYPE:
| Type | Extra fields (env: OX_MCP_[ID_] _…) |
|---|---|
basic | APP_PASSWORD |
xoauth2 | ACCESS_TOKEN |
oauth2-refresh | CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN, TOKEN_URL, SCOPE |
oauth2-password | CLIENT_ID, CLIENT_SECRET, PASSWORD, TOKEN_URL, SCOPE |
oidc | ISSUER, CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN or PASSWORD, SCOPE |
Tokens are cached and refreshed automatically. Note: mail filters (ManageSieve) require basic auth.
OX_MCP_ACCOUNTS=work,personal
OX_MCP_WORK_MAIL_SERVER=mail.work.com OX_MCP_WORK_MAIL_USER=me@work.com OX_MCP_WORK_MAIL_APP_PASSWORD=... OX_MCP_PERSONAL_CALDAV_SERVER=dav.personal.com OX_MCP_PERSONAL_CALDAV_USER=me@personal.com OX_MCP_PERSONAL_CALDAV_APP_PASSWORD=... OX_MCP_DEFAULT_SERVER=work
Or define them in ~/.ox-mcp/config.json under servers (keyed by id). list_servers shows what's configured (never secrets); env values override config field-by-field. Feature flags can differ per account (e.g. sending enabled only on work).
calendar_free_busy returns availability windows only (busy/free), via the CalDAV scheduling outbox — no calendar sharing needed. It does not reveal event details, and requires the server to advertise a schedule-outbox-URL. To read a colleague's full calendar, they must share it with your account; shared calendars then appear in calendar_list / calendar_list_events.
docker build -t ox-mcp .
docker run -i --rm \ -e OX_MCP_MAIL_SERVER=mail.example.com \ -e OX_MCP_MAIL_USER=you@yourdomain.com \ -e OX_MCP_MAIL_APP_PASSWORD=xxxx \ ox-mcp
npm install
npm run dev # run from source npm test # vitest npm run test:coverage np
ตัดมาแค่ช่วงต้น อ่านต่อใน repo