mirror of
https://github.com/SECTL/SecScore.git
synced 2026-07-19 19:04:23 +08:00
新增 MCP 使用说明文档并在 README 增加入口
This commit is contained in:
+139
@@ -0,0 +1,139 @@
|
||||
# SecScore MCP 使用说明
|
||||
|
||||
本文说明如何在现有 Tauri Rust 后端中使用 MCP 服务(HTTP 方式),并调用 `add_score` 工具完成加分/扣分。
|
||||
|
||||
## 1. 功能概览
|
||||
|
||||
当前后端已提供以下 Tauri 命令:
|
||||
|
||||
- `mcp_server_start(config?)`
|
||||
- `mcp_server_stop()`
|
||||
- `mcp_server_status()`
|
||||
|
||||
服务启动后会暴露 MCP HTTP 入口:
|
||||
|
||||
- `POST /mcp`
|
||||
- 默认地址:`http://127.0.0.1:3901/mcp`
|
||||
|
||||
当前已实现 MCP 工具:
|
||||
|
||||
- `add_score`:给指定学生加分或扣分,并写入 `score_events` 记录。
|
||||
|
||||
## 2. 启动与停止 MCP 服务
|
||||
|
||||
你可以在前端通过 Tauri `invoke` 调用:
|
||||
|
||||
```ts
|
||||
import { invoke } from '@tauri-apps/api/core';
|
||||
|
||||
await invoke('mcp_server_start', {
|
||||
config: {
|
||||
host: '127.0.0.1',
|
||||
port: 3901,
|
||||
},
|
||||
});
|
||||
|
||||
const status = await invoke('mcp_server_status');
|
||||
console.log(status);
|
||||
|
||||
await invoke('mcp_server_stop');
|
||||
```
|
||||
|
||||
说明:
|
||||
|
||||
- 不传 `config` 时,默认使用 `127.0.0.1:3901`。
|
||||
- 只有管理权限(Admin)可调用 `mcp_server_start/stop/status`。
|
||||
|
||||
## 3. MCP 请求方式
|
||||
|
||||
服务采用 JSON-RPC 2.0 格式,请求头使用 `Content-Type: application/json`。
|
||||
|
||||
### 3.1 initialize
|
||||
|
||||
```bash
|
||||
curl -X POST http://127.0.0.1:3901/mcp \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"method": "initialize",
|
||||
"params": {}
|
||||
}'
|
||||
```
|
||||
|
||||
### 3.2 tools/list
|
||||
|
||||
```bash
|
||||
curl -X POST http://127.0.0.1:3901/mcp \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 2,
|
||||
"method": "tools/list"
|
||||
}'
|
||||
```
|
||||
|
||||
### 3.3 tools/call(调用 add_score)
|
||||
|
||||
```bash
|
||||
curl -X POST http://127.0.0.1:3901/mcp \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 3,
|
||||
"method": "tools/call",
|
||||
"params": {
|
||||
"name": "add_score",
|
||||
"arguments": {
|
||||
"student_name": "张三",
|
||||
"delta": 5,
|
||||
"reason_content": "课堂表现优秀"
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
`add_score` 参数:
|
||||
|
||||
- `student_name`(string,必填):学生姓名。
|
||||
- `delta`(integer,必填):分值变化,正数加分,负数扣分。
|
||||
- `reason_content`(string,可选):原因,默认 `MCP 加分`。
|
||||
|
||||
## 4. 返回结果说明
|
||||
|
||||
调用 `add_score` 成功时:
|
||||
|
||||
- `result.isError = false`
|
||||
- `result.structuredContent` 包含:
|
||||
- `event_id`
|
||||
- `event_uuid`
|
||||
- `student_name`
|
||||
- `delta`
|
||||
- `val_prev`
|
||||
- `val_curr`
|
||||
- `reason_content`
|
||||
- `event_time`
|
||||
|
||||
调用失败时:
|
||||
|
||||
- `result.isError = true`
|
||||
- `result.content[0].text` 含失败原因(例如学生不存在、数据库未连接)。
|
||||
|
||||
## 5. 常见问题
|
||||
|
||||
### 5.1 调用报 `MCP server is already running`
|
||||
|
||||
表示服务已启动,可直接调用 `/mcp`,或先执行 `mcp_server_stop` 再重启。
|
||||
|
||||
### 5.2 调用报 `Permission denied: Admin required`
|
||||
|
||||
说明当前会话未获得管理权限,先在应用中解锁管理权限再调用服务管理命令。
|
||||
|
||||
### 5.3 调用 `add_score` 提示 `Student not found`
|
||||
|
||||
请确认学生已在学生列表中存在,且 `student_name` 与库内名称完全一致。
|
||||
|
||||
## 6. 安全建议
|
||||
|
||||
- 推荐仅绑定到 `127.0.0.1`,避免暴露到局域网。
|
||||
- 若需要远程访问,建议配合网关鉴权、反向代理白名单或专用内网通道。
|
||||
Reference in New Issue
Block a user