Mabel-s-Tentacles

mcp
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: NOASSERTION
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 7 GitHub stars
Code Uyari
  • network request — Outbound network request in frontend/package.json
  • network request — Outbound network request in frontend/pnpm-lock.yaml
  • network request — Outbound network request in frontend/src/api/files.js
  • network request — Outbound network request in frontend/src/api/index.js
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Go MCP server for AI agents: deterministic file description, field indexing and lifecycle management

README.md

Mabel-s-Tentacles

梅贝尔之触 —— 她会帮你管理文件。

A lightweight MCP file manager for AI agents, written in Go — deterministic file describer, field indexer and lifecycle manager.

梅贝尔

—— 这是梅贝尔

简介

这是一个用 Go 开发的 MCP 服务器项目,用于管理、创造、分类文件。聊天机器人风靡全球,铃仙意识到让机器人来管理文件是非常有必要的。但传统 agent 直接管理文件,面临着易出错、没有固定流程、文件一多就找不到的风险。

基于此,我制作了一个面向 agent 的 MCP 文件管理器:agent 就好好聊天,文件方面的事情就交给纯粹的理性分析吧。

特色: 这个项目与其他项目不同的是,它正在开发一个相当特殊的文件描述机,我配置了大量描述字段,比如这个文件有多少字符,文件中的标题有哪些,有多少表格,英文很多吗,最长的一句话有多长……
设计意图是,尽可能完整的描述这个文件,并且想办法设计量化标准,以便于agent可以模糊查询某些文件。
对此,描述机,索引机,管理机是必要的。

至于为什么选 Go——因为 Go 的体感相当优雅。

技术栈:Go(单体后端,同进程提供 MCP 与 HTTP API)· Vue 3 · PostgreSQL · Docker Compose。

功能

MCP 工具(agent 调用,支持自动兼容与规范化参数):

工具 功能
write_file / read_file 新建文件(重名拒绝,写完自动分析,回执带文件编号和 24h 极简短链)/ 读文件
modify_file / modify_data_file 修改文件:追加内容或整段覆写
patch_file 局部精准修改:基于唯一锚点字符串进行安全替换(单次/全部)
move_file 移动 / 重命名:文件编号、描述、归属都不变,改个名而已
copy_file 复制文件(内容连同描述一起搬,副本归操作者,并记一笔"复制自哪")
create_directory 创建持久化空文件夹;进入逻辑文件树,但不在物理数据盘暴露明文目录
list_directory / create_child_directory / write_directory_file 按目录 UUID列出、创建子目录、新建文件;同名文件保留各自 UUID,read_file(uuid=...) 精确读取
delete_file 软删除文件:将文件放入回收站,保留元数据与溯源记录,防误删
get_file_info 查单文件全量元数据:免列出目录,直接取 90+ 维度描述字段与状态
list_files / list_data_files 分页列出文件,可按关键词过滤,标出哪些还没写描述
list_index_fields 拿一张"能按什么条件查文件"的字段目录:每个字段啥意思、现在有哪些值/多大范围、多大算"大"——一次拿全,可缓存
search_files 按字段条件找文件(等于 / 在集合里 / 大于小于 / 区间 / 包含 / 有没有),多个条件默认"且",要"或 / 非 / 分组"也能写
describe_file 给文件写描述、标签(机器算出来的字段不许动,只有描述区开放)
analyze_file 让系统把文件重新读一遍、刷新描述字段(比如 agent 绕过系统直接改了文件之后)
audit_files 管理员只读盘库对账:报告孤儿文件、幽灵元数据及重复 checksum,不改文件或缺失计数
execute_command / get_command_history 执行 Shell 命令(60s 超时)/ 查询历史执行结果(入参免填 user_id,自动绑定上下文)
mabel_quote 让梅贝尔说随机台词(1–5 段,混沌机娱乐功能),附带人设语气指导 style_guidance,便于 agent 沉浸式陪聊
pseudo_random 伪随机机:给随机整数(快、本地、娱乐用,别拿来搞密码)
true_random 真随机机:取物理世界量子层面的真随机数(默认休眠,配好量子源才亮);取不到就报错,绝不拿伪随机凑数
jm_comic 查询或下载 JMComic;下载出的 ZIP 通过管理机导入接口进入 Mabel 文件库,自动描述、索引并生成短链

MCP Resources 与 Prompts(赋能智能体自省与场景化工作流):

  • Resources:
    • mabel://catalog/fields:实时索引字段字典元数据,方便模型自主规划高级查询。
    • mabel://guide/search-contract:精准/模糊/范围搜索规范契约与 JSON 构造指南。
    • mabel://persona/system:梅贝尔系统人设指引,动态注入 3 段原作台词作为语气基准。
  • Prompts:
    • organize_workspace:工作区深度梳理与分类归档流程引导。
    • audit_undescribed_files:未描述/未分类文件专项审计与批量打标。
    • advanced_search_wizard:多维度复合条件组合搜索向导。
    • mabel_chat:梅贝尔角色对话模版(自动提取 3 组真实台词作为 Few-Shot 样本)。

文件存在哪:agent 只管用顺手的路径(比如 小说/第一章.txt),文件在磁盘上的实际位置由系统随机分配——盘面上全是随机文件名,看不出任何文件是什么、在哪。就算有人摸到了服务器磁盘,也猜不到文件放哪。

多用户:每个用户有自己独立的空间,你写你的 笔记.txt、我写我的 笔记.txt,互不干扰。要读别人公开的文件,加个前缀 ~用户名/文件名 就行;别人标了私密的文件,除了主人和管家谁都动不了。文件默认公开,谁都能用。

Web 前端(人类使用,深色书房风格管理台):

功能 说明
文件树与多选 左侧目录树导航;支持文件列表多选、反选、批量软删除与批量打包下载为 ZIP
文件列表与快速检索 路径 / 类型 / 大小 / 更新时间;支持按关键词、标签、描述即时过滤
实时在线预览 图片免下载直接缩略/全屏预览;文本与代码文件支持在线查看前 100KB 内容与语法高亮
就地编辑元数据 列表中一键唤出抽屉,直接修改文件用户描述与标签集合
极简短链与分享 单个文件一键生成 6 位 Base62 极简下载短链(/d/{code}),有效期 24 小时
文件详情与溯源 基本信息、描述标签、机器算出来的全部 90+ 维度量化字段,及复制/移动/重命名的完整血统脉络
Agent 审计日志 独立 /operations 调用看板,3 秒静默轮询 Agent 的 MCP 工具调用流水、参数及返回回执
状态统计 文件数、总大小、目录数、类型分布概览

深色书房主题。管理台用管理员账号登录(不开放注册——这是给自己 agent 配套的自用工具,不是公开服务)。

已经做好的:

功能 说明
文件描述引擎 自动读文件内容,产出 90 多个量化字段:语言、行数、表格数、最长句、英文占比、是代码还是文档、图片色调…纯计算,不需要 AI 参与,结果永远一致
字段查询 这些字段全部可以当搜索条件用——"帮我找中文的、带表格的、100 行以上的文件"这种模糊需求直接查;条件还能叠"且 / 或 / 非"("(中文 或 英文) 且 长文 且 非日志"也写得出来),字段目录里连"多长算长、多高算高清"的分档都备好了,agent 照着查就行
文件存取 上面说的:路径进、随机名出,位置不可猜
局部精准编辑 patch_file 支持传入唯一锚点上下文进行局部精准替换,避免全文件重写覆盖
重名文件保护 新建、复制、导入遇到已占用路径(含回收站文件)拒绝覆盖;数据库原子占位防并发抢名。更新内容使用 modify_file / patch_file,或换一个路径新建
改动自动发现 定期巡检磁盘,文件内容变了(哪怕是被绕过系统直接改的)就自动重新分析、更新记录;软删除状态在异步巡检时严格保护,杜绝误判复活
读文件缓存 agent 反复读的小文件走内存缓存,不反复磨磁盘
极简限时下载短链 单文件 24 小时极简 Base62 短链接(/d/{code}),支持 RFC 5987 UTF-8 中文名无乱码直接下载,过期优雅降级至书房提示页
来龙去脉 复制记"复制自哪",移动记"移动自哪",文件详情里直接看
管理台与审计看板 完整 Web SPA:在线预览、就地编辑、批量打包/删除,以及 Agent 调用日志看板
端到端测试 从"agent 写文件"到"多用户互不干扰"整条链路有自动化测试跑着,改坏了立刻知道
混沌机 娱乐功能模块(第四个独立模块):梅贝尔台词机、伪随机机、真随机机,以及通过 MCP 装配层接入文件库的 JMComic 下载

还没做的:

功能 说明
语义描述 现在只有机器算的事实字段,"这文件讲了什么"这种理解性描述还没接 AI
对话标识 QQ 里谁让 agent 存的文件,就自动归到谁名下(现在归统一的管家空间)
谱系图 来龙去脉数据已经有了,画成图还没做
游戏室 路径分区留好了(game/ 开头的自动归档),玩法还没做

还有更多的功能。

快速开始

生产部署(单二进制 + systemd)

# 服务器上(linux/amd64,纯 Go 无 CGO——本地交叉编译即可)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o mabel-server ./cmd/server

mkdir -p /opt/mabel/{data,logs,web}
# 前端:pnpm build 后把 frontend/dist/* 放入 /opt/mabel/web(服务端自带 SPA 托管)
# 配置 /opt/mabel/.env(管理员账号、强随机的 SECRET_KEY 与 MCP_API_KEY、
# DATABASE_URL 指向本机 postgres、可选 ACCESS_TOKEN 供 agent 分享直下链接),
# 填法与 systemd 单元模板见部署指南第 5 节
  • MCP 端点:http://<内网>:18001/sse(要暴露到公网就走反向代理 + 域名,代理配置里记得关缓冲,不然 agent 的长连接会被卡住)
  • 管理页:同端口 /(仅管理员账号,建议只在内网或隧道访问)
  • 本地开发(Windows / PowerShell 7):
# 1. 先把数据库拉起来(只跑 postgres 一个容器即可)
docker compose up -d postgres

# 2. 一键编译后端(8080) + 启动前端 dev(5173)
./start-dev.ps1

AstrBot 等 MCP 客户端的接入配置,见部署指南第 5 节。

文档

  • 部署指南 —— 环境准备、部署形态、安全组配置、MCP 客户端(AstrBot 等)接入方法、1Panel 反代挂载子域名
  • 架构设计 —— 几个模块怎么分工:描述机(读字节、算字段)、索引机(字段查文件)、管理机(文件在哪、怎么动)、混沌机(娱乐);谁依赖谁、数据怎么流转
  • common 共享层 —— 各模块共用的工具函数清单;写新函数之前先查这里,别重复造轮子
  • 混沌机 —— 娱乐功能模块:功能注册表怎么扩展、梅贝尔台词库怎么分组
  • 测试规则 —— 测试怎么分层、怎么跑;整链路的场景测试客户端在 test/tools/scenario/

许可证

PolyForm Noncommercial 1.0.0,全文见 LICENSE。

  • ✅ 允许:个人学习、研究、爱好项目、教育与公益等非商业用途下使用、修改、再分发(须保留 LICENSE 与版权声明)
  • ❌ 禁止:任何商业用途(销售、商业服务、公司经营性使用等)
  • ❌ 禁止:去除版权声明后的搬运分发

商用授权及其他许可事宜请联系作者。

Yorumlar (0)

Sonuc bulunamadi