聊天连接服务

一个MCP服务器,用于将skych.at聊天连接到任何MCP客户端(如Claude Code、llama.cpp web UI等)。

  • by skychatorg
  • TypeScript
  • 混合部署
  • 更新于
在 GitHub 查看 skychatorg/skychat-mcp

使用说明

天空聊天mcp

连接的MCP服务器 skych.at 与任何MCP客户端(Claude Code、llama.cpp web UI等)聊天。

WebSocket在后台保持打开状态,在实时消息到达时对其进行缓冲。LLM对该缓冲区进行读写操作,无需轮询。

建立在官方之上 skychat npm包和 模型上下文协议TypeScript SDK.


与克劳德代码一起使用

1.注册服务器 (一次性,从您启动的任何目录 claude):

claude mcp add skychat -- npx -y skychat-mcp@latest --guest

添加 -s user 使其在每个项目中都可用。确认方式:

$ claude mcp list
skychat: npx -y skychat-mcp@latest --guest - ✓ Connected

2.使用它。 启动一个Claude Code会话——没有单独的进程可以运行,Claude Code会生成服务器本身。工具(read_messages, send_message, reply_to,…)自动显示。用简单的英语与克劳德交谈:

“现在人们在聊什么?”

“向总务室发送‘克劳德密码的问候’。”

“竖起大拇指回复邮件12345。”

“切换到IT室,总结最后30条消息。”

3.使用帐户登录 (可选——客人工作,但历史有限):

claude mcp add \
    -e SKYCHAT_USERNAME=alice \
    -e SKYCHAT_PASSWORD=hunter2 \
    skychat -- npx -y skychat-mcp@latest

首次成功登录会将令牌保存到 ~/.config/skychat-mcp/token.json (chmod 0600),因此您可以在此之后删除env变量。


与llama.cpp web UI一起使用

llama.cpp无法生成子进程,因此此子进程需要HTTP传输,您可以将其作为长期进程运行:

npx -y skychat-mcp@latest --http --guest

在 llama-server → 设置→ MCP → add http://localhost:8765/mcp。工具会自动出现。然后像上面的Claude代码示例一样,在web UI中与模型进行对话。


安装

需要 节点18+。您通常不需要本地安装-- npx -y skychat-mcp@latest 适用于上述两种设置。对于Claude Code设置,您根本不需要手动运行任何东西:Claude Code将服务器本身作为子进程生成。

如果您特别需要全局安装(主要用于为基于浏览器的客户端运行长期HTTP/SSE服务器):

npm install -g skychat-mcp
skychat-mcp --http --port=8765       # streamable HTTP
skychat-mcp --sse --port=8765        # legacy SSE

认证

启动时按以下顺序解决:

优先级 来源 备注
1 --guest flag 匿名,无提示
2 SKYCHAT_TOKEN env var JSON或字符串标记
3 ~/.config/skychat-mcp/token.json 成功登录后保存
4 SKYCHAT_USERNAME + SKYCHAT_PASSWORD env-vars 新登录,令牌被保存
5 回退 客人

没有交互式提示——env-vars是登录的唯一方式。这可以保证服务器在stdio上安全生成(推荐的Claude Code设置)。

要注销:请致电 logout 工具,或删除令牌文件。下一个开始没有 SKYCHAT_* env-vars回落到客人。


工具

工具 说明
read_messages 返回缓冲消息。 room_id 过滤器, limit 上限计数(默认30,最大200)。
send_message 发送消息。可选的 room_id.
reply_to 通过消息的ID引用回复消息,使用 @<id> 语法。
list_rooms 列出服务器知道的所有房间。
join_room 通过数字ID切换到其他房间
fetch_history 向服务器询问旧邮件(仅限于访客)。
status 连接状态、用户名、缓冲区统计信息。
logout 清除已保存的身份验证令牌。重新启动服务器以再次登录。

自动回复机器人

通过 --auto-reply 每当提及bot帐户时,服务器都会自动响应。LLM收到提及,调用工具(reply_to, send_message, join_room, read_messages)直到满意,然后停止。

npx -y skychat-mcp@latest --http --auto-reply
npx -y skychat-mcp@latest --http --auto-reply --llm-url=http://localhost:8080
npx -y skychat-mcp@latest --http --auto-reply --system-prompt="You are a pirate."
npx -y skychat-mcp@latest --http --auto-reply --system-prompt-file=prompt.txt
标志 默认值 描述
--auto-reply off 启用提及→LLM回路
--llm-url=URL http://localhost:8080 与OpenAI兼容的API的基本URL(/v1/chat/completions)
--system-prompt=TEXT 简短的帮助助手提示 发送给LLM的系统提示
--system-prompt-file=PATH -- 改为从文件读取系统提示

LLM必须支持OpenAI风格的函数/工具调用。 llama-server 使用具有工具功能的模型即可开箱即用。提及是按顺序处理的——如果队列填满(第2章),则删除额外内容,以避免淹没聊天。


环境变量

变量 默认值 描述
SKYCHAT_URL wss://skych.at/api/ws WebSocket URL——自托管实例的覆盖
SKYCHAT_TOKEN -- 使用以前发出的令牌(JSON或字符串)继续
SKYCHAT_USERNAME -- 新登录的用户名
SKYCHAT_PASSWORD -- 新登录密码
XDG_CONFIG_HOME ~/.config 令牌存储的基本目录

发展

git clone https://github.com/skychatorg/skychat-mcp.git
cd skychat-mcp
npm install
npm run build
npm start -- --guest --http

其他脚本: npm run dev (通过tsx观看模式), npm run lint, npm run lint-fix.


笔记

  • 客人可以阅读信息并加入房间,但历史非常有限。登录以获得完全访问权限。
  • 缓冲区保存最后一个 500条消息 所有房间;最老的被扔在帽子上。
  • 默认传输方式为 标准,这正是Claude Code所期望的,也是最有效的。 --http 和 --sse 存在于基于浏览器的客户端,如llama服务器。

许可证

WTFPL——做你他妈的想做的事——公共许可。