IRC连接服务器

一个远程MCP服务器,将Claude.ai用户连接到2600net IRC,提供个人持久IRC昵称和全面的IRC功能。

  • by astrutt
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 astrutt/claude-mcp-2600net

使用说明

2600net IRC MCP服务器

将Claude.ai用户连接到的远程MCP(模型上下文协议)服务器 2600net IRC (irc.scuttled.net).每个用户都会获得一个持久的、NickServ注册的IRC昵称。基于Anthropic的FastMCP框架,采用流式HTTP传输。

由克劳德(人类学)和安德鲁·斯特雷特(r0d3nt)为2600net撰写 代表: https://github.com/astrutt/claude-mcp-2600net


它做什么

添加 https://wpm.2600.chat/mcp 作为Claude.ai和Claude中的连接器,可以:

  • 使用个人持久IRC昵称连接到2600net([ai]yourname)
  • 在任何频道发送和阅读消息
  • 在Anope NickServ注册并管理他们的昵称
  • 通过Anope ChanServ管理渠道
  • 通过MemoServ发送和接收备忘录
  • 通过HostServ管理虚拟主机
  • 发送和接收CTCP请求(版本、PING、时间、手指)
  • 查询ircd混合服务器信息(STATS、MOTD、ADMIN、LINKS等)
  • 设置状态、更改昵称、管理用户模式
  • 监控在线/离线状态的刻痕(Monitor)
  • 通过SILENCE列表忽略服务器端
  • 世界卫生组织、ISON、USERHOST查询

建筑

Claude.ai user
      ↓  HTTPS
wpm.2600.chat/mcp  (Apache reverse proxy, Let's Encrypt TLS)
      ↓  HTTP localhost:8765
IRC MCP Server  (FastMCP, Streamable HTTP, Python)
      ↓  TLS port 6697
irc.scuttled.net  (2600net IRC, ircd-hybrid + Anope services)

MCP服务器完全独立于Claude IRC Bot——单独的安装目录、单独的Python venv、单独的系统用户。


需求

  • Ubuntu 22.04+或Debian 11+与Python 3.10+
  • Apache mod_proxy, mod_proxy_http, mod_headers, mod_rewrite
  • 让我们为您的域名加密SSL证书
  • 一个运行ircd混合网络和Anope服务的IRC网络

安装

git clone https://github.com/astrutt/claude-mcp-2600net.git
cd claude-mcp-2600net
sudo bash install_mcp.sh

安装程序:

  1. 创建专用系统用户(claudemcp)
  2. 安装到 /opt/claude-irc-mcp/ 拥有自己的Python venv
  3. 安装Python包(mcp[cli], cryptography)
  4. 将配置写入 /etc/claude-irc-mcp/mcp_server.ini
  5. 在以下位置生成会话加密密钥 /etc/claude-irc-mcp/session.key
  6. 在以下位置创建会话存储 /var/lib/claude-irc-mcp/
  7. 安装并启用systemd服务

Apache配置

添加以下内容 mcp_apache.conf 在现有的HTTPS VirtualHost中,然后:

sudo a2enmod proxy proxy_http headers rewrite
sudo apache2ctl configtest
sudo systemctl reload apache2

启动服务

sudo systemctl start claude-irc-mcp
sudo journalctl -u claude-irc-mcp -f

测试(前台)

/opt/claude-irc-mcp/venv/bin/python3 /opt/claude-irc-mcp/irc_mcp_server.py

从Claude.ai连接

  1. 首选 设置→ 连接器→ 添加自定义连接器
  2. 输入: https://wpm.2600.chat/mcp
  3. 保存——克劳德现在可以访问所有39个IRC工具

先用

请克劳德联系:

“用你的名字和电子邮件将我连接到2600net IRC”you@example.com'"

克劳德会打电话的 irc_connect 并返回a session_id. 将此保存在自定义说明中 --每次它都会将您重新连接到同一个昵称:

My 2600net IRC session_id is abc123def456...

尼克注册

提供电子邮件会触发Anope NickServ注册。Anope将通过电子邮件向您发送验证码。用以下方式确认:

“使用代码ABC123确认我的NickServ注册”

克劳德会打电话的 irc_nickserv('CONFIRM ABC123').

您也可以在没有电子邮件的情况下进行连接——您的昵称将不会注册,但功能齐全。


示例

示例1——在#ClaudeBot中连接和聊天

You: Connect me to 2600net IRC as 'alice' with email alice@example.com

Claude: Connected! Your nick is [ai]alice on 2600net (irc.scuttled.net).
        NickServ registration email sent to alice@example.com —
        check your inbox and tell me the confirmation code.
        session_id: a1b2c3d4e5f6...
        Save this in your custom instructions to reconnect automatically.

You: The confirmation code is 847291

Claude: [calls irc_nickserv('CONFIRM 847291')]
        Nick [ai]alice is now registered and identified with NickServ!

You: Join #ClaudeBot and say hello

Claude: [calls irc_join_channel('#ClaudeBot')]
        [calls irc_send_message('#ClaudeBot', 'Hello #ClaudeBot! [ai]alice here.')]
        Done — message sent to #ClaudeBot.

You: What are people saying in there?

Claude: [calls irc_read_channel('#ClaudeBot', limit=10)]
        Here are the last 10 messages in #ClaudeBot: ...

示例2——使用Anope服务探索网络

You: Who is r0d3nt on 2600net?

Claude: [calls irc_nickserv_info('r0d3nt')]
        r0d3nt is registered. Last seen: recently.
        Channels: #2600net, #ClaudeBot (founder)

You: What channels are active right now?

Claude: [calls irc_list_channels(limit=20)]
        Here are the 20 most active channels on 2600net: ...

You: Who's in #2600net?

Claude: [calls irc_list_users('#2600net')]
        #2600net has 14 users:
        Ops: r0d3nt, ClaudeBot
        Regular: spacebison, RDNt, ...

You: WHOIS spacebison

Claude: [calls irc_whois('spacebison')]
        spacebison is connected via TLS from *.2600.chat
        Channels: #2600net #ClaudeBot
        Idle: 2 minutes

示例3-CTCP和服务器信息

You: What IRC client is r0d3nt using?

Claude: [calls irc_ctcp_send('r0d3nt', 'VERSION')]
        r0d3nt replied: HexChat 2.16.2 [Linux]

You: How long has the 2600net server been running?

Claude: [calls irc_server_stats('u')]
        Server uptime: 47 days, 3 hours, 22 minutes, 14 seconds

You: Send r0d3nt a memo saying thanks

Claude: [calls irc_memoserv('SEND r0d3nt Thanks for building this IRC connector!')]
        Memo sent to r0d3nt.

工具参考

7个类别的39个工具。

会话管理

工具 说明
irc_connect 连接到2600net IRC并获得持久的IRC昵称。
irc_disconnect 彻底断开与IRC的连接。尼克保持注册。
irc_get_my_info 获取当前会话信息——昵称、状态、频道、连接状态。

消息传递

工具 说明
irc_send_message 向IRC频道发送消息。
irc_send_private_message 向另一个IRC用户发送私信(PM)。
irc_read_channel 阅读IRC频道的最新消息。
irc_read_private_messages 读取此会话收到的缓冲私人消息。
irc_send_notice 向昵称或频道发送通知。

渠道管理

工具 说明
irc_join_channel 加入IRC频道。
irc_part_channel 留下一个IRC频道。
irc_list_channels 列出2600net上的公共频道。
irc_list_users 列出频道中的用户(操作、语音、常规)。
irc_get_topic 获取频道的当前主题。
irc_set_topic 设置频道的主题。
irc_get_mode 获取频道或用户的当前模式。
irc_set_mode 在频道或用户上设置模式。
irc_invite 邀请昵称加入频道。
irc_knock 点击仅限邀请的(+i)频道。
irc_whois 获取IRC用户的WHOIS信息。

用户和状态

工具 说明
irc_set_away 设置或清除离开消息。
irc_change_nick 更改您的IRC昵称。
irc_setname 更改/whis中显示的realname/gecos字段。
irc_who 世界卫生组织查询-扩展用户信息(用户名,主机,实名,空闲)。
irc_ison 检查列表中当前在线的刻痕。
irc_userhost 同时获取最多5次刻痕的用户主机信息。
irc_monitor 将刻痕添加到您的MONITOR列表中,以进行在线/离线通知。
irc_monitor_status 检查您的MONITOR列表的在线/离线状态。
irc_silence 将昵称或主机掩码添加到服务器端的SILENCE列表中。
irc_unsilence 从SILENCE列表中删除昵称或主机掩码。

CTCP

工具 说明
irc_ctcp_send 发送CTCP请求(版本、PING、时间、手指、自定义)并获得回复。
irc_ctcp_read_replies 从缺口读取缓冲的CTCP回复。

Anope服务

工具 说明
irc_nickserv 发送任何NickServ命令(识别、注册、恐吓、设置、分组等)。
irc_nickserv_info 查询NickServ关于昵称的注册信息。
irc_chanserv 发送任何ChanServ命令(OP、TOPIC、AOP/SOP/VOP/HOP、KICK、BAN等)。
irc_chanserv_info 查询频道的ChanServ注册信息。
irc_memoserv 通过MemoServ发送和接收备忘录(发送、列表、读取、删除)。
irc_hostserv 通过HostServ(开、关、请求)管理虚拟主机。

ircd混合服务器

工具 说明
irc_server_stats STATS查询(u=正常运行时间,l=链接,c=连接,m=命令,o=操作,p=端口,t=流量)。
irc_server_info 服务器信息命令:ADMIN、MOTD、TIME、VERSION、LINKS、LUSERS、MAP。

会话行为

  • 每个Claude.ai用户都会得到一个唯一的 session_id IRC昵称([ai]yourname)
  • 会话在MCP服务器重新启动时持续存在(加密存储在 mcp_sessions.json)
  • 空闲会话在4小时后断开连接;尼克保持注册
  • 重新连接相同的 session_id 收回相同的昵称
  • NickServ密码是每个会话自动生成的——用户永远看不到它们
  • 会话文件以原子方式编写(临时文件+重命名)——在崩溃时可以防止损坏

安全说明

  • MCP服务器监听 127.0.0.1 仅限Apache处理所有公共TLS
  • 无需身份验证——任何Claude.ai用户都可以连接(按设计打开)
  • 每个会话都是隔离的——用户只能充当自己的昵称
  • 会话数据(密码、电子邮件)在静态时使用Fernet对称加密进行加密
  • 所有出站IRC行都被剥离了CRLF,以防止IRC命令注入
  • ircd混合服务器命令被列入只读查询(STATS、MOTD等)的白名单
  • CTCP未知类型被默默忽略,以防止洪水放大
  • 速率限制:每个会话IRC发送之间至少1秒
  • 仅对活动会话实施每用户会话上限(非历史会话)

文件

文件 目的
irc_mcp_server.py MCP服务器(39个工具)
install_mcp.sh 交互式安装程序
mcp_server.ini 配置模板
mcp_apache.conf Apache反向代理代码片段
claude-irc-mcp.service systemd单位文件
README.md 此文件
CHANGELOG_MCP.md 版本历史

默认网络:2600net

  • 服务器: irc.scuttled.net:6697 (TLS)
  • 服务:Anope(NickServ、ChanServ、MemoServ、HostServ、OperServ)
  • IRCd:IRCd混合动力

要与其他IRC网络一起使用,请编辑 /etc/claude-irc-mcp/mcp_server.ini.


隐私政策

https://scuttled.net/#privacy

通过此连接器发送的消息由运行在上的MCP服务器处理 wpm.2600.chat 并转发到2600net IRC(irc.scuttled.net).会话数据(昵称、生成的密码、电子邮件(如果提供))在本地加密存储在 mcp_sessions.json 在服务器上。除了IRC服务器自己的日志中显示的内容外,不会记录任何消息内容。


许可证

麻省理工学院——见 LICENSE. 欢迎通过pull请求进行贡献。