xfy 9eac025b3e feat(mcp): 完整工具面 + token 管理 + 管理页(T2-T5 并行实现 + 合并)
T2 token 管理(src/api/mcp_tokens.rs):create/list/reveal/revoke + get_mcp_client_configs
服务端函数,均经 get_current_admin_user 鉴权;TokenLifetime 枚举(1/7/30/90天/永不过期)。
src/mcp/config.rs 生成 4 种客户端配置(Claude Code/Cursor/Cline/通用 + CLI)。
src/pages/admin/mcp.rs 令牌管理页:列表 + 新建表单 + 一次性明文展示/重查 + 撤销 +
配置片段卡片。路由 /admin/mcp,导航项加入 admin_layout。

T3 read 工具 + Resources(tools/read.rs, resources.rs):search_posts/get_post/list_tags
(read 作用域,仅已发布);published-post Resources(post://{slug},游标分页)。
search_published 提取为共享函数。

T4 write 工具(tools/{posts,comments,tags,media}.rs):create/update/publish/trash/delete_post、
评论审核、标签 CRUD、媒体 base64 上传(WebP 转码 + 去重)。复用既有 helper 的 SQL 与
缓存失效(moka + ssr_cache)。write 作用域,可读草稿。

T5 admin 工具(tools/{settings,runner}.rs):get/update_settings、run_code(沙箱执行)。
admin 作用域。

合并(server.rs):用 rmcp tool_router 的「命名路由 + 组合」模式,7 个工具组在
YggMcpServer 上 impl,combined_router 用 + 合并成单一 ServerHandler。各工具组鉴权
独立,经 Extension<Parts> 读 McpPrincipal + scope.grants 校验。

新增依赖 base64 0.22(媒体上传解码)。验证:server/web 双目标编译通过、clippy
--all-features -D warnings 干净、659 单测 + 1 集成全绿(+20 新测试)。
2026-07-28 11:53:32 +08:00
2026-07-23 13:34:27 +08:00
2026-07-24 14:02:10 +08:00

Yggdrasil

基于 Dioxus 0.7 的全栈博客系统Rust 单一代码库同时编译为 WASM 前端和原生服务端。

技术栈

  • 框架: Dioxus 0.7 (fullstack)
  • 数据库: PostgreSQL + tokio-postgres
  • 样式: Tailwind CSS v4
  • 密码: Argon2
  • 会话: UUID token + cookie

功能

  • 邮箱注册 / 登录(单管理员模式,首次注册后关闭)
  • 会话管理与自动过期清理
  • 暗色 / 亮色主题切换
  • 后台文章撰写Tiptap Markdown 编辑器)
  • 文章归档与标签浏览

开发

依赖 Rust 1.95+、wasm32 目标、dx CLI、tailwindcss CLI v4 和 PostgreSQL。

# 配置数据库
DATABASE_URL=postgres://postgres:postgres@localhost:5432/yggdrasil

# 运行迁移(自动创建数据库并按顺序执行 migrations/ 下所有 SQL
./migrate.sh

# 启动开发服务器
make dev

构建

make build

生产部署

生产环境必须前置反向代理nginx/Caddy做 TLS 终结,并设置 APP_BASE_URLCOOKIE_SECURE=trueTRUSTED_PROXY_COUNT=1。详见 部署指南

Description
No description provided
Readme 10 MiB
Languages
Rust 79.7%
TypeScript 15.4%
CSS 3%
Dockerfile 0.8%
Makefile 0.5%
Other 0.5%