Metadata-Version: 2.4
Name: rongcloud-native-mcp-python
Version: 0.1.5
Summary: Rongcloud IM Service based on MCP Protocol (Rust SDK Wrapper)
Author-email: Rongcloud <imsdk@rongcloud.cn>
Requires-Python: >=3.12
Requires-Dist: click>=8.0.0
Requires-Dist: mcp[cli]
Requires-Dist: pydantic
Requires-Dist: pydantic-settings
Requires-Dist: uvicorn
Provides-Extra: dev
Requires-Dist: pip-tools; extra == 'dev'
Description-Content-Type: text/markdown

# Rongcloud Native MCP

基于 MCP 协议的融云 IM 服务（包装 Rust SDK）

[English Documentation](README_EN.md)

## 使用方法

### 前提--安装 UV 包管理工具

```bash
 pip install uv 
```

UV 是一个用 Rust 编写的 Python 包安装和依赖管理工具，比传统工具（如 pip）有着更快、更高效的体验。它主要关注两个核心目标：

速度: UV 在包安装、依赖解析和虚拟环境创建等方面进行了优化，速度有显著的提升。
效率: UV 可以减少资源消耗，尤其是在大型项目中。

后续我们会用到 UVX 命令，它的作用是"如果本地没有，先下载。再运行"，而且每次都是在单独的虚拟环境中，很适合大模型/Agent相关场景

### 在 Cursor 中使用（Cline / Claude 类似）

配置路径：Cursor -> 首选项 -> Cursor Settings -> MCP -> Add new global MCP server
配置内容：

```json
{
  "mcpServers": {
    "rongcloud-native-mcp-python": {
      "name": "rongcloud-native-mcp-python",
      "type": "stdio",
      "command": "uvx",
      "args": [
        "rongcloud-native-mcp-python"
      ],
      "env": {
          "APP_KEY": "融云 App Key",
          "TOKEN": "应用 SDK Token (从 Server API 获取)",
          "AREA_CODE": "数据中心区域码（北京 = 1，新加坡 = 2，北美 = 3，新加坡B = 4，沙特 = 5），非公有云客户不设置",
          "NAVI_URL": "导航地址（非公有云客户）",
          "STATS_URL": "数据统计地址（非公有云客户）"
      }
    }
  }
}

```

### 环境变量说明

- `APP_KEY`: （必填）您的融云应用密钥
- `TOKEN`: （必填）应用 SDK 令牌，从服务器 API 获取
- `AREA_CODE`: （可选）数据中心区域代码：
  - 1: 北京
  - 2: 新加坡
  - 3: 北美
  - 4: 新加坡 B
  - 5: 沙特
  - 注意：非公有云客户请勿设置
- `NAVI_URL`: （可选）导航 URL，非公有云客户必填
- `STATS_URL`: （可选）统计 URL，非公有云客户必填

### 在 Cherry studio 中使用

先安装 UV 和 Bun（都需要安装），安装后重启 Cherry Studio。然后按照下图配置：
![Cherry Studio 界面示例](readme_img/cherry-studio-0.png)
![Cherry Studio 界面示例](readme_img/cherry-studio.png)

## 主要功能与工具（tools）说明（持续更新）

服务端通过 MCP 协议暴露以下工具：

### 1. `send_private_text_message`

- **功能**：发送 IM 消息给指定用户（私聊）
- **参数**：
  - `user_id` (str, 默认"")：消息接收者的用户ID
  - `content` (str, 默认"")：消息内容
  - `ext_content` (dict, 默认{})：扩展内容字典，用于附加消息数据
- **返回**：
  - 失败：包含 `code` 和 `error` 的字典
  - 成功：包含 `code`、`message_id` 和 `message` 的字典

### 2. `send_group_text_message`

- **功能**：发送 IM 消息给指定群组（群聊）
- **参数**：
  - `group_id` (str, 默认"")：群组ID
  - `content` (str, 默认"")：消息内容
  - `ext_content` (dict, 默认{})：扩展内容字典，用于附加消息数据
- **返回**：
  - 失败：包含 `code` 和 `error` 的字典
  - 成功：包含 `code`、`message_id` 和 `message` 的字典

### 3. `get_private_messages`

- **功能**：获取与指定用户的历史消息（私聊）
- **参数**：
  - `user_id` (str, 默认"")：用户ID
  - `order_asc` (bool, 默认False)：是否按升序排列，默认为降序
  - `count` (int, 默认10)：获取的消息数量
- **返回**：
  - 失败：包含 `code` 和 `error` 的字典
  - 成功：包含 `code` 和消息数组的字典

### 4. `get_group_messages`

- **功能**：获取指定群组的历史消息（群聊）
- **参数**：
  - `group_id` (str, 默认"")：群组ID
  - `order_asc` (bool, 默认False)：是否按升序排列，默认为降序
  - `count` (int, 默认10)：获取的消息数量
- **返回**：
  - 失败：包含 `code` 和 `error` 的字典
  - 成功：包含 `code` 和消息数组的字典

### 5. `send_private_image_message`

- **功能**：发送图片消息给指定用户（私聊）
- **参数**：
  - `user_id` (str, 默认"")：消息接收者的用户ID
  - `thumbnail_base64` (str, 默认"")：缩略图的base64编码
  - `image_uri` (str, 默认"")：图片URI地址
  - `ext_content` (dict, 默认{})：扩展内容字典，用于附加消息数据
- **返回**：
  - 失败：包含 `code` 和 `error` 的字典
  - 成功：包含 `code`、`message_id` 和 `message` 的字典

### 6. `send_group_image_message`

- **功能**：发送图片消息给指定群组（群聊）
- **参数**：
  - `group_id` (str, 默认"")：群组ID
  - `thumbnail_base64` (str, 默认"")：图片缩略图的base64编码
  - `image_uri` (str, 默认"")：图片URI地址
  - `ext_content` (dict, 默认{})：扩展内容字典，用于附加消息数据
- **返回**：
  - 失败：包含 `code` 和 `error` 的字典
  - 成功：包含 `code`、`message_id` 和 `message` 的字典

### 7. `recall_message`

- **功能**：撤回指定消息
- **参数**：
  - `message_dict` (dict)：完整的消息对象，包含message_id、conversation_type、target_id等字段
- **返回**：
  - 失败：包含 `code` 和 `error` 的字典
  - 成功：包含 `code` 和 `message` 的字典

**注意**：
- IM 引擎会在首次调用任何消息相关工具时自动初始化和连接
- 服务器断开连接时会自动处理资源清理

## 常见问题

### Q: 为什么配置了 Cursor 但是服务器列表中一直是黄色小圆点？

A: 服务器列表中显示黄色小圆点，尝试先安装 UV 命令，重启 Cursor 后重新开启服务开关。

### Q: 为什么 Cherry Studio 一直报错？

A: 确保 UV 和 Bun 安装成功，重启 Cherry Studio 后重新开启服务开关。

### Q: 为什么调用工具后返回错误？

A: 确保环境变量（APP_KEY、TOKEN、NAVI_URL）正确设置，重启服务后重新调用工具。

## 技术支持

如果遇到问题，请：

1. 检查环境变量是否正确设置
2. 查看日志输出，了解具体错误信息
3. 在开源项目中提issue
