Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Send notifications across 23 channels with 36 AI-ready tools. One API, zero boilerplate.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
NOTIFY_CHANNELS_EMAIL_HOST, NOTIFY_CHANNELS_EMAIL_PORT, NOTIFY_CHANNELS_EMAIL_USERNAME, NOTIFY_CHANNELS_EMAIL_PASSWORD, NOTIFY_CHANNELS_EMAIL_FROM, NOTIFY_CHANNELS_SMS_ACCOUNTSID, NOTIFY_CHANNELS_SMS_AUTHTOKEN, NOTIFY_CHANNELS_SMS_FROMNUMBER, NOTIFY_CHANNELS_SLACK_WEBHOOKURL, NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN, NOTIFY_CHANNELS_TELEGRAM_CHATID, NOTIFY_CHANNELS_DISCORD_WEBHOOKURL, NOTIFY_CHANNELS_TEAMS_WEBHOOKURL, NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL, NOTIFY_CHANNELS_TWITTER_APIKEY, NOTIFY_CHANNELS_TWITTER_APISECRET, NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN, NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET, NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN, NOTIFY_CHANNELS_LINKEDIN_ORGANIZATIONID, NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID, NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN, NOTIFY_CHANNELS_WHATSAPP_FROMNUMBER, NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS, NOTIFY_CHANNELS_NOTION_APIKEY, NOTIFY_CHANNELS_NOTION_DATABASEID, NOTIFY_CHANNELS_TWITCH_CLIENTID, NOTIFY_CHANNELS_TWITCH_CLIENTSECRET, NOTIFY_CHANNELS_TWITCH_BROADCASTERID, NOTIFY_CHANNELS_YOUTUBE_CLIENTID, NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET, NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN, NOTIFY_CHANNELS_YOUTUBE_LIVECHATID, NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN, NOTIFY_CHANNELS_INSTAGRAM_USERID, NOTIFY_CHANNELS_SENDGRID_APIKEY, NOTIFY_CHANNELS_SENDGRID_FROMEMAIL, NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY, NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET, NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN, NOTIFY_CHANNELS_TIKTOKSHOP_SHOPID, NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN, NOTIFY_CHANNELS_FACEBOOK_PAGEID, NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID, NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY, NOTIFY_CHANNELS_AWSSNS_REGION, NOTIFY_CHANNELS_MAILGUN_APIKEY, NOTIFY_CHANNELS_MAILGUN_DOMAIN, NOTIFY_CHANNELS_MAILGUN_FROMEMAIL, NOTIFY_CHANNELS_PAGERDUTY_APIKEYค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"notify-hub": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"NOTIFY_CHANNELS_EMAIL_HOST",
"-e",
"NOTIFY_CHANNELS_EMAIL_PORT",
"-e",
"NOTIFY_CHANNELS_EMAIL_USERNAME",
"-e",
"NOTIFY_CHANNELS_EMAIL_PASSWORD",
"-e",
"NOTIFY_CHANNELS_EMAIL_FROM",
"-e",
"NOTIFY_CHANNELS_SMS_ACCOUNTSID",
"-e",
"NOTIFY_CHANNELS_SMS_AUTHTOKEN",
"-e",
"NOTIFY_CHANNELS_SMS_FROMNUMBER",
"-e",
"NOTIFY_CHANNELS_SLACK_WEBHOOKURL",
"-e",
"NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN",
"-e",
"NOTIFY_CHANNELS_TELEGRAM_CHATID",
"-e",
"NOTIFY_CHANNELS_DISCORD_WEBHOOKURL",
"-e",
"NOTIFY_CHANNELS_TEAMS_WEBHOOKURL",
"-e",
"NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL",
"-e",
"NOTIFY_CHANNELS_TWITTER_APIKEY",
"-e",
"NOTIFY_CHANNELS_TWITTER_APISECRET",
"-e",
"NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET",
"-e",
"NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_LINKEDIN_ORGANIZATIONID",
"-e",
"NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID",
"-e",
"NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN",
"-e",
"NOTIFY_CHANNELS_WHATSAPP_FROMNUMBER",
"-e",
"NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS",
"-e",
"NOTIFY_CHANNELS_NOTION_APIKEY",
"-e",
"NOTIFY_CHANNELS_NOTION_DATABASEID",
"-e",
"NOTIFY_CHANNELS_TWITCH_CLIENTID",
"-e",
"NOTIFY_CHANNELS_TWITCH_CLIENTSECRET",
"-e",
"NOTIFY_CHANNELS_TWITCH_BROADCASTERID",
"-e",
"NOTIFY_CHANNELS_YOUTUBE_CLIENTID",
"-e",
"NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET",
"-e",
"NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN",
"-e",
"NOTIFY_CHANNELS_YOUTUBE_LIVECHATID",
"-e",
"NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_INSTAGRAM_USERID",
"-e",
"NOTIFY_CHANNELS_SENDGRID_APIKEY",
"-e",
"NOTIFY_CHANNELS_SENDGRID_FROMEMAIL",
"-e",
"NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY",
"-e",
"NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET",
"-e",
"NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_TIKTOKSHOP_SHOPID",
"-e",
"NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_FACEBOOK_PAGEID",
"-e",
"NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID",
"-e",
"NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY",
"-e",
"NOTIFY_CHANNELS_AWSSNS_REGION",
"-e",
"NOTIFY_CHANNELS_MAILGUN_APIKEY",
"-e",
"NOTIFY_CHANNELS_MAILGUN_DOMAIN",
"-e",
"NOTIFY_CHANNELS_MAILGUN_FROMEMAIL",
"-e",
"NOTIFY_CHANNELS_PAGERDUTY_APIKEY",
"ghcr.io/gabrielbbaldez/notify-hub:1.1.0"
],
"env": {
"NOTIFY_CHANNELS_EMAIL_HOST": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_EMAIL_PORT": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_EMAIL_USERNAME": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_EMAIL_PASSWORD": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_EMAIL_FROM": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SMS_ACCOUNTSID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SMS_AUTHTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SMS_FROMNUMBER": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SLACK_WEBHOOKURL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TELEGRAM_CHATID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_DISCORD_WEBHOOKURL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TEAMS_WEBHOOKURL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITTER_APIKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITTER_APISECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_LINKEDIN_ORGANIZATIONID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_WHATSAPP_FROMNUMBER": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_NOTION_APIKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_NOTION_DATABASEID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITCH_CLIENTID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITCH_CLIENTSECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITCH_BROADCASTERID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_YOUTUBE_CLIENTID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_YOUTUBE_LIVECHATID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_INSTAGRAM_USERID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SENDGRID_APIKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SENDGRID_FROMEMAIL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TIKTOKSHOP_SHOPID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_FACEBOOK_PAGEID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_AWSSNS_REGION": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_MAILGUN_APIKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_MAILGUN_DOMAIN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_MAILGUN_FROMEMAIL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_PAGERDUTY_APIKEY": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add notify-hub --env NOTIFY_CHANNELS_EMAIL_HOST='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_EMAIL_PORT='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_EMAIL_USERNAME='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_EMAIL_PASSWORD='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_EMAIL_FROM='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_SMS_ACCOUNTSID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_SMS_AUTHTOKEN='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_SMS_FROMNUMBER='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_SLACK_WEBHOOKURL='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TELEGRAM_CHATID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_DISCORD_WEBHOOKURL='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TEAMS_WEBHOOKURL='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TWITTER_APIKEY='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TWITTER_APISECRET='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_LINKEDIN_ORGANIZATIONID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_WHATSAPP_FROMNUMBER='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_NOTION_APIKEY='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_NOTION_DATABASEID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TWITCH_CLIENTID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TWITCH_CLIENTSECRET='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TWITCH_BROADCASTERID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_YOUTUBE_CLIENTID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_YOUTUBE_LIVECHATID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_INSTAGRAM_USERID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_SENDGRID_APIKEY='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_SENDGRID_FROMEMAIL='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_TIKTOKSHOP_SHOPID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_FACEBOOK_PAGEID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_AWSSNS_REGION='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_MAILGUN_APIKEY='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_MAILGUN_DOMAIN='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_MAILGUN_FROMEMAIL='ใส่ค่าของคุณ' --env NOTIFY_CHANNELS_PAGERDUTY_APIKEY='ใส่ค่าของคุณ' -- docker run -i --rm -e NOTIFY_CHANNELS_EMAIL_HOST -e NOTIFY_CHANNELS_EMAIL_PORT -e NOTIFY_CHANNELS_EMAIL_USERNAME -e NOTIFY_CHANNELS_EMAIL_PASSWORD -e NOTIFY_CHANNELS_EMAIL_FROM -e NOTIFY_CHANNELS_SMS_ACCOUNTSID -e NOTIFY_CHANNELS_SMS_AUTHTOKEN -e NOTIFY_CHANNELS_SMS_FROMNUMBER -e NOTIFY_CHANNELS_SLACK_WEBHOOKURL -e NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN -e NOTIFY_CHANNELS_TELEGRAM_CHATID -e NOTIFY_CHANNELS_DISCORD_WEBHOOKURL -e NOTIFY_CHANNELS_TEAMS_WEBHOOKURL -e NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL -e NOTIFY_CHANNELS_TWITTER_APIKEY -e NOTIFY_CHANNELS_TWITTER_APISECRET -e NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN -e NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET -e NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN -e NOTIFY_CHANNELS_LINKEDIN_ORGANIZATIONID -e NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID -e NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN -e NOTIFY_CHANNELS_WHATSAPP_FROMNUMBER -e NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS -e NOTIFY_CHANNELS_NOTION_APIKEY -e NOTIFY_CHANNELS_NOTION_DATABASEID -e NOTIFY_CHANNELS_TWITCH_CLIENTID -e NOTIFY_CHANNELS_TWITCH_CLIENTSECRET -e NOTIFY_CHANNELS_TWITCH_BROADCASTERID -e NOTIFY_CHANNELS_YOUTUBE_CLIENTID -e NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET -e NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN -e NOTIFY_CHANNELS_YOUTUBE_LIVECHATID -e NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN -e NOTIFY_CHANNELS_INSTAGRAM_USERID -e NOTIFY_CHANNELS_SENDGRID_APIKEY -e NOTIFY_CHANNELS_SENDGRID_FROMEMAIL -e NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY -e NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET -e NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN -e NOTIFY_CHANNELS_TIKTOKSHOP_SHOPID -e NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN -e NOTIFY_CHANNELS_FACEBOOK_PAGEID -e NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID -e NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY -e NOTIFY_CHANNELS_AWSSNS_REGION -e NOTIFY_CHANNELS_MAILGUN_APIKEY -e NOTIFY_CHANNELS_MAILGUN_DOMAIN -e NOTIFY_CHANNELS_MAILGUN_FROMEMAIL -e NOTIFY_CHANNELS_PAGERDUTY_APIKEY ghcr.io/gabrielbbaldez/notify-hub:1.1.0เติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"notify-hub": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"NOTIFY_CHANNELS_EMAIL_HOST",
"-e",
"NOTIFY_CHANNELS_EMAIL_PORT",
"-e",
"NOTIFY_CHANNELS_EMAIL_USERNAME",
"-e",
"NOTIFY_CHANNELS_EMAIL_PASSWORD",
"-e",
"NOTIFY_CHANNELS_EMAIL_FROM",
"-e",
"NOTIFY_CHANNELS_SMS_ACCOUNTSID",
"-e",
"NOTIFY_CHANNELS_SMS_AUTHTOKEN",
"-e",
"NOTIFY_CHANNELS_SMS_FROMNUMBER",
"-e",
"NOTIFY_CHANNELS_SLACK_WEBHOOKURL",
"-e",
"NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN",
"-e",
"NOTIFY_CHANNELS_TELEGRAM_CHATID",
"-e",
"NOTIFY_CHANNELS_DISCORD_WEBHOOKURL",
"-e",
"NOTIFY_CHANNELS_TEAMS_WEBHOOKURL",
"-e",
"NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL",
"-e",
"NOTIFY_CHANNELS_TWITTER_APIKEY",
"-e",
"NOTIFY_CHANNELS_TWITTER_APISECRET",
"-e",
"NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET",
"-e",
"NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_LINKEDIN_ORGANIZATIONID",
"-e",
"NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID",
"-e",
"NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN",
"-e",
"NOTIFY_CHANNELS_WHATSAPP_FROMNUMBER",
"-e",
"NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS",
"-e",
"NOTIFY_CHANNELS_NOTION_APIKEY",
"-e",
"NOTIFY_CHANNELS_NOTION_DATABASEID",
"-e",
"NOTIFY_CHANNELS_TWITCH_CLIENTID",
"-e",
"NOTIFY_CHANNELS_TWITCH_CLIENTSECRET",
"-e",
"NOTIFY_CHANNELS_TWITCH_BROADCASTERID",
"-e",
"NOTIFY_CHANNELS_YOUTUBE_CLIENTID",
"-e",
"NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET",
"-e",
"NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN",
"-e",
"NOTIFY_CHANNELS_YOUTUBE_LIVECHATID",
"-e",
"NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_INSTAGRAM_USERID",
"-e",
"NOTIFY_CHANNELS_SENDGRID_APIKEY",
"-e",
"NOTIFY_CHANNELS_SENDGRID_FROMEMAIL",
"-e",
"NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY",
"-e",
"NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET",
"-e",
"NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_TIKTOKSHOP_SHOPID",
"-e",
"NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_FACEBOOK_PAGEID",
"-e",
"NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID",
"-e",
"NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY",
"-e",
"NOTIFY_CHANNELS_AWSSNS_REGION",
"-e",
"NOTIFY_CHANNELS_MAILGUN_APIKEY",
"-e",
"NOTIFY_CHANNELS_MAILGUN_DOMAIN",
"-e",
"NOTIFY_CHANNELS_MAILGUN_FROMEMAIL",
"-e",
"NOTIFY_CHANNELS_PAGERDUTY_APIKEY",
"ghcr.io/gabrielbbaldez/notify-hub:1.1.0"
],
"env": {
"NOTIFY_CHANNELS_EMAIL_HOST": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_EMAIL_PORT": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_EMAIL_USERNAME": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_EMAIL_PASSWORD": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_EMAIL_FROM": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SMS_ACCOUNTSID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SMS_AUTHTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SMS_FROMNUMBER": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SLACK_WEBHOOKURL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TELEGRAM_CHATID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_DISCORD_WEBHOOKURL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TEAMS_WEBHOOKURL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITTER_APIKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITTER_APISECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_LINKEDIN_ORGANIZATIONID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_WHATSAPP_FROMNUMBER": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_NOTION_APIKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_NOTION_DATABASEID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITCH_CLIENTID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITCH_CLIENTSECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITCH_BROADCASTERID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_YOUTUBE_CLIENTID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_YOUTUBE_LIVECHATID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_INSTAGRAM_USERID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SENDGRID_APIKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SENDGRID_FROMEMAIL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TIKTOKSHOP_SHOPID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_FACEBOOK_PAGEID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_AWSSNS_REGION": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_MAILGUN_APIKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_MAILGUN_DOMAIN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_MAILGUN_FROMEMAIL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_PAGERDUTY_APIKEY": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"notify-hub": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"NOTIFY_CHANNELS_EMAIL_HOST",
"-e",
"NOTIFY_CHANNELS_EMAIL_PORT",
"-e",
"NOTIFY_CHANNELS_EMAIL_USERNAME",
"-e",
"NOTIFY_CHANNELS_EMAIL_PASSWORD",
"-e",
"NOTIFY_CHANNELS_EMAIL_FROM",
"-e",
"NOTIFY_CHANNELS_SMS_ACCOUNTSID",
"-e",
"NOTIFY_CHANNELS_SMS_AUTHTOKEN",
"-e",
"NOTIFY_CHANNELS_SMS_FROMNUMBER",
"-e",
"NOTIFY_CHANNELS_SLACK_WEBHOOKURL",
"-e",
"NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN",
"-e",
"NOTIFY_CHANNELS_TELEGRAM_CHATID",
"-e",
"NOTIFY_CHANNELS_DISCORD_WEBHOOKURL",
"-e",
"NOTIFY_CHANNELS_TEAMS_WEBHOOKURL",
"-e",
"NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL",
"-e",
"NOTIFY_CHANNELS_TWITTER_APIKEY",
"-e",
"NOTIFY_CHANNELS_TWITTER_APISECRET",
"-e",
"NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET",
"-e",
"NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_LINKEDIN_ORGANIZATIONID",
"-e",
"NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID",
"-e",
"NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN",
"-e",
"NOTIFY_CHANNELS_WHATSAPP_FROMNUMBER",
"-e",
"NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS",
"-e",
"NOTIFY_CHANNELS_NOTION_APIKEY",
"-e",
"NOTIFY_CHANNELS_NOTION_DATABASEID",
"-e",
"NOTIFY_CHANNELS_TWITCH_CLIENTID",
"-e",
"NOTIFY_CHANNELS_TWITCH_CLIENTSECRET",
"-e",
"NOTIFY_CHANNELS_TWITCH_BROADCASTERID",
"-e",
"NOTIFY_CHANNELS_YOUTUBE_CLIENTID",
"-e",
"NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET",
"-e",
"NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN",
"-e",
"NOTIFY_CHANNELS_YOUTUBE_LIVECHATID",
"-e",
"NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_INSTAGRAM_USERID",
"-e",
"NOTIFY_CHANNELS_SENDGRID_APIKEY",
"-e",
"NOTIFY_CHANNELS_SENDGRID_FROMEMAIL",
"-e",
"NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY",
"-e",
"NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET",
"-e",
"NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_TIKTOKSHOP_SHOPID",
"-e",
"NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN",
"-e",
"NOTIFY_CHANNELS_FACEBOOK_PAGEID",
"-e",
"NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID",
"-e",
"NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY",
"-e",
"NOTIFY_CHANNELS_AWSSNS_REGION",
"-e",
"NOTIFY_CHANNELS_MAILGUN_APIKEY",
"-e",
"NOTIFY_CHANNELS_MAILGUN_DOMAIN",
"-e",
"NOTIFY_CHANNELS_MAILGUN_FROMEMAIL",
"-e",
"NOTIFY_CHANNELS_PAGERDUTY_APIKEY",
"ghcr.io/gabrielbbaldez/notify-hub:1.1.0"
],
"env": {
"NOTIFY_CHANNELS_EMAIL_HOST": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_EMAIL_PORT": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_EMAIL_USERNAME": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_EMAIL_PASSWORD": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_EMAIL_FROM": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SMS_ACCOUNTSID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SMS_AUTHTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SMS_FROMNUMBER": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SLACK_WEBHOOKURL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TELEGRAM_CHATID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_DISCORD_WEBHOOKURL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TEAMS_WEBHOOKURL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITTER_APIKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITTER_APISECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_LINKEDIN_ORGANIZATIONID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_WHATSAPP_FROMNUMBER": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_NOTION_APIKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_NOTION_DATABASEID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITCH_CLIENTID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITCH_CLIENTSECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TWITCH_BROADCASTERID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_YOUTUBE_CLIENTID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_YOUTUBE_LIVECHATID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_INSTAGRAM_USERID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SENDGRID_APIKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_SENDGRID_FROMEMAIL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_TIKTOKSHOP_SHOPID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_FACEBOOK_PAGEID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_AWSSNS_REGION": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_MAILGUN_APIKEY": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_MAILGUN_DOMAIN": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_MAILGUN_FROMEMAIL": "ใส่ค่าของคุณ",
"NOTIFY_CHANNELS_PAGERDUTY_APIKEY": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
NOTIFY_CHANNELS_EMAIL_HOST envNOTIFY_CHANNELS_EMAIL_PORT envNOTIFY_CHANNELS_EMAIL_FROM envNOTIFY_CHANNELS_SMS_FROMNUMBER envNOTIFY_CHANNELS_TELEGRAM_CHATID envNOTIFY_CHANNELS_LINKEDIN_ORGANIZATIONID envNOTIFY_CHANNELS_WHATSAPP_FROMNUMBER envNOTIFY_CHANNELS_NOTION_DATABASEID envNOTIFY_CHANNELS_TWITCH_BROADCASTERID envNOTIFY_CHANNELS_YOUTUBE_LIVECHATID envNOTIFY_CHANNELS_INSTAGRAM_USERID envNOTIFY_CHANNELS_SENDGRID_FROMEMAIL envNOTIFY_CHANNELS_TIKTOKSHOP_SHOPID envNOTIFY_CHANNELS_FACEBOOK_PAGEID envNOTIFY_CHANNELS_AWSSNS_REGION envNOTIFY_CHANNELS_MAILGUN_DOMAIN envNOTIFY_CHANNELS_MAILGUN_FROMEMAIL envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub GabrielBBaldez ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: NOTIFY_CHANNELS_EMAIL_USERNAME, NOTIFY_CHANNELS_EMAIL_PASSWORD, NOTIFY_CHANNELS_SMS_ACCOUNTSID, NOTIFY_CHANNELS_SMS_AUTHTOKEN, NOTIFY_CHANNELS_SLACK_WEBHOOKURL, NOTIFY_CHANNELS_TELEGRAM_BOTTOKEN, NOTIFY_CHANNELS_DISCORD_WEBHOOKURL, NOTIFY_CHANNELS_TEAMS_WEBHOOKURL, NOTIFY_CHANNELS_GOOGLECHAT_WEBHOOKURL, NOTIFY_CHANNELS_TWITTER_APIKEY, NOTIFY_CHANNELS_TWITTER_APISECRET, NOTIFY_CHANNELS_TWITTER_ACCESSTOKEN, NOTIFY_CHANNELS_TWITTER_ACCESSTOKENSECRET, NOTIFY_CHANNELS_LINKEDIN_ACCESSTOKEN, NOTIFY_CHANNELS_WHATSAPP_ACCOUNTSID, NOTIFY_CHANNELS_WHATSAPP_AUTHTOKEN, NOTIFY_CHANNELS_PUSH_FIREBASECREDENTIALS, NOTIFY_CHANNELS_NOTION_APIKEY, NOTIFY_CHANNELS_TWITCH_CLIENTID, NOTIFY_CHANNELS_TWITCH_CLIENTSECRET, NOTIFY_CHANNELS_YOUTUBE_CLIENTID, NOTIFY_CHANNELS_YOUTUBE_CLIENTSECRET, NOTIFY_CHANNELS_YOUTUBE_REFRESHTOKEN, NOTIFY_CHANNELS_INSTAGRAM_ACCESSTOKEN, NOTIFY_CHANNELS_SENDGRID_APIKEY, NOTIFY_CHANNELS_TIKTOKSHOP_APPKEY, NOTIFY_CHANNELS_TIKTOKSHOP_APPSECRET, NOTIFY_CHANNELS_TIKTOKSHOP_ACCESSTOKEN, NOTIFY_CHANNELS_FACEBOOK_PAGEACCESSTOKEN, NOTIFY_CHANNELS_AWSSNS_ACCESSKEYID, NOTIFY_CHANNELS_AWSSNS_SECRETACCESSKEY, NOTIFY_CHANNELS_MAILGUN_APIKEY, NOTIFY_CHANNELS_PAGERDUTY_APIKEY
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.1.0) เข้า registry 8 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Docker ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Claude Checkpoint MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
MCP server that checkpoints Claude Code session context to survive crashes and token limits
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
NotifyHub
One API. Every channel.
Unified notification library for Java and Spring Boot.
Website · Documentation · Getting Started
Stop writing different code for each notification channel. NotifyHub gives you a single fluent API to send notifications via Email, SMS, WhatsApp, Slack, Telegram, Discord, Microsoft Teams, Firebase Push, Webhooks, WebSocket, Google Chat, Twitter/X, LinkedIn, Notion, Twitch, YouTube, Instagram, SendGrid, TikTok Shop, Facebook, AWS SNS, Mailgun, PagerDuty, Kick — or any custom channel you create.
notify.to(user)
.via(EMAIL) .fallback(SMS) .priority(Priority.HIGH) .subject("Order confirmed") .template("order-confirmed") .param("orderId", order.getId()) .attach(invoicePdf) .send();
| | Problem | Without NotifyHub | With NotifyHub | |:-:|---------|------------------|----------------| | | Email | JavaMail config, MIME types, Session... | .via(EMAIL) | | 📱 | SMS | Twilio SDK, different API entirely | .via(SMS) | | | WhatsApp | Another Twilio setup, prefix logic | .via(WHATSAPP) | | | Slack | Webhook HTTP, JSON payload | .via(SLACK) | | | Telegram | Bot API, HTTP client setup | .via(TELEGRAM) | | | Discord | Webhook HTTP, JSON payload | .via(DISCORD) | | 👥 | Teams | Incoming Webhook, MessageCard JSON | .via(TEAMS) | | | Push | Firebase Admin SDK, credentials... | .via(PUSH) | | 🔗 | Webhook | Custom HTTP, payload template | .via(Channel.custom("pagerduty")) | | | WebSocket | Java WebSocket API, reconnect logic | .via(WEBSOCKET) | | | Google Chat | Webhook HTTP, JSON payload | .via(GOOGLE_CHAT) | | | Twitter/X | OAuth 1.0a, API v2 setup | .via(TWITTER) | | 💼 | LinkedIn | OAuth 2.0, REST API setup | .via(LINKEDIN) | | | Notion | Integration Token, API setup | .via(NOTION) | | | Twitch | OAuth 2.0, Twitch API setup | .via(TWITCH) | | | YouTube | YouTube Data API v3 setup | .via(YOUTUBE) | | | Instagram | Meta Graph API setup | .via(INSTAGRAM) | | 📧 | SendGrid | SendGrid API, webhook tracking | .via(Channel.custom("sendgrid")) | | | TikTok Shop | HMAC-SHA256, Shop API | .via(TIKTOK_SHOP) | | | Facebook | Graph API, Page tokens | .via(FACEBOOK) | | ☁️ | AWS SNS | AWS SDK, credentials, ARN | .via(Channel.custom("aws-sns")) | | | Mailgun | Mailgun API, domain setup | .via(Channel.custom("mailgun")) | | | PagerDuty | Events API v2, routing key | .via(Channel.custom("pagerduty")) | | | Kick | Public API, OAuth 2.1 | .via(KICK) | | | Multiple channels | Completely different code for each | Same fluent API | | Fallback | Manual try/catch chain | .fallback(SMS) | | Retry | Implement yourself | Built-in exponential backoff | | Async | Thread pools, CompletableFuture | .sendAsync() | | Scheduling | ScheduledExecutor, timer logic | .schedule(Duration.ofMinutes(30)) | | Templates | Each channel has its own engine | One template, all channels | | i18n | Manual locale resolution | .locale(Locale.PT_BR) | | Rate limiting | Token bucket from scratch | Config-driven per-channel | | Tracking | Build your own delivery log | Built-in receipts + JPA | | Dead letters | Lost in the void | Auto-captured in DLQ | | Deduplication | Track sent messages yourself | Built-in content hash / explicit key | | Template versions | Manage files manually | .templateVersion("v2") + A/B test | | Batch | Loop and pray | .toAll(users).send() | | Monitoring | Wire Micrometer yourself | Auto-configured counters | | Health checks | Write an Actuator indicator | Auto-configured | | Admin UI | Build your own dashboard | Built-in /notify-admin | | Circuit breaker | Implement yourself per channel | Built-in per-channel circuit breaker | | Orchestration | Manual escalation logic | .orchestrate().first(EMAIL).ifNoOpen(24h).then(PUSH) | | A/B testing | External service + glue code | Built-in .abTest("exp").variant(...).split(50,50) | | Testing | Mock everything | TestNotifyHub captures all sends | | New channel | Build from scratch | Implement one interface |
<dependency>
io.github.gabrielbbaldez notify-spring-boot-starter 1.0.0
Need extra channels? Add optional modules:
`xml
io.github.gabrielbbaldez
notify-sms
1.0.0
io.github.gabrielbbaldez
notify-slack
1.0.0
io.github.gabrielbbaldez
notify-websocket
1.0.0
`
application.ymlnotify:
channels: email: host: smtp.gmail.com port: 587 username: ${GMAIL_USER} password: ${GMAIL_PASS} from: noreply@myapp.com from-name: MyApp tls: true retry: max-attempts: 3 strategy: exponential tracking: enabled: true
@Service
public class OrderService {
private final NotifyHub notify;
public OrderService(NotifyHub notify) { this.notify = notify; }
public void confirmOrder(Order order) { notify.to(order.getCustomer()) .via(Channel.EMAIL) .subject("Order confirmed!") .template("order-confirmed") .param("customerName", order.getCustomer().getName()) .param("orderId", order.getId()) .param("total", order.getTotal()) .send(); } }
That's it. Three steps.
If the primary channel fails, automatically try the next one:
notify.to(user)
.via(Channel.WHATSAPP) .fallback(Channel.SMS) .fallback(Channel.EMAIL) .template("payment-reminder") .param("amount", "R$ 150,00") .send(); // Tries WhatsApp -> SMS -> Email
Send through ALL channels simultaneously:
notify.to(user)
.via(Channel.EMAIL) .via(Channel.SLACK) .via(Channel.TEAMS) .subject("Security Alert") .content("Login from a new device detected") .sendAll();
Send notifications without blocking:
// Fire and forget
notify.to(user) .via(Channel.EMAIL) .template("welcome") .sendAsync();
// Or wait for result CompletableFuture future = notify.to(user) .via(Channel.EMAIL) .via(Channel.SLACK) .content("Deploy complete!") .sendAllAsync();
future.thenRun(() -> log.info("All notifications sent!"));
Automatic retry with exponential or fixed backoff:
# application.yml (global)
notify: retry: max-attempts: 3 strategy: exponential # waits 1s, 2s, 4s...
// Or per-notification
notify.to(user) .via(Channel.EMAIL) .retry(3) .template("invoice") .send();
Create templates in src/main/resources/templates/notify/:
order-confirmed.html (auto-used for email):
<h1>Hello, {{customerName}}!</h1>
Your order #{{orderId}} has been confirmed. Total: {{total}}
order-confirmed.txt (auto-us
ตัดมาแค่ช่วงต้น อ่านต่อใน repo