Kakao机器人集成
STDIO连接AI代理与Kakao的MCP服务器
连接AI代理与Kakao的MCP服务器
Model Context Protocol (MCP) server implementation that integrates the Kakao Developers API to connect an AI Agent to the Kakao Official Account.
MCP Server 구현체로, 카카오 Developers API를 AI Agent에 통합하는 예시입니다.
[!NOTE] This repository is NOT officially provided or maintained by Kakao.
It may not include complete functionality or comprehensive support.
카카오의 경우 대부분의 API가 사업자등록이 포함된 비즈니스 애플리케이션 단위로 권한을 관리하고 있으므로,
개인이 사용하기엔 제한적입니다.
참고문서: https://developers.kakao.com/docs/latest/ko/kakaotalk-message/rest-api
claude desktop으로 MCP tool 실행
'나에게 메시지 전달' 결과
All tools require the __email_address__
input to identify the user's credentials.
send_text_template_to_me
__email_address__
(string, required): The email address associated with the Kakao account.text
(string, required, max 200 characters): The text content of the message.link
(object, required): An object defining the link associated with the text.
web_url
(string, optional, uri format)mobile_web_url
(string, optional, uri format)button_title
(string, optional): The title of the button.send_feed_template_to_me
__email_address__
(string, required)content
(object, required): The main content block of the feed message.
title
(string, required)description
(string, required)image_url
(string, required, uri format)image_width
(integer, optional)image_height
(integer, optional)link
(object, required) - defines the link for the content
web_url
(string, optional, uri format)mobile_web_url
(string, optional, uri format)android_execution_params
(string, optional)ios_execution_params
(string, optional)item_content
(object, optional): Additional item content for the feed. (See API documentation for nested structure)social
(object, optional): Social information like likes, comments, etc. (See API documentation for nested structure)buttons
(array of objects, optional): Buttons to include with the message. (Each object requires title
and link
)send_list_template_to_me
__email_address__
(string, required)header_title
(string, required): The title displayed at the top of the list.contents
(array of objects, required): A list of content items. Each item requires:
title
(string, required)description
(string, required)image_url
(string, required, uri format)image_width
(integer, optional)image_height
(integer, optional)link
(object, required) - defines the link for the list item
web_url
(string, optional, uri format)mobile_web_url
(string, optional, uri format)android_execution_params
(string, optional)ios_execution_params
(string, optional)header_link
(object, optional): A link for the header area. (See API documentation for nested structure)buttons
(array of objects, optional): Buttons to include with the message. (Each object requires title
and link
)send_location_template_to_me
__email_address__
(string, required)content
(object, required): The main content block for the location message.
title
(string, required)description
(string, required)image_url
(string, required, uri format)image_width
(integer, optional)image_height
(integer, optional)link
(object, required) - defines the link for the content
web_url
(string, optional, uri format)mobile_web_url
(string, optional, uri format)android_execution_params
(string, optional)ios_execution_params
(string, optional)address
(string, required): The address of the location.buttons
(array of objects, optional): Buttons to include with the message. (Each object requires title
and link
)address_title
(string, optional): A title for the address.send_calendar_template_to_me
__email_address__
(string, required)content
(object, required): The main content block for the calendar message.
title
(string, required)description
(string, required)link
(object, required) - defines the link for the content
web_url
(string, optional, uri format)mobile_web_url
(string, optional, uri format)android_execution_params
(string, optional)ios_execution_params
(string, optional)image_url
(string, optional, uri format)id_type
(string, required, enum: "event"): The type of calendar item.id
(string, required): The ID of the calendar item.buttons
(array of objects, optional): Buttons to include with the message. (Each object requires title
and link
)send_commerce_template_to_me
__email_address__
(string, required)content
(object, required): The main content block for the commerce message.
title
(string, required)image_url
(string, required, uri format)image_width
(integer, optional)image_height
(integer, optional)link
(object, required) - defines the link for the content
web_url
(string, optional, uri format)mobile_web_url
(string, optional, uri format)android_execution_params
(string, optional)ios_execution_params
(string, optional)commerce
(object, required): Commerce-specific information.
regular_price
(integer, required)discount_price
(integer, optional)discount_rate
(integer, optional, 0-100)buttons
(array of objects, optional): Buttons to include with the message. (Each object requires title
and link
)get_calendar_list
__email_address__
(string, required): The email address associated with the Kakao account.create_sub_calendar
__email_address__
(string, required): The email address associated with the Kakao account.name
(string, required): The name of the sub calendar.color
(string, optional): The default color for events in the calendar.reminder
(integer, optional): The default reminder time for non-all-day events in minutes.reminder_all_day
(integer, optional): The default reminder time for all-day events in minutes.update_sub_calendar
__email_address__
(string, required): The email address associated with the Kakao account.calendar_id
(string, required): The ID of the sub calendar to update.name
(string, optional): The new name for the sub calendar.color
(string, optional): The new default color for events in the calendar.reminder
(integer, optional): The new default reminder time for non-all-day events in minutes.reminder_all_day
(integer, optional): The new default reminder time for all-day events in minutes.delete_sub_calendar
__email_address__
(string, required): The email address associated with the Kakao account.calendar_id
(string, required): The ID of the sub calendar to delete.requirements: Python 3.13+
카카오 계정 필요
카카오 신규 애플리케이션 생성 방법은 quick start문서를 참고합니다.
"내 애플리케이션 > 앱 설정 > 플랫폼" 의 Web에서 사이트 도메인으로 http://localhost:8000 등록
비즈 앱 등록. 사업자번호가 없어도 "개인 개발자 비즈 앱" 등록이 가능하다.
카카오 로그인을 활성화한다.
로컬에 uv가 설치되어 있어야 한다.
git clone [email protected]: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
프로젝트 root 경로에 아래 파일을 생성한다.
.accounts.json
{ "accounts": [ { "email": "[email protected]", "account_type": "personal", "extra_info": "Additional info that you want to tell Claude: E.g. 'Contains Family Calendar'" } ] }
.kauth.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" } }
claude desktop 설정
{ "mcpServers": { "mcp-kakao": { "command": "uv", "args": [ "--directory", "your-project-path/kakao-bot-mcp-server", "run", "mcp-kakao" ] } } }
동작 방식
LLM이 MCP Tool을 실행하면
.oauth2.<카카오메일주소>.json
파일이 있는지 확인한다.
.oauth2.<카카오메일주소>.json
이름으로 access_token 정보를 저장한다.MCP tool은 json 파일의 access token을 사용하는 구조.