Files
ruoyi-ai/ruoyi-modules/ruoyi-chat/docs/frontend-guide.md
2026-03-08 22:41:24 +08:00

245 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MCP工具管理前端开发指南
## 前置条件
- Node.js >= 16.0
- Vue 3
- Element Plus
- ECharts (用于图表展示)
- Axios (用于HTTP请求)
## 安装依赖
```bash
npm install element-plus echarts axios
```
## 项目结构
```
ruoyi-ui/
├── src/
│ ├── api/
│ │ └── mcp/
│ │ └── tool.js # API接口
│ ├── views/
│ │ └── mcp/
│ │ ├── tool/
│ │ │ └── index.vue # 工具管理页面
│ │ ├── market/
│ │ │ └── index.vue # 市场管理页面
│ │ └── log/
│ │ └── index.vue # 调用日志页面
│ └── utils/
│ └── request.js # Axios封装
```
## 菜单配置
在系统菜单管理中添加以下菜单:
### 1. MCP工具管理
| 字段 | 值 |
|------|-----|
| 菜单名称 | MCP工具管理 |
| 菜单类型 | 目录 |
| 显示顺序 | 1 |
| 路由地址 | mcp |
| 组件路径 | |
#### 子菜单:工具列表
| 字段 | 值 |
|------|-----|
| 菜单名称 | 工具列表 |
| 菜单类型 | 菜单 |
| 显示顺序 | 1 |
| 路由地址 | tool |
| 组件路径 | mcp/tool/index |
| 权限标识 | mcp:tool:list |
#### 子菜单:市场管理
| 字段 | 值 |
|------|-----|
| 菜单名称 | 市场管理 |
| 菜单类型 | 菜单 |
| 显示顺序 | 2 |
| 路由地址 | market |
| 组件路径 | mcp/market/index |
| 权限标识 | mcp:market:list |
#### 子菜单:调用日志
| 字段 | 值 |
|------|-----|
| 菜单名称 | 调用日志 |
| 菜单类型 | 菜单 |
| 显示顺序 | 3 |
| 路由地址 | log |
| 组件路径 | mcp/log/index |
| 权限标识 | mcp:tool:query |
## 权限配置
| 权限标识 | 权限名称 | 说明 |
|----------|----------|------|
| mcp:tool:list | 工具列表 | 查看工具列表 |
| mcp:tool:query | 工具查询 | 查看工具详情 |
| mcp:tool:add | 工具新增 | 新增工具 |
| mcp:tool:edit | 工具修改 | 修改工具 |
| mcp:tool:remove | 工具删除 | 删除工具 |
| mcp:tool:export | 工具导出 | 导出工具数据 |
| mcp:market:list | 市场列表 | 查看市场列表 |
| mcp:market:query | 市场查询 | 查看市场详情 |
| mcp:market:add | 市场新增 | 新增市场 |
| mcp:market:edit | 市场修改 | 修改市场 |
| mcp:market:remove | 市场删除 | 删除市场 |
## 路由配置
在路由配置文件中添加:
```javascript
{
path: '/mcp',
component: Layout,
redirect: '/mcp/tool',
name: 'Mcp',
meta: { title: 'MCP工具管理', icon: 'tools' },
children: [
{
path: 'tool',
name: 'McpTool',
component: () => import('@/views/mcp/tool/index'),
meta: { title: '工具列表', icon: 'tool' }
},
{
path: 'market',
name: 'McpMarket',
component: () => import('@/views/mcp/market/index'),
meta: { title: '市场管理', icon: 'shop' }
},
{
path: 'log',
name: 'McpLog',
component: () => import('@/views/mcp/log/index'),
meta: { title: '调用日志', icon: 'document' }
}
]
}
```
## API请求配置
确保Axios请求拦截器正确配置
```javascript
// src/utils/request.js
import axios from 'axios'
import { ElMessage } from 'element-plus'
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
timeout: 30000
})
// 请求拦截器
service.interceptors.request.use(
config => {
// 添加token
const token = localStorage.getItem('Admin-Token')
if (token) {
config.headers['Authorization'] = 'Bearer ' + token
}
return config
},
error => {
return Promise.reject(error)
}
)
// 响应拦截器
service.interceptors.response.use(
response => {
const res = response.data
if (res.code !== 200) {
ElMessage.error(res.msg || '请求失败')
return Promise.reject(new Error(res.msg || '请求失败'))
}
return res
},
error => {
ElMessage.error(error.message)
return Promise.reject(error)
}
)
export default service
```
## 开发步骤
1. **复制代码文件**
-`tool.js` 复制到 `src/api/mcp/` 目录
-`*.vue` 文件复制到对应的视图目录
2. **安装依赖**
```bash
npm install element-plus echarts
```
3. **配置路由**
- 在路由配置中添加MCP相关路由
4. **配置菜单**
- 在系统管理中添加菜单
5. **配置权限**
- 在系统管理中添加权限标识
6. **测试功能**
- 启动开发服务器
- 测试各项功能
## 注意事项
1. **工具类型说明**
- BUILTIN: 内置工具(系统自带,不可编辑)
- LOCAL: 本地STDIO工具通过命令行启动
- REMOTE: 远程HTTP工具通过网络连接
2. **配置JSON格式**
- LOCAL类型: `{"command": "npx", "args": ["-y", "@example/tool"], "env": {}}`
- REMOTE类型: `{"baseUrl": "http://localhost:8080/mcp"}`
3. **错误处理**
- 工具连接测试可能超时,请合理设置超时时间
- 删除工具前请确认没有正在运行的Agent使用该工具
4. **性能优化**
- 调用日志数据量大时,建议使用分页加载
- 图表数据建议缓存处理,避免频繁请求
## 常见问题
### 1. 跨域问题
在 `vue.config.js` 中配置代理:
```javascript
devServer: {
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true
}
}
}
```
### 2. 图表不显示
确保ECharts容器有固定高度并在数据加载后初始化图表。
### 3. 权限不生效
检查菜单权限配置和后端接口权限注解是否一致。