# CNB MCP Server

CNB MCP Server 是一个面向 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 的服务端实现，基于MCP协议提供对 CNB API 的访问。该服务器允许AI模型通过标准化接口访问和操作CNB代码托管平台的资源。

## 项目概述

CNB MCP Server 将CNB的API功能包装为MCP协议标准，便于AI模型与CNB代码托管平台进行交互。它使AI助手能够：

- 【x】搜索和管理代码仓库
- 【 】读取和修改文件内容
- 【x】处理Issues和评论
- 以及更多CNB平台功能

## 功能特性

CNB MCP Server 提供了以下核心功能：

### 仓库管理
- 创建新仓库
- 搜索公共仓库
- Fork现有仓库
- 获取仓库信息

### 文件操作
- 获取文件或目录内容
- ~创建或更新单个文件~
- ~在单个提交中批量推送多个文件~
- ~删除文件~

### 分支管理
- ~创建新分支~
- ~获取分支信息~
- ~设置分支保护规则~

### Issue管理
- 创建新Issue
- 获取Issue列表和详情
- 更新Issue状态和内容
- 添加Issue评论

## 安装指南

### 前置条件
- Node.js (v16或更高版本)
- npm (v7或更高版本)
- CNB平台访问令牌

### 安装步骤

```bash
# 克隆仓库
git clone https://cnb.cool/FFA/cnb-mcp-server.git
cd cnb-mcp-server

# 安装依赖
npm install

# 构建项目
npm run build
```

## 使用方法

### 作为命令行工具

```bash
# 直接运行
./build/index.js

# 或作为全局命令安装
npm install -g ./
cnb-mcp-server
```

### 与MCP Inspector集成测试

MCP Inspector是一个交互式工具，用于测试和调试MCP服务器：

```bash
# 启动Inspector测试界面
npm run inspector

# 开发模式（实时编译）
npm run watch
```

## 支持的MCP工具

CNB MCP Server 支持以下MCP工具：

- `search_repositories` - 搜索CNB仓库
- `create_repository` - 创建新的CNB仓库
- `get_file_contents` - 获取文件或目录内容
- ~`create_or_update_file` - 创建或更新单个文件~
- ~`push_files` - 批量推送多个文件~
- `create_issue` - 创建新Issue
- `fork_repository` - Fork仓库
- `create_branch` - 创建新分支
- `list_issues` - 列出仓库Issues
- `update_issue` - 更新Issue
- `add_issue_comment` - 添加Issue评论
- `get_issue` - 获取Issue详情
- `get_user_groups` - 获取用户组织信息

## MCP配置

## 安装

安装在 Claude , 在下面文件中添加配置:

在 MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
在 Windows: `%APPDATA%/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "cnb-mcp-server": {
      "command": "node",
      "args":["path/to/build/index.js"],
      "env":{
        "CNB_ACCESS_TOKEN":"CNB_ACCESS_TOKEN"
      }
    }
  }
}
```

## 安全说明

- 访问令牌应通过环境变量`CNB_ACCESS_TOKEN`提供，不要硬编码在代码中
- 遵循最小权限原则，使用具有所需最小权限的令牌
- 定期轮换访问令牌以增强安全性

## 开发指南

```bash
# 开发模式（实时编译）
npm run watch

# 运行Inspector进行测试
npm run inspector

# 运行测试
npm test
```

## 贡献指南

欢迎贡献代码和提出建议！请遵循以下步骤：

1. Fork仓库
2. 创建特性分支 (`git checkout -b feature/amazing-feature`)
3. 提交更改 (`git commit -m 'Add amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 创建Pull Request

## 许可证

本项目采用MIT许可证 - 详见LICENSE文件
