mirror of
https://github.com/SECTL/SecScore.git
synced 2026-07-19 03:54:22 +08:00
5be6bd09d2
修复 ruleComponent.tsx 和 ruleBuilderUtils.ts 中 queryToAutoScoreRule 函数的参数问题 调整 database.rs 中 state_guard 的 drop 位置 优化 EventEmitter 和 Context 中的 once 方法实现 移除 Sidebar.tsx 和 OOBE.tsx 中未使用的代码 格式化 MCP 使用文档和规则文件
3.6 KiB
3.6 KiB
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记录。list_students:获取学生列表(姓名、积分、奖励积分、标签)。
2. 启动与停止 MCP 服务
你可以在前端通过 Tauri invoke 调用:
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
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
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)
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 加分。
3.4 tools/call(调用 list_students)
curl -X POST http://127.0.0.1:3901/mcp \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "list_students",
"arguments": {
"limit": 50
}
}
}'
list_students 参数:
limit(integer,可选):最多返回多少条,默认返回全部学生。
4. 返回结果说明
调用 add_score 成功时:
result.isError = falseresult.structuredContent包含:event_idevent_uuidstudent_namedeltaval_prevval_currreason_contentevent_time
调用失败时:
result.isError = trueresult.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,避免暴露到局域网。 - 若需要远程访问,建议配合网关鉴权、反向代理白名单或专用内网通道。