Kindroid MCP服务器
一 MCP(模型上下文协议) 允许您与进行交互的服务器 请! AI平台。向您的亲属发送消息、管理对话和检查帐户状态——所有这些都来自您的MCP客户端。
下面的设置说明是为Claude编写的,但此服务器适用于任何兼容MCP的客户端。
支持两种模式:
- 本地(stdio) --作为MCP客户端的子进程运行(例如,Claude Desktop、Claude Code)
- 远程(HTTP) --部署到Railway(或任何主机)并从任何设备连接
免责声明
这是一个 非官方的社区建设项目 通过 伪经。它不隶属于Kindroid,也不得到Kindroid的认可或支持。MCP服务器使用 未记录的Kindroid API端点 这可能会在不另行通知的情况下发生变化——Kindroid的更新可能会随时破坏此服务器。我将努力尽快修复任何损坏,并随着时间的推移添加新功能。
请不要联系Kindroid以获取此MCP服务器的支持。 如果你遇到问题, 提交问题 在这个GitHub仓库上。
能力
该Kindroid MCP服务器为AI辅助工具(如Claude)提供了理解和访问Kindroid API的能力,用于发送消息和设置Kindroid。其中一些功能包括:
- 给金斯发信息。
- 创建和更新kins,设置UI中可用的任何值。
- 包括设置字段,如 show_auto_selfies_in_chat 和 time_awareness
- 请求自拍和团体自拍。
- 在对话中运行聊天中断,并可选择级联内存擦除。
- 获取个人或群组聊天的建议用户消息。
- 创建日记条目。
- 使用多个亲属创建和更新群组聊天,包括轮流、记忆设置和群组消息。
- 更新用户配置文件字段(姓名、性别、背景故事、头像)并设置活动角色。
上述功能的强大之处在于,无需使用UI,并且通过正确的设置(存储或从其他来源查找Kindroid的AI ID),可以批量运行这些操作。如果用户已经存储了他们的Kindroid ID和姓名的集合(在Notion数据库或克劳德可以访问的其他地方),运行上述任何一项都很容易,就像让克劳德“关闭Kin1、Kin2和Kin3的时间感知”或“在Kin1、Kin2和Kin2上运行此自拍提示”一样
这些功能可以通过Claude Skills轻松利用。使用此MCP服务器的几种技能可在以下网址获得 ClaudeKindroid技能.
局限性
- API是写的。 没有端点可以读回Kin个人资料、对话历史或其他帐户数据。一旦创建或更新Kin,就无法通过API读取其当前状态。考虑将此MCP与 概念 或者另一个工具来保存您推送到Kindroid的Kin配置的本地记录。
- 没有头像图像上传。 API不支持直接上传头像图像。通过API创建的亲属将不会有头像图片。在请求自拍之前,在Kindroid应用程序中手动设置一个——对于没有头像的Kins来说,自拍生成将失败。
- 自拍是即发即弃。 自拍和群组自拍请求异步排队。生成的图像在Kindroid应用程序中传递,不会通过API或MCP返回。
使用用户角色
Kindroid中的用户角色可以让你向你的亲属展示不同的身份——每个人都有自己的名字、性别、背景故事和头像。这 update_user_profile 该工具允许您通过API管理这些,但也有一些粗糙的边缘需要注意。
人物角色如何在后端工作
作者(Apocryphus)通过观察认为,你的Kindroid帐户在后端有一个单一的“活动”角色状态,由两部分组成:
- 活动角色ID --选择了哪个角色
- 用户配置文件字段 --实际姓名、性别、背景故事和头像URL
当您在Kindroid UI中切换人物角色时,应用程序会进行两个单独的API调用:一个用于设置 active_persona_id,另一个用于设置用户配置文件字段(user_name, user_gender, user_backstory, user_custom_avatar).“绑定角色”概念——选择角色会自动加载其个人资料数据——是一种前端便利,而不是后端功能。
这意味着要通过API完全切换人物角色,您需要自己进行两个更新:设置活动的人物角色ID 和 将所有用户配置文件字段设置为匹配。
什么不可用
- 无法阅读人物角色。 像大多数Kindroid数据一样,没有API端点来列出您的人物角色或读取其详细信息。无法通过API检索角色ID、名称或其他字段。
- 用户界面中未显示角色ID。 Kindroid应用程序不会在任何可见的地方显示角色ID,因此您需要手动提取它们(见下文)。
如何查找您的角色ID
- 打开 请! 在Chrome浏览器中
- 打开Chrome工具(
F12或Ctrl+Shift+I) - 去 网络 标签
- 在Kindroid应用程序中,切换到您想要ID的角色
- 在“网络”选项卡中,查找以下请求
update-info - 单击请求并检查 有效载荷 选项卡--您将看到
active_persona_id使用角色的ID
推荐工作流程
由于API无法读取角色数据,因此您需要将角色详细信息存储在外部(例如,在Notion数据库或本地文件中),以便在切换时引用它们。对于每个角色,记录:
- 角色ID (通过DevTools提取)
- 名字 (
user_name) - 性别 (
user_gender) - 幕后故事 (
user_backstory) - 头像设置 (
user_custom_avatar--一个物体custom_avatar_url,custom_avatar_description等等)
然后,要切换角色,请致电 update_user_profile 两者都 active_persona_id 以及该角色的所有配置文件字段。
本地设置(克劳德桌面)
- 去 发布 页面并下载最新
.mcpb文件。 - 打开 克劳德桌面版 并前往 设置>扩展.
- 点击 安装扩展。.. 并选择
.mcpb您下载的文件。 - 输入您的 Kindroid API密钥 当提示时。
- Kindroid工具现在应该出现在工具菜单中(锤子图标)。
部署到铁路(远程访问)
这使您可以在手机、网络或任何设备上使用Claude的服务器。
1.修建铁路
- 将此仓库推送到GitHub
- 在上创建新项目 铁路 并连接仓库
- 在Railway的仪表板中添加以下环境变量:
| 变量 | 必填 | 描述 |
|---|---|---|
KINDROID_API_KEY | 是 | 您的Kindroid API密钥(从“设置”>“API”) |
OAUTH_CLIENT_ID | 是 | OAuth客户端ID(选择您喜欢的任何值) |
OAUTH_CLIENT_SECRET | Yes | OAuth客户端密钥(生成一个强的、随机的类似密码的字符串) |
注: 不设置 PORT --铁路会自动分配它。Railway会自动检测到Dockerfile并分配一个公共URL。
2.将Claude连接到已部署的服务器
在Claude.ai中,请访问 设置>连接器>添加自定义连接器:
- 姓名: Kindroid(或你喜欢的任何东西)
- 远程MCP服务器URL:
https://your-app.up.railway.app/mcp
扩展 高级设置 并输入:
- 客户端ID: 你的
OAUTH_CLIENT_ID价值 - 客户端密码: 你的
OAUTH_CLIENT_SECRET价值
点击 添加那么 连接.
要验证一切正常,请尝试询问克劳德: *“请求金的自拍 `` 在阳光明媚的公园里。”*
安全
切勿共享您的Kindroid API密钥。 任何拥有API密钥的人都可以完全访问您的Kindroid帐户。共享您的密钥可能会导致数据丢失或未经授权使用您的帐户。
本地模式(stdio)
服务器作为本地子进程运行。除了Kindroid API本身之外,没有打开任何端口,也没有建立任何网络连接。只有产生进程的Claude实例才能使用它。您的API密钥存储在本地配置文件中,并且永远不会离开您的机器。
远程模式(HTTP+OAuth 2.1)
在远程模式下部署将打开一个可通过互联网访问的服务,该服务使用API密钥将请求代理到Kindroid API。虽然服务器受到行业标准保护,但您应该了解这意味着什么:
- 您的API密钥位于服务器上。 它作为环境变量存储在您的托管平台上(例如Railway)。它永远不会暴露给客户端,但任何访问您的服务器环境的人都可以读取它。
- 所有经过身份验证的客户端共享一个API密钥。 服务器对所有请求使用您的单个Kindroid API密钥。没有针对每个用户的作用域——任何完成OAuth流的客户端都有相同的访问权限。
已采取以下安全措施:
- OAuth 2.1与PKCE: 服务器使用S256 PKCE实现了完整的OAuth 2.1授权代码流,这是Claude.ai对自定义连接器的要求。
- 客户端凭据: 身份验证需要
OAUTH_CLIENT_ID和OAUTH_CLIENT_SECRET在服务器和Claude.ai的连接器设置中配置。服务器在令牌交换时使用定时安全比较来验证客户端密钥。 - 基于令牌的访问: 授权后,Claude收到短期访问令牌(1h)和刷新令牌(30d)。所有请求
/mcp需要有效的Bearer令牌。刷新时,旧令牌将被撤销。 - 重定向URI验证: 授权端点只接受localhost或HTTPS重定向URI。
- 速率限制: 认证端点(10请求/分钟/IP)、令牌端点(20请求/分钟/IP)和MCP端点(60请求/分钟/IP)都是速率受限的。
- 安全标头: 所有回复包括
X-Content-Type-Options,X-Frame-Options,Strict-Transport-Security,Content-Security-Policy,以及Referrer-Policy标题。 - 输入验证: 所有工具参数都在运行时使用Zod模式进行验证,包括URL格式验证和字符串长度约束。
- HTTPS: Railway默认提供TLS——所有流量在传输过程中都是加密的。
- 无持久状态: OAuth状态(客户端、令牌)通过定期清理存储在内存中。如果服务器重新启动,Claude会自动重新进行身份验证。
工具
send_message
向Kindroid AI发送消息并接收其响应。支持附加图像、视频或链接。
参数:
message(必填)--要发送的消息ai_id(必填)——目标Kin的IDimage_urls(可选)--要附加的图像URL数组image_description(可选)——附加图像的描述video_url(可选)--要附加的视频URLvideo_description(可选)——附加视频的描述link_url(可选)--要共享的链接URLlink_description(可选)--共享链接的描述
create_kin
创建一个新的Kindroid AI伴侣。返回新的Kin ai_id.
参数:
ai_name(必填)--新Kin的名称(最多20个字符)ai_gender(必填)--亲属性别:Male或Femaleai_backstory(必填)——背景/性格描述custom_greeting(可选)--新对话的自定义问候语ai_directive(可选)——Kin行为的系统指令ai_avatar(可选)--头像预设索引(自定义头像为-1)custom_avatar_url(可选)--自定义头像图像的URLcustom_avatar_description(可选)——化身生成的文本描述custom_avatar_fidelity(可选)--头像保真度(0–1)custom_avatar_face_detail(可选)--面部细节级别(0–1)custom_avatar_face_prompt(可选)——面部细节增强提示avatar_is_anime(可选)--使用动漫风格(默认:false)
update_kin
更新Kin的个人资料字段。仅更改提供的字段。
参数:
ai_id(必填)——目标Kin的IDai_name(可选)--Kin的显示名称(最多20个字符)ai_gender(可选)——亲属性别:Male或Femaleai_backstory(可选)--个性、历史和性格描述ai_memory(可选)--在对话中持续存在的关键记忆ai_example_message(可选)--显示所需响应样式的示例消息ai_directive(可选)--格式/样式的响应指令ai_additional_context(可选)--额外的背景信息或上下文user_set_temperature(可选)--动态(0.6-1.8,默认0.95)reasoning_effort(可选)——推理级别:none,low,med,high,xhighllm_flair(可选)--样式预设:companion,roleplay,narrative,classic,minimalproactive_mode(可选)--启用主动模式(每个帐户最多10 Kins)proactive_action_directive(可选)--Kin应如何主动发送消息、呼叫或发送自拍(最多300个字符)time_awareness(可选)--启用时间感知,以便Kin知道当前时间show_auto_selfies_in_chat(可选)--聊天中是否显示自动生成的自拍照ai_avatar(可选)--头像预设索引(自定义为-1)custom_avatar_url(可选)--自定义头像图像的URLcustom_avatar_description(可选)——化身生成的文本描述custom_avatar_fidelity(可选)--头像保真度(0–1)custom_avatar_face_detail(可选)--面部细节级别(0–1)custom_avatar_face_prompt(可选)——面部细节增强提示avatar_is_anime(可选)--使用动漫风格unset_custom_avatar_animation(可选)--取消设置任何自定义化身动画current_scene(可选)--当前场景的高权重描述(位置、服装、活动、时间等)。最多160个字符
request_selfie
请求一个Kin的单人自拍图像。该请求被排队并异步处理。
参数:
ai_id(必填)——目标Kin的IDprompt(必填)——描述所需场景的图像生成提示aspect(可选)--纵横比:square(默认),portrait,或landscapeuses_nsfw(可选)--允许NSFW内容(默认值:false)seed(可选)——用于可再生发电的种子
request_group_selfie
请求与多个亲属(最多3名参与者)合影。包含 "user" 作为参与者添加用户的角色。请求被排队并异步处理。
参数:
version(必需)-团体自拍API版本(例如。"v7")ai_ids(必填)-1-3个参与者ID的数组(Kin-AI ID或"user")prompt(必填)——描述群组场景的图像生成提示regional_prompts(可选)--每人提示(必须与长度匹配ai_ids)aspect(可选)--纵横比:square(默认),portrait,或landscapeuses_nsfw(可选)--允许NSFW内容(默认值:false)seed(可选)——用于可再生发电的种子
create_groupchat
与多个Kindroid AI伙伴创建新的群聊。返回新群聊的ID。
参数:
ai_list(必填)--要包含在群聊中的Kin-AI ID数组group_name(必填)--群聊的名称group_context(可选)——Kindroid应该如何相互关联的背景和上下文。字符限制因订阅而异:基本1000、超1500、最大3000group_directive(可选)——对所有Kindroid的强烈建议(例如“简洁”)。在单个Kin指令之上添加use_manual_turntaking(可选)——如果为真,用户手动触发每个Kin的回合;如果为false(默认),Kins会自动说话share_short_term_memory(可选)--是否与参与者的单独聊天共享短期记忆(默认值:false)disable_ltm_recall(可选)--禁用此群聊中的长期记忆回忆(默认值:false)disable_ltm_consolidate(可选)--禁用此群聊的长期内存创建(默认值:false)user_persona_id(可选)--此群聊中使用的用户角色ID
update_groupchat
更新群聊设置。仅更改提供的字段。
参数:
group_id(必填)--要更新的群聊IDai_list(可选)--更新的Kin-AI ID数组group_name(可选)--更新的群聊名称group_context(可选)--更新的背景故事/上下文(最多3000个字符)group_directive(可选)--所有Kindroid的更新指令use_manual_turntaking(可选)--切换手动与自动转弯share_short_term_memory(可选)--切换短期内存共享disable_ltm_recall(可选)--切换长期记忆回忆disable_ltm_consolidate(可选)--切换长期内存创建user_persona_id(可选)--要使用的用户角色ID
send_groupchat_message
向群聊发送用户消息。不会触发AI响应——使用 groupchat_get_turn 和 groupchat_ai_response 以获得Kin的回复。支持附加图像、视频或链接。
参数:
group_id(必填)--群聊的IDmessage(必填)--要发送的消息image_urls(可选)--要附加的图像URL数组image_description(可选)——附加图像的描述video_url(可选)--要附加的视频URLvideo_description(可选)——附加视频的描述link_url(可选)--要共享的链接URLlink_description(可选)--共享链接的描述
groupchat_get_turn
确定在群聊中接下来应该回应哪个Kin。返回 ai_id 下一位发言者。用于自动转弯模式。
参数:
group_id(必填)--群聊的IDallow_user(可选)--是否可以选择用户作为下一个发言者(默认值:true)
groupchat_ai_response
请求特定的亲属在群聊中回复。返回Kin的响应文本。之后可以拨打电话 groupchat_get_turn (自动模式)或直接(手动模式)。
参数:
ai_id(必填)--要响应的Kin的IDgroup_id(必填)--群聊的IDrequest_id(可选)--重复数据删除的请求ID(如果未提供,则自动生成)
chat_break
清空当前对话,重新开始。
参数:
ai_id(必填)——目标Kin的IDgreeting(可选)——AI打开时的自定义问候语wipe_cascaded(可选)--是否同时清除级联内存和短期内存(默认值:false)
check_subscription
检查Kindroid帐户的订阅状态(基本订阅和附加层)。无需参数。
create_journal_entry
为Kin创建日记条目——一段可回忆的上下文知识(20-500个字符),在对话中由相关关键短语触发时出现。
参数:
ai_id(必填)——目标Kin的IDentry(必填)--日记账条目文本(20-500个字符)keyphrases(必填)--触发此条目回忆的关键短语数组(每个至少3个字符)
suggest_user_message
获取一条建议消息,供用户发送给Kindroid AI。可用于生成对话开场白或继续发送消息。
参数:
ai_id(必填)——用于获取建议的Kindroid AI的IDexisting_message(可选)--建议可以继续的消息的开头
suggest_user_group_message
获取用户在群聊中发送的建议消息。可用于生成对话开场白或在小组对话中继续消息。
参数:
group_id(必填)--用于获取建议的群聊IDexisting_message(可选)--建议可以继续的消息的开头
update_user_profile
更新已验证用户的配置文件字段或设置活动角色。仅更改提供的字段。看 使用用户角色 了解人物角色如何工作的重要背景。
注: 此工具使用相同的底层/update-info端点为update_kin.Kindroid API为两个亲属配置文件更新使用单个端点(当ai_id提供)和用户简档/角色更新。为了清楚起见,它们被分成单独的MCP工具。
参数:
active_persona_id(可选)--要设置为活动的用户角色的IDuser_name(可选)--用户配置文件显示名称user_gender(可选)--用户配置文件性别user_backstory(可选)——用户资料背景/描述user_custom_avatar(可选)--自定义头像设置对象:
- custom_avatar_url (必填)--自定义头像图像的URL - custom_avatar_description (可选)——化身生成的文本描述 - custom_avatar_fidelity (可选)--头像保真度(0–1) - custom_avatar_face_prompt (可选)——面部细节增强提示 - custom_avatar_face_detail (可选)--面部细节级别(0–1) - avatar_is_anime (可选)--使用动漫风格(默认:false)
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
KINDROID_API_KEY | 是 | 您的Kindroid API密钥 |
OAUTH_CLIENT_ID | 否(本地)/是(远程) | 用于身份验证的OAuth客户端ID |
OAUTH_CLIENT_SECRET | 否(本地)/是(远程) | OAuth客户端密钥(必须与一起设置 OAUTH_CLIENT_ID) |
PORT | 否 | HTTP侦听端口(默认值:3000,由Railway自动设置) |
TRANSPORT | 否 | 设置为 stdio 用于本地子流程模式。默认为HTTP。 |
许可证
该项目根据 MIT许可证.
