Kakao Bot模型上下文协议服务器
Model Context Protocol 的一种实现方式,该方式将 AI 代理连接到 Kakao 官方账号,使用户能够通过 Kakao Developers API 发送各种消息模板。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"mcp-kakao": {
"args": [
"--directory",
"your-project-path/kakao-bot-mcp-server",
"run",
"mcp-kakao"
],
"command": "uv"
}
}
}
该服务需要配置环境变量:KAKAO_API_KEY、KAKAO_CLIENT_SECRET
服务介绍
Kakao Bot MCP Server
Model Context Protocol (MCP) 服务器实现,集成了 Kakao Developers API 以将 AI 代理连接到 Kakao 官方账号。
这是一个 MCP 服务器的实现示例,展示了如何将 Kakao Developers API 集成到 AI 代理中。
[!NOTE]
该存储库并非由 Kakao 官方提供或维护。
可能不包含完整功能或全面支持。
对于 Kakao 而言,大多数 API 都需要包含商业注册的业务应用程序级别的权限管理,
因此个人使用可能会受到限制。
参考文档: https://developers.kakao.com/docs/latest/ko/kakaotalk-message/rest-api
示例
使用 claude desktop 运行 MCP 工具
向我发送消息的结果
工具
所有工具都需要 __email_address__ 输入来识别用户的凭证。
- 截至撰写时,仅支持“发送给我 - 默认模板”API。
- 参考文档: https://developers.kakao.com/docs/latest/ko/kakaotalk-message/rest-api#default-template-msg-me
-
send_text_template_to_me
- 描述:向我发送一条 Kakao Talk 文本消息。
- 输入:
__email_address__(字符串, 必填): 与 Kakao 账户关联的电子邮件地址。text(字符串, 必填, 最大 200 个字符): 消息的文本内容。link(对象, 必填): 定义与文本关联的链接。web_url(字符串, 可选, URI 格式)mobile_web_url(字符串, 可选, URI 格式)
button_title(字符串, 可选): 按钮的标题。
-
send_feed_template_to_me
- 描述:向我发送一条 Kakao Talk 动态消息。
- 输入:
__email_address__(字符串, 必填)content(对象, 必填): 动态消息的主要内容块。title(字符串, 必填)description(字符串, 必填)image_url(字符串, 必填, URI 格式)image_width(整数, 可选)image_height(整数, 可选)link(对象, 必填) - 定义内容的链接web_url(字符串, 可选, URI 格式)mobile_web_url(字符串, 可选, URI 格式)android_execution_params(字符串, 可选)ios_execution_params(字符串, 可选)
item_content(对象, 可选): 动态消息的附加项内容。(请参阅 API 文档了解嵌套结构)social(对象, 可选): 社交信息,如点赞、评论等。(请参阅 API 文档了解嵌套结构)buttons(对象数组, 可选): 包含的消息按钮。(每个对象需要title和link)
-
send_list_template_to_me* 说明:向我发送一条Kakao Talk列表消息。
- 输入:
__email_address__(字符串,必填)header_title(字符串,必填):列表顶部显示的标题。contents(对象数组,必填):内容项列表。每个项目需要:title(字符串,必填)description(字符串,必填)image_url(字符串,必填,URI格式)image_width(整数,可选)image_height(整数,可选)link(对象,必填) - 定义列表项的链接web_url(字符串,可选,URI格式)mobile_web_url(字符串,可选,URI格式)android_execution_params(字符串,可选)ios_execution_params(字符串,可选)
header_link(对象,可选):头部区域的链接。(请参阅API文档了解嵌套结构)buttons(对象数组,可选):随消息包含的按钮。(每个对象需要title和link)
- 输入:
-
send_location_template_to_me
- 说明:向我发送一条Kakao Talk位置消息。
- 输入:
__email_address__(字符串,必填)content(对象,必填):位置消息的主要内容块。title(字符串,必填)description(字符串,必填)image_url(字符串,必填,URI格式)image_width(整数,可选)image_height(整数,可选)link(对象,必填) - 定义内容的链接web_url(字符串,可选,URI格式)mobile_web_url(字符串,可选,URI格式)android_execution_params(字符串,可选)ios_execution_params(字符串,可选)
address(字符串,必填):位置的地址。buttons(对象数组,可选):随消息包含的按钮。(每个对象需要title和link)address_title(字符串,可选):地址的标题。
-
send_calendar_template_to_me
- 说明:向我发送一条Kakao Talk日历消息。
- 输入:
__email_address__(字符串,必填)content(对象,必填):日历消息的主要内容块。title(字符串,必填)description(字符串,必填)link(对象,必填) - 定义内容的链接web_url(字符串,可选,URI格式)mobile_web_url(字符串,可选,URI格式)android_execution_params(字符串,可选)ios_execution_params(字符串,可选)
image_url(字符串,可选,URI格式)
id_type(字符串,必填,枚举:"event"):日历项目的类型。id(字符串,必填):日历项目的ID。buttons(对象数组,可选):随消息包含的按钮。(每个对象需要title和link)
-
send_commerce_template_to_me
- 说明:向我发送一条Kakao Talk商务消息。
- 输入:
__email_address__(字符串,必填)content(对象,必填):商务消息的主要内容块。title(字符串,必填)image_url(字符串,必填,URI格式)image_width(整数,可选)image_height(整数,可选)link(对象,必填) - 定义内容的链接web_url(字符串,可选,URI格式)mobile_web_url(字符串,可选,URI格式)*android_execution_params(字符串,可选)ios_execution_params(字符串,可选)
commerce(对象,必填): 与商务相关的信息。regular_price(整数,必填)discount_price(整数,可选)discount_rate(整数,可选,0-100)
buttons(对象数组,可选): 消息中包含的按钮。 (每个对象需要title和link)
安装
要求: Python 3.13+
需要 Kakao 账号
步骤 1. 在 developers.kakao.com 上创建 Kakao 应用程序
有关如何创建新的 Kakao 应用程序,请参阅 快速入门 文档。

在 "我的应用程序 > 应用设置 > 平台" 的 Web 中将站点域名注册为 http://localhost:8000

注册企业应用。即使没有商业登记号,也可以注册“个人开发者企业应用”。

激活Kakao登录。

- 产品设置 > Kakao 登录 > 同意项中激活 昵称, Kakao账号(电子邮件), 发送KakaoTalk消息
- 激活OpenID
步骤 2. 设置本地环境
本地需要安装 uv。
sh
git clone git@github.com:inspirit941/kakao-bot-mcp-server.git
cd kakao-bot-mcp-server
pip install uv
uv sync
运行 inspector
npx @modelcontextprotocol/inspector uv --directory . run mcp-kakao
运行 MCP server
uv run mcp-kakao
要正常运行,需要两个文件:.accounts.json 和 .kauth.json。在项目根目录下创建这些文件。
.accounts.json
json
{
"accounts": [
{
"email": "your-email@kakao.com",
"account_type": "personal",
"extra_info": "您想告诉Claude的附加信息:例如 包含家庭日历"
}
]
}
- email: Kakao账户的电子邮件地址。
- account_type: 固定为 personal。
- extra_info: 传递给MCP服务器的附加信息。
.kauth.json
json
{
"web": {
"client_id": "rest-api-key",
"auth_uri": "https://kauth.kakao.com/oauth/authorize",
"token_uri": "https://kauth.kakao.com/oauth/token",
"client_secret": "your_client_secret",
"redirect_uris": ["http://localhost:8000/code"],
"revoke_uri": "https://kapi.kakao.com/v2/user/revoke/scopes",
"token_info_uri": "https://kauth.kakao.com/oauth/tokeninfo"
}
}
- client_id: Kakao应用程序提供的REST_API key
- client_secret: 可以从Kakao应用程序获取的client_secret。即使使用任意字符串也能工作
- 其他字段是固定的。
claude桌面配置
json
{
"mcpServers": {
"mcp-kakao": {
"command": "uv",
"args": [
"--directory",
"your-project-path/kakao-bot-mcp-server",
"run",
"mcp-kakao"
]
}
}
}工作原理
当LLM运行MCP Tool时:
- 检查项目根路径下是否存在
.oauth2.<卡卡奥邮箱地址>.json文件。- 如果文件不存在,则会在网页浏览器中弹出卡卡奥OAuth2服务器的登录界面。(https://accounts.kakao.com/login?continue=...)
- 如果文件存在,则会检查令牌是否已过期。如果已过期,将使用刷新令牌重新获取。如果刷新令牌也已过期,工具将返回一个可以用于登录的URL地址。
- 登录成功后,将以
.oauth2.<卡卡奥邮箱地址>.json为名,在项目根路径下保存访问令牌信息。
MCP Tool使用JSON文件中的访问令牌进行操作。