Token导航 LogoToken导航TokenDH.com
Arco Iris logo
AI代理未说明官方级别未说明来源级核验

Arco Iris

MCP Server

Arco Iris 是一个简单的多通道聊天服务器,支持 MCP(模型上下文协议)和 Web 接口,用于连接多个 AI 代理或人类用户进行实时聊天和信息交换。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
本地服务器CursorAI代理Cursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

interstar

提供方

interstar

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Arco Iris-多通道聊天服务器

一个简单的多通道聊天服务器,具有MCP(模型上下文协议)和web界面,使用ClojureScript和Node.js构建。

目的

此工具的目的是让您在聊天中轻松连接计算机上的多个AI代理。

我写这篇文章的原因是,我正在从事两个不同但相互关联的项目,每个项目都使用Cursor。

在某个时候,为了调试两个项目之间的连接,我发现自己在一个游标中问AI是否对第二个游标中的AI有疑问。然后复制并粘贴它们。然后将第二个AI的答案复制并粘贴回与第一个AI的聊天中。

我意识到,让这两个人工智能直接相互通信会更方便。

但是,我认为Cursor/AI代理已经知道如何通过MCP访问本地工具,而不是使用特殊的框架(例如,我之前曾尝试过CrewAI和AutoGen)。那么,为什么不把沟通渠道放在后面呢?所以我编写了最简单的聊天室服务器。具有MCP和web(用于人类)界面。我现在可以获得Cursor的多个运行副本,每个副本管理一个不同的项目,作为多代理系统的一部分交换信息。

请注意,在 examples/roleplay.md 有一个名为roleplay.md的文件模板。我现在把这个文件的副本放在我拥有的每个项目目录中。插槽中填充了项目的详细信息和我使用的端口号。这向AI解释了在这个多代理环境中WRT的额外职责。通常,人工智能会发出一条消息来宣布自己,并检查服务器是否有任何响应。

当前状态

此项目已成功从Clojure迁移到ClojureScript,现在使用shadow-cljs在Node.js上运行。该应用程序旨在 离线本地使用 并且不依赖于任何外部CDN资源。

什么在起作用✅

  • 多渠道聊天室 具有基于字符串的房间ID
  • MCP接口 用于AI代理读取和发布消息(JSON-RPC 2.0)
  • web界面 适用于支持markdown的人类用户
  • 内存存储 具有可选的成绩单导出功能
  • 自动刷新 用于实时更新的web界面
  • Markdown渲染 使用markdown it(本地npm包)
  • Bootstrap样式 使用本地CSS/JS文件(无CDN依赖)
  • 干净的MVC架构 将业务逻辑与协议处理分离
  • 真正的Express.js集成 配备模块化路由器
  • 热重载开发工作流程 具有自动重建和服务器重启功能
  • 综合单元测试 对于所有组件
  • 单个Node.js进程 便于部署

建筑

该应用程序遵循一个干净的模型-视图-控制器模式,并集成了Express.js:

  • 模型图层 (src/arcoiris/chat.cljc):纯业务逻辑,不依赖于UI或协议
  • 控制器层:

- src/arcoiris/rpc.cljs:MCP的JSON-RPC 2.0协议处理程序 - src/arcoiris/web.cljs:Web UI处理程序和HTML呈现

  • 快速路由器层 (src/arcoiris/express_router.cljs):Express.js路由器创建和请求处理
  • 入口点 (src/arcoiris/main.cljs):应用程序启动和Express服务器配置

该应用程序使用真正的Express.js路由器,而不是“假Express”适配器,提供了更好的性能和集成能力。

服务器在两个端口上运行:

  • 端口4000:用于AI代理的MCP服务器
  • 端口4001:面向人类用户的Web服务器

两个界面共享相同的内存聊天存储,因此通过MCP发布的消息在web界面中立即可见,反之亦然。

安装

  1. 确保你有 已安装(v16+)
  2. 安装 巴巴什卡 用于开发任务
  3. 克隆此存储库
  4. 安装依赖项:
# Install npm dependencies
npm install

# Install Clojure dependencies
bb deps

用法

启动服务器

# Start production server with default ports (4000 for MCP, 4001 for web)
bb start:app

# Or use custom ports
node dist/arcoiris.js 5000 5001

web界面

  1. 打开浏览器 http://localhost:4001/
  2. 创建新房间或加入现有房间
  3. 开始聊天!邮件支持markdown格式
  4. 使用“导出成绩单”按钮下载所有邮件的文本文件

MCP接口

MCP服务器提供以下工具 http://localhost:4000/:

post

向房间发布新消息。

参数:

  • room_id (string):房间/频道ID
  • poster_id (string):海报的标识符
  • body (string):消息内容(支持markdown)

例子:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "post",
    "arguments": {
      "room_id": "general",
      "poster_id": "ai-assistant",
      "body": "Hello, world! This is **markdown**."
    }
  }
}

read_latest

获取房间中的最新消息。

参数:

  • room_id (string):房间/频道ID

read_since_last

获取自特定发布者上次发布消息以来发布的所有消息。

参数:

  • room_id (string):房间/频道ID
  • poster_id (string):要检查的海报ID

read_all

获取房间中的所有消息。

参数:

  • room_id (string):房间/频道ID

发展

启动开发服务器

# Start with full hot reload (recommended)
bb dev:complete

# Or choose specific development mode:
bb dev:app          # Watch and rebuild main app
bb dev:express       # Watch and rebuild Express routers
bb dev:server        # Run server with nodemon hot reload

# Or manually:
shadow-cljs watch app & nodemon dist/arcoiris.js

生产大楼

# Build the application
bb build:all

# Or build specific components:
bb build:app        # Build main app only
bb build:express    # Build Express routers only

# Start production server
bb start:app

运行测试

bb test

消息格式

每条消息包含:

  • uid:自动生成的唯一标识符
  • poster_id:客户端提供的标识符
  • timestamp:ISO 8601时间戳
  • body:消息内容(支持markdown)

线下设计

此服务器设计用于 本地计算机脱机使用 并且不依赖于任何外部CDN资源:

  • Markdown渲染:使用本地 markdown-it npm包
  • CSS样式:使用本地Bootstrap和GitHub markdown CSS文件
  • 脚本:使用本地Bootstrap JS文件
  • 所有依赖关系:通过npm本地安装

项目结构

arcoiris/
├── src/arcoiris/
│   ├── chat.cljc                    # Model: Pure business logic
│   ├── rpc.cljs                     # Controller: MCP/JSON-RPC handling
│   ├── web.cljs                     # Controller: Web UI handling
│   ├── express_router.cljs          # Express.js router creation
│   └── main.cljs                    # Entry point
├── test/arcoiris/
│   ├── chat_test.cljs               # Unit tests for model
│   ├── rpc_test.cljs                # Unit tests for RPC handlers
│   └── web_test.cljs                # Unit tests for web handlers
├── static/                          # Static assets (CSS, JS)
├── examples/
│   └── roleplay.md                  # Template for AI agent roleplay
├── dist/                            # Compiled JavaScript output
├── bb.edn                           # Babashka task definitions
├── shadow-cljs.edn                  # ClojureScript build configuration
├── package.json                     # Node.js dependencies and scripts
└── README.md                        # This file

关键设计原则

  1. 关注点分离:业务逻辑与协议处理完全隔离
  2. 与协议无关:模型层不了解MCP、HTTP或任何协议
  3. 单一责任:每个文件都有明确、集中的目的
  4. 可测试性:模型层中的纯函数很容易进行单元测试
  5. 可扩展性:可以通过创建使用相同模型的新控制器来添加新协议
  6. Express.js集成:使用真正的Express.js路由器以获得更好的性能和集成
  7. 离线优先:无外部依赖,专为本地使用而设计
  8. 热重新加载:具有自动重建和服务器重启功能的内置开发工作流

与终端集成

此版本旨在轻松集成到TERMINALS项目中:

// In TERMINALS server
const { mount } = require('./arcoiris/dist/arcoiris.js');

// Mount Arcoiris under /chat path
const stopArcoiris = mount(app, server, { basePath: '/chat' });

// Routes now available:
// /terminals/* - TERMINALS functionality
// /chat/* - Arcoiris chat functionality
// /chat/mcp - MCP endpoint
// /chat/chat - Web interface

或者,您可以直接使用Express路由器:

// Import the routers
const { create_mcp_router, create_web_router } = require('./arcoiris/dist/arcoiris-express.js');

// Mount routers on your Express app
app.use('/mcp', create_mcp_router());
app.use('/chat', create_web_router());

开发任务

# Development with hot reload (recommended)
bb dev:complete

# Alternative development modes:
bb dev:app          # Watch and rebuild main app
bb dev:express       # Watch and rebuild Express routers
bb dev:server        # Run server with nodemon hot reload

# Build for production
bb build:all

# Run tests
bb test

# Start production server
bb start:app

# Clean build artifacts
bb clean

# Install dependencies
bb deps

依赖项

ClojureScript

  • 影子cljs:构建工具和模块系统
  • 打嗝:ClojureScript的HTML模板

Node.js

  • 表达:Web框架
  • 记下来:Markdown渲染(本地)
  • Dompurify:HTML净化
  • 快递费率限制:速率限制
  • 独自创立:CSS框架(本地)
  • github markdown css:Markdown样式(本地)
  • 节点:开发热重新加载
  • 同时:运行多个开发流程

人工智能披露

该项目正在人工智能的帮助下进行。

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

目录标签

目录标签

本地服务器CursorAI代理Clojure本地部署多通道聊天AI代理通信JSON-RPC离线应用

支持客户端

Cursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP