Sends messages to Google Chat spaces via webhooks, with automatic conversion of Markdown to Cards V2 format, image URL validation, and fallback to plain text messaging.
Click on "Install 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., "@Google Chat Webhook MCP Serversend 'Build completed successfully! โ ' to the team channel"
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.
Google Chat Webhook MCP Server
An MCP (Model Context Protocol) server that sends messages to Google Chat via webhooks. Automatically converts Markdown to Google Chat Cards V2 format with image validation, structured logging, and fallback handling.
Features
๐ MCP Protocol Support: Integrates with Claude Code, GitHub Copilot, and other MCP clients
๏ฟฝ MCP Protocol Support: Integrates with Claude Code, GitHub Copilot, and other MCP clients
๏ฟฝ๐ Markdown โ Cards V2 Auto-conversion: Supports headers, lists, code blocks, tables, images, and more
๐ผ๏ธ Image URL Validation: Validates with HEAD requests (HTTP status, Content-Type, size)
๐ Auto Fallback: Automatically falls back to text when Cards V2 fails
๐ Structured Logging: JSON format with 30-day retention
โ Test Automation: Snapshot tests, integration tests, CI/CD pipeline
Installation
npm (Recommended)
From Source (Development)
Google Chat Webhook Setup
Before configuring the MCP server, create a Google Chat Webhook URL:
Open your Google Chat space
Menu โ "Apps & integrations" โ "Manage webhooks"
Click "Add webhook"
Enter a name and copy the URL
Use it in the configuration below
MCP Client Configuration
1. Claude Code
Config File Location
Windows:
%USERPROFILE%\.claude.jsonmacOS/Linux:
~/.claude.json
Note: Claude Desktop uses different paths:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
npm Installation
Source Installation
โ ๏ธ Note: Use \\ or / for Windows paths (e.g., C:/path/to/...)
Configuration Scopes
Claude Code supports three configuration scopes:
User Scope (Global):
~/.claude.json- Available across all projectsProject Scope (Shared):
.mcp.jsonin project root - Version-controlled, team-sharedLocal Scope (Private): Project-specific, personal settings
Priority: Local > Project > User
Project-Scoped Configuration (.mcp.json)
For team-shared MCP servers, create .mcp.json in your project root:
Benefits:
โ Version-controlled with Git
โ Team-shared configuration
โ Environment variable support:
${VAR}or${VAR:-default}โ Project-specific MCP servers
Environment Variables: Each team member can set their own webhook URL:
How to Apply
User-scoped configuration (~/.claude.json):
Edit
~/.claude.json(or%USERPROFILE%\.claude.jsonon Windows)Save the file
Restart Claude Code if already running
Project-scoped configuration (.mcp.json):
Create
.mcp.jsonin project rootSet environment variables for sensitive data
Commit
.mcp.jsonto version controlUse commands like "Send a message to Google Chat"
2. GitHub Copilot (VS Code)
VS Code GitHub Copilot supports MCP through agent mode. Configure MCP servers in workspace or user settings.
Configuration File Locations
Choose one of the following:
User Settings:
~/.vscode/settings.jsonor%APPDATA%\Code\User\settings.json(Windows)Workspace Settings:
.vscode/settings.jsonin your project rootClaude Code Config (Auto-import): Copy from
~/.claude.json
Configuration (mcp.json format)
Add to settings.json:
Features
Agent Mode Integration: MCP tools available in agent workflow
Per-Session Tool Selection: Choose which tools to enable per session
STDIO & SSE Support: Both transport types supported
Debugging: Restart commands and output logging built-in
Using with Agent Mode
Open GitHub Copilot Chat in VS Code
Enable agent mode (if not already enabled)
Start a conversation - Copilot will automatically access MCP tools
Tools require approval before execution
Example:
๐ Note: GitHub Copilot's MCP support includes agent mode, allowing sophisticated workflows. Make sure you're using the latest VS Code and GitHub Copilot extension.
3. Other MCP Clients
Works with any MCP-compatible client:
Usage
MCP Tools (3 Tools)
Available tools in Claude Code or other MCP clients:
1. send_google_chat_text
Send simple text messages
Example (Claude Code):
Parameters:
2. send_google_chat_cards_v2
Send Cards V2 format directly (advanced users)
Parameters:
3. send_google_chat_markdown โญ Recommended
Convert Markdown to Cards V2 and send
Example (Claude Code):
Parameters:
Options:
cardTitle: Title shown at the top of the card (optional)fallbackToText: Auto-send as text on conversion failure (default: false)
Claude Code Usage Example
After setup, Claude will automatically use MCP tools when you chat naturally:
๐ค User:
"Send a project status update to Google Chat. Show 3 completed tasks and 2 in-progress tasks as a markdown list."
๐ค Claude:
(Automatically calls
send_google_chat_markdowntool)I've sent the message to Google Chat. The project status has been updated.
Supported Markdown Syntax
Markdown written in Claude or MCP clients is automatically converted to Google Chat Cards V2.
Syntax | Markdown Example | Google Chat Rendering |
Headers |
| Bold with size differences |
Bold |
| bold |
Italic |
| italic |
Inline Code |
|
|
Code Block |
| Syntax-highlighted box |
Ordered List |
| 1. First 2. Second |
Unordered List |
| โข Item |
Nested List |
| ใโข nested (Em space) |
Table |
| Monospace table |
Image |
| Image widget (after validation) |
Link |
| Clickable link |
Horizontal Rule |
| Divider |
Blockquote |
| Indented + gray text |
Example Markdown:
See documentation for details.
.env File (Development)
Create .env in project root:
Limitations
Google Chat API Constraints
Item | Limit | Workaround |
Image Protocol | HTTPS only | HTTP URLs replaced with text links |
Image Size | Max 5MB | Show as link on validation failure |
Image Auth | Public URLs only | No access if auth required |
Content-Type |
| HTML pages rejected |
Markdown Support | Limited | Unsupported syntax approximated |
Markdown Conversion Limitations
โ Fully Supported:
Headers (H1~H6)
Bold, italic, inline code
Ordered/unordered lists (up to 3 levels)
Code blocks (syntax highlighting)
Tables (monospace)
Links, images
โ ๏ธ Partial Support:
Complex nesting โ Simplified
HTML tags โ Converted to text
Blockquotes โ Shown as indents
โ Not Supported:
Footnotes
Definition lists
Math formulas (LaTeX)
Task checkboxes (
- [ ],- [x])Emoji shortcodes (
:smile:, Unicode emojis work)
FAQ
Q: Images not displaying
A: Image validation failure causes:
HTTPS only (HTTP not supported)
File size: Must be under 5MB
Public access: Must be accessible without auth
Content-Type: Response header must be
image/*
Debug:
Q: Cards V2 conversion fails
A: Use fallbackToText option:
Check logs for details:
Q: Too many log files
A: Adjust with environment variables:
Q: Multiple Google Chat spaces
A: Register separate MCP server instances:
License
MIT License - LICENSE
Links
Korean:
MCP (Model Context Protocol) ์๋ฒ๋ก Google Chat ์นํ ์ ํตํด ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค. Markdown์ Google Chat Cards V2 ํ์์ผ๋ก ์๋ ๋ณํํ๋ฉฐ, ์ด๋ฏธ์ง ๊ฒ์ฆ, ์๋ ๋ก๊น , ํด๋ฐฑ ์ฒ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
๐ MCP ํ๋กํ ์ฝ ์ง์: Claude Code, GitHub Copilot ๋ฑ๊ณผ ํตํฉ
๐ Markdown โ Cards V2 ์๋ ๋ณํ: ํค๋, ๋ฆฌ์คํธ, ์ฝ๋๋ธ๋ก, ํ, ์ด๋ฏธ์ง ๋ฑ ์ง์
๐ผ๏ธ ์ด๋ฏธ์ง URL ๊ฒ์ฆ: HEAD ์์ฒญ์ผ๋ก ์ ํจ์ฑ ํ์ธ (HTTP ์ํ, Content-Type, ํฌ๊ธฐ)
๐ ์๋ ํด๋ฐฑ: Cards V2 ์คํจ ์ ํ ์คํธ๋ก ์๋ ์ ํ
๐ ๊ตฌ์กฐํ๋ ๋ก๊น : JSON ํ์, 30์ผ ์๋ ๋ณด๊ด
โ ํ ์คํธ ์๋ํ: ์ค๋ ์ท ํ ์คํธ, ํตํฉ ํ ์คํธ, CI/CD ํ์ดํ๋ผ์ธ
์ค์น
npm ์ค์น (๊ถ์ฅ)
์์ค ์ค์น (๊ฐ๋ฐ์ฉ)
Google Chat Webhook URL ์์ฑ
MCP ์๋ฒ ์ค์ ์ ์ ๋จผ์ Google Chat Webhook URL์ ์์ฑํด์ผ ํฉ๋๋ค:
Google Chat ์คํ์ด์ค ์ด๊ธฐ
์๋จ ๋ฉ๋ด โ "์ฑ ๋ฐ ํตํฉ" โ "Webhook ๊ด๋ฆฌ"
"Webhook ์ถ๊ฐ" ํด๋ฆญ
์ด๋ฆ ์ ๋ ฅ ํ URL ๋ณต์ฌ
์๋ ์ค์ ์์ ์ฌ์ฉ
MCP ํด๋ผ์ด์ธํธ ์ค์
1. Claude Code
์ค์ ํ์ผ ์์น
Windows:
%USERPROFILE%\.claude.jsonmacOS/Linux:
~/.claude.json
์ฐธ๊ณ : Claude Desktop์ ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
npm ์ค์น ์
์์ค ์ค์น ์
โ ๏ธ ์ฃผ์: Windows ๊ฒฝ๋ก๋ \\ ๋๋ / ์ฌ์ฉ (์: C:/path/to/...)
์ค์ ์ค์ฝํ
Claude Code๋ 3๊ฐ์ง ์ค์ ์ค์ฝํ๋ฅผ ์ง์ํฉ๋๋ค:
User Scope (์ ์ญ):
~/.claude.json- ๋ชจ๋ ํ๋ก์ ํธ์์ ์ฌ์ฉ ๊ฐ๋ฅProject Scope (๊ณต์ ): ํ๋ก์ ํธ ๋ฃจํธ์
.mcp.json- ๋ฒ์ ๊ด๋ฆฌ, ํ ๊ณต์ ๊ฐ๋ฅLocal Scope (๊ฐ์ธ): ํ๋ก์ ํธ๋ณ ๊ฐ์ธ ์ค์
์ฐ์ ์์: Local > Project > User
ํ๋ก์ ํธ ์์ค ์ค์ (.mcp.json)
ํ๊ณผ ๊ณต์ ํ MCP ์๋ฒ ์ค์ ์ ํ๋ก์ ํธ ๋ฃจํธ์ .mcp.json ํ์ผ์ ์์ฑํ์ธ์:
์ฅ์ :
โ Git์ผ๋ก ๋ฒ์ ๊ด๋ฆฌ ๊ฐ๋ฅ
โ ํ๊ณผ ์ค์ ๊ณต์
โ ํ๊ฒฝ ๋ณ์ ์ง์:
${VAR}๋๋${VAR:-๊ธฐ๋ณธ๊ฐ}โ ํ๋ก์ ํธ๋ณ MCP ์๋ฒ ์ค์
ํ๊ฒฝ ๋ณ์ ์ค์ : ๊ฐ ํ์์ด ์์ ์ Webhook URL์ ์ค์ ํ ์ ์์ต๋๋ค:
์ ์ฉ ๋ฐฉ๋ฒ
User ์์ค ์ค์ (~/.claude.json):
~/.claude.jsonํธ์ง (Windows๋%USERPROFILE%\.claude.json)ํ์ผ ์ ์ฅ
Claude Code๊ฐ ์คํ ์ค์ด๋ฉด ์ฌ์์
Project ์์ค ์ค์ (.mcp.json):
ํ๋ก์ ํธ ๋ฃจํธ์
.mcp.json์์ฑ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ํ๊ฒฝ ๋ณ์๋ก ์ค์
.mcp.json์ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ์ปค๋ฐ"Send a message to Google Chat" ๊ฐ์ ๋ช ๋ น ์ฌ์ฉ
2. GitHub Copilot (VS Code)
VS Code GitHub Copilot์ ์์ด์ ํธ ๋ชจ๋๋ฅผ ํตํด MCP๋ฅผ ์ง์ํฉ๋๋ค. ์ํฌ์คํ์ด์ค ๋๋ ์ฌ์ฉ์ ์ค์ ์์ MCP ์๋ฒ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ค์ ํ์ผ ์์น
๋ค์ ์ค ํ๋๋ฅผ ์ ํ:
์ฌ์ฉ์ ์ค์ :
~/.vscode/settings.json๋๋%APPDATA%\Code\User\settings.json(Windows)์ํฌ์คํ์ด์ค ์ค์ : ํ๋ก์ ํธ ๋ฃจํธ์
.vscode/settings.jsonClaude Code ์ค์ (์๋ ๊ฐ์ ธ์ค๊ธฐ):
~/.claude.json์์ ๋ณต์ฌ
์ค์ ๋ฐฉ๋ฒ (mcp.json ํ์)
settings.json์ ์ถ๊ฐ:
๊ธฐ๋ฅ
์์ด์ ํธ ๋ชจ๋ ํตํฉ: ์์ด์ ํธ ์ํฌํ๋ก์ฐ์์ MCP ๋๊ตฌ ์ฌ์ฉ ๊ฐ๋ฅ
์ธ์ ๋ณ ๋๊ตฌ ์ ํ: ์ธ์ ๋ง๋ค ํ์ฑํํ ๋๊ตฌ ์ ํ ๊ฐ๋ฅ
STDIO & SSE ์ง์: ๋ ์ ์ก ๋ฐฉ์ ๋ชจ๋ ์ง์
๋๋ฒ๊น : ์ฌ์์ ๋ช ๋ น ๋ฐ ์ถ๋ ฅ ๋ก๊น ๋ด์ฅ
์์ด์ ํธ ๋ชจ๋์์ ์ฌ์ฉํ๊ธฐ
VS Code์์ GitHub Copilot ์ฑํ ์ด๊ธฐ
์์ด์ ํธ ๋ชจ๋ ํ์ฑํ (๊ธฐ๋ณธ ํ์ฑํ๋ ๊ฒฝ์ฐ๋ ์์)
๋ํ ์์ - Copilot์ด ์๋์ผ๋ก MCP ๋๊ตฌ์ ์ ๊ทผ
๋๊ตฌ ์คํ ์ ์น์ธ ํ์
์์:
๐ ์ฐธ๊ณ : GitHub Copilot์ MCP ์ง์์ ์์ด์ ํธ ๋ชจ๋๋ฅผ ํฌํจํ์ฌ ์ ๊ตํ ์ํฌํ๋ก์ฐ๋ฅผ ์ง์ํฉ๋๋ค. ์ต์ ๋ฒ์ ์ VS Code์ GitHub Copilot ํ์ฅ์ ์ฌ์ฉํ์ธ์.
3. ๊ธฐํ MCP ํด๋ผ์ด์ธํธ
MCP ํ๋กํ ์ฝ์ ์ง์ํ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค:
Send "Hello from Claude!" to Google Chat
2. send_google_chat_cards_v2
Cards V2 ํ์์ผ๋ก ์ง์ ์ ์ก (๊ณ ๊ธ ์ฌ์ฉ์์ฉ)
ํ๋ผ๋ฏธํฐ:
3. send_google_chat_markdown โญ ์ถ์ฒ
Markdown์ Cards V2๋ก ์๋ ๋ณํํ์ฌ ์ ์ก
์์ (Claude Code):
ํ๋ผ๋ฏธํฐ:
์ต์ :
cardTitle: ์นด๋ ์๋จ์ ํ์๋ ์ ๋ชฉ (์ ํ)fallbackToText: ๋ณํ ์คํจ ์ ํ ์คํธ๋ก ์๋ ์ ์ก (๊ธฐ๋ณธ๊ฐ: false)
Claude Code ์ฌ์ฉ ์์
์ค์ ์๋ฃ ํ Claude์ ์์ฐ์ด๋ก ๋ํํ๋ฉด ์๋์ผ๋ก MCP ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค:
๐ค ์ฌ์ฉ์:
"Google Chat์ ํ๋ก์ ํธ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ๋ณด๋ด์ค. ์๋ฃ๋ ์์ 3๊ฐ, ์งํ ์ค์ธ ์์ 2๊ฐ๋ฅผ ๋งํฌ๋ค์ด ๋ฆฌ์คํธ๋ก ์์ฑํด์."
๐ค Claude:
(์๋์ผ๋ก
send_google_chat_markdown๋๊ตฌ ํธ์ถ)Google Chat์ ๋ฉ์์ง๋ฅผ ์ ์กํ์ต๋๋ค. ํ๋ก์ ํธ ์ํ๊ฐ ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
๐ค ์ฌ์ฉ์:
"๋ฐฉ๊ธ ๋ณด๋ธ ๋ฉ์์ง์ ์ฝ๋ ์์ ๋ ์ถ๊ฐํด์ค."
๐ค Claude:
(๋ค์ Markdown์ผ๋ก ๋ฉ์์ง ์์ฑ ๋ฐ ์ ์ก)
์ง์ํ๋ Markdown ๋ฌธ๋ฒ
Claude๋ MCP ํด๋ผ์ด์ธํธ์์ Markdown์ผ๋ก ๋ฉ์์ง๋ฅผ ์์ฑํ๋ฉด ์๋์ผ๋ก Google Chat Cards V2๋ก ๋ณํ๋ฉ๋๋ค.
๋ฌธ๋ฒ | Markdown ์์ | Google Chat ๋ ๋๋ง |
ํค๋ |
| ๊ตต์ ๊ธ์จ + ํฌ๊ธฐ ์ฐจ๋ฑ |
๊ตต๊ฒ |
| bold |
๊ธฐ์ธ์ |
| italic |
์ธ๋ผ์ธ ์ฝ๋ |
|
|
์ฝ๋๋ธ๋ก |
| ๊ตฌ๋ฌธ ๊ฐ์กฐ ๋ฐ์ค |
์์ ๋ฆฌ์คํธ |
| 1. First 2. Second |
๋น์์ ๋ฆฌ์คํธ |
| โข Item |
์ค์ฒฉ ๋ฆฌ์คํธ |
| ใโข nested (Em space) |
ํ |
| ๊ณ ์ ํญ ํฐํธ ํ |
์ด๋ฏธ์ง |
| ์ด๋ฏธ์ง ์์ ฏ (URL ๊ฒ์ฆ ํ) |
๋งํฌ |
| ํด๋ฆญ ๊ฐ๋ฅํ ๋งํฌ |
์ํ์ |
| ๊ตฌ๋ถ์ |
์ธ์ฉ๋ฌธ |
| ๋ค์ฌ์ฐ๊ธฐ + ํ์ ํ ์คํธ |
์์ Markdown:
์์ธํ ๋ด์ฉ์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
.env ํ์ผ (๊ฐ๋ฐ์ฉ)
ํ๋ก์ ํธ ๋ฃจํธ์ .env ํ์ผ ์์ฑ:
์์คํ ํ๊ฒฝ ๋ณ์
Windows (PowerShell):
Linux/macOS (Bash/Zsh):
๊ฐ๋ฐ
์ํคํ ์ฒ
๋ก๊น
๋ก๊ทธ ํ์ผ ๊ตฌ์กฐ
๋ก๊ทธ ํฌ๋งท (JSON)
๋ก๊ทธ ์ด๋ฒคํธ
message_sent: ๋ฉ์์ง ์ ์ก ์ฑ๊ณตfallback_used: ํด๋ฐฑ ์ฌ์ฉ (Cards V2 โ Text)image_validation_failed: ์ด๋ฏธ์ง ๊ฒ์ฆ ์คํจsend_failed: ์ ์ก ์คํจvalidation_failed: ๊ฒ์ฆ ์คํจ
๋ก๊ทธ ์ ๋ฆฌ
์๋ฒ ์์ ์ ์๋ ์ ๋ฆฌ (30์ผ ์ด์ ๋ก๊ทธ ์ญ์ )
24์๊ฐ๋ง๋ค ์๋ ์คํ
ํ๊ฒฝ ๋ณ์
LOG_RETENTION_DAYS๋ก ์ค์ ๊ฐ๋ฅ
์ ํ์ฌํญ
Google Chat API ์ ์ฝ์ฌํญ
ํญ๋ชฉ | ์ ํ | ๋์ ๋ฐฉ๋ฒ |
์ด๋ฏธ์ง ํ๋กํ ์ฝ | HTTPS๋ง ์ง์ | HTTP URL์ ํ ์คํธ ๋งํฌ๋ก ๋์ฒด |
์ด๋ฏธ์ง ํฌ๊ธฐ | ์ต๋ 5MB | ๊ฒ์ฆ ์คํจ ์ ๋งํฌ๋ก ํ์ |
์ด๋ฏธ์ง ์ธ์ฆ | ๊ณต๊ฐ URL๋ง ๊ฐ๋ฅ | ์ธ์ฆ ํ์ ์ ์ ๊ทผ ๋ถ๊ฐ |
Content-Type |
| HTML ํ์ด์ง ๋ฑ์ ๊ฑฐ๋ถ |
Markdown ์ง์ | ์ ํ์ | ๋ฏธ์ง์ ๋ฌธ๋ฒ์ ๊ทผ์ฌ์น๋ก ๋ณํ |
Markdown ๋ณํ ์ ์ฝ์ฌํญ
โ ์์ ์ง์:
ํค๋ (H1~H6)
๊ตต๊ฒ, ๊ธฐ์ธ์, ์ธ๋ผ์ธ ์ฝ๋
์์/๋น์์ ๋ฆฌ์คํธ (์ต๋ 3๋จ๊ณ ์ค์ฒฉ)
์ฝ๋๋ธ๋ก (๊ตฌ๋ฌธ ๊ฐ์กฐ)
ํ (๊ณ ์ ํญ ํฐํธ)
๋งํฌ, ์ด๋ฏธ์ง
โ ๏ธ ๋ถ๋ถ ์ง์:
๋ณต์กํ ์ค์ฒฉ ๊ตฌ์กฐ โ ๋จ์ํ๋จ
HTML ํ๊ทธ โ ํ ์คํธ๋ก ๋ณํ
์ธ์ฉ๋ฌธ โ ๋ค์ฌ์ฐ๊ธฐ๋ก ํํ
โ ๋ฏธ์ง์:
๊ฐ์ฃผ (footnotes)
์ ์ ๋ฆฌ์คํธ (definition lists)
์ํ ์์ (LaTeX)
์์ ์ฒดํฌ๋ฐ์ค (
- [ ],- [x])Emoji ๋จ์ถ์ฝ๋ (
:smile:๋ฑ, ์ ๋์ฝ๋ ์ด๋ชจ์ง๋ ๊ฐ๋ฅ)
์ฑ๋ฅ ๋ฐ ์ ํ
์ด๋ฏธ์ง ๊ฒ์ฆ ํ์์์: 5์ด
Webhook ์์ฒญ ํ์์์: 5์ด
๋ก๊ทธ ํ์ผ ํฌ๊ธฐ: ๋ฌด์ ํ (30์ผ ์๋ ์ญ์ )
๋์ ์์ฒญ: ์ ํ ์์ (Google Chat API ์ ํ ์ค์)
๋ณด์ ๊ณ ๋ ค์ฌํญ
โ ๏ธ Webhook URL์ ๋ฏผ๊ฐ ์ ๋ณด์ ๋๋ค:
Git์ ์ปค๋ฐํ์ง ๋ง์ธ์
๊ณต๊ฐ ์ ์ฅ์์ ๋ ธ์ถ ๊ธ์ง
์ ๊ธฐ์ ์ผ๋ก ์ฌ์์ฑ ๊ถ์ฅ
.envํ์ผ์.gitignore์ ํฌํจ ํ์
FAQ
Q: ์ด๋ฏธ์ง๊ฐ ํ์๋์ง ์์ต๋๋ค
A: ์ด๋ฏธ์ง URL ๊ฒ์ฆ ์คํจ ์์ธ:
HTTPS๋ง ์ง์ (HTTP๋ ๋ถ๊ฐ)
ํ์ผ ํฌ๊ธฐ: 5MB ์ดํ์ฌ์ผ ํจ
๊ณต๊ฐ ์ ๊ทผ: ์ธ์ฆ ์์ด ์ ๊ทผ ๊ฐ๋ฅํ URL์ด์ด์ผ ํจ
Content-Type: ์๋ต ํค๋๊ฐ
image/*์ฌ์ผ ํจ
๋๋ฒ๊น :
๊ฒ์ฆ ์คํจ ์ ๋์:
์ด๋ฏธ์ง๋ ํ ์คํธ ๋งํฌ๋ก ๋์ฒด๋จ
์:
โ ๏ธ ์ด๋ฏธ์ง ๋ก๋ ์คํจ: https://... (HTTP 404: Not Found)
Q: Cards V2 ๋ณํ์ด ์คํจํฉ๋๋ค
A: ๋ค์์ ํ์ธํ์ธ์:
fallbackToText ์ต์ ์ฌ์ฉ:
{ "markdown": "...", "fallbackToText": true }๋ณํ ์คํจ ์ ์๋์ผ๋ก ํ ์คํธ๋ก ์ ์ก๋ฉ๋๋ค.
๋ก๊ทธ์์ ์์ธ ํ์ธ:
cat logs/errors-YYYY-MM-DD.log์ง์ํ์ง ์๋ Markdown ๋ฌธ๋ฒ:
๊ฐ์ฃผ (footnotes)
์ ์ ๋ฆฌ์คํธ (definition lists)
๋ณต์กํ HTML ํ๊ทธ
Q: ๋ก๊ทธ ํ์ผ์ด ๋๋ฌด ๋ง์ด ์์ ๋๋ค
A: ํ๊ฒฝ ๋ณ์๋ก ์กฐ์ :
LOG_LEVEL=ERROR: ์๋ฌ๋ง ๊ธฐ๋กLOG_RETENTION_DAYS=7: 7์ผ๋ง ๋ณด๊ดLOG_ENABLE_CONSOLE=false: ์ฝ์ ์ถ๋ ฅ ๋นํ์ฑํ
Q: npx ์คํ ์ "command not found" ์ค๋ฅ
A: Node.js์ npm์ด ์ค์น๋์ด ์๋์ง ํ์ธ:
์ค์น๋์ง ์์๋ค๋ฉด:
Windows: https://nodejs.org/ ์์ ๋ค์ด๋ก๋
macOS:
brew install nodeLinux:
sudo apt install nodejs npm(Ubuntu/Debian)
Q: Webhook URL์ ์ด๋ป๊ฒ ์์ ํ๊ฒ ๊ด๋ฆฌํ๋์?
A:
ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ (์ค์ ํ์ผ์ ์ง์ ์ฐ์ง ๋ง์ธ์)
Git์ ์ปค๋ฐํ์ง ๋ง์ธ์ (.gitignore ํ์ธ)
์ ๊ธฐ์ ์ผ๋ก ์ฌ์์ฑ (์ ์ถ ์์ฌ ์)
Google Chat์์ Webhook ์ญ์ ๋ก ๋ฌดํจํ ๊ฐ๋ฅ
Q: ์ฌ๋ฌ Google Chat ์คํ์ด์ค์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์ถ์ต๋๋ค
A: ๊ฐ ์คํ์ด์ค๋ง๋ค ๋ค๋ฅธ MCP ์๋ฒ ์ธ์คํด์ค ๋ฑ๋ก:
Claude์์ "Send to team-a" ๋๋ "Send to team-b"๋ก ๊ตฌ๋ถํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
CI/CD
GitHub Actions๋ก ์๋ํ:
โ Node.js 18.x, 20.x ๋งคํธ๋ฆญ์ค ๋น๋
โ ESLint, ๋น๋, ํ ์คํธ
โ ์ค๋ ์ท ํ ์คํธ (12๊ฐ)
โ ํตํฉ ํ ์คํธ (master ๋ธ๋์น)
์ํฌํ๋ก์ฐ: .github/workflows/ci.yml
๊ธฐ์ฌ
์ด์์ PR์ ํ์ํฉ๋๋ค!
๋ผ์ด์ ์ค
MIT License - LICENSE