gabos-mcp
个人MCP服务器。
码头工人
docker compose up通过配置 docker-compose.yml (复制自 docker-compose.yml-example).环境变量:
| 变量 | 默认值 | 描述 |
|---|---|---|
MCP_TRANSPORT | streamable-http | 传输协议(stdio 或 streamable-http) |
MCP_HOST | 0.0.0.0 | 绑定地址(仅限HTTP) |
MCP_PORT | 8000 | 侦听端口(仅限HTTP) |
GABOS_CHM_FILES | {} | 应用程序到CHM文件路径的JSON映射 |
GABOS_CHM_CACHE_DIR | ~/.cache/gabos-mcp/chm | CHM提取/索引缓存目录 |
GABOS_KNOWLEDGE_DB | ~/.local/share/gabos-mcp/knowledge.db | 知识SQLite数据库的路径 |
GABOS_AGENTS_DB | ~/.local/share/gabos-mcp/agents.db | 代理SQLite数据库的路径 |
GABOS_BACKUP_DIR | _(无--备份已禁用)_ | 备份文件夹的绝对路径 |
GABOS_BACKUP_TIME | 02:00 | 运行备份的时间(24小时,当地时间) |
GABOS_BACKUP_RETENTION_DAYS | 30 | 保留备份的天数(0=永久保留) |
GITHUB_CLIENT_ID | _(无)_ | GitHub OAuth应用程序客户端ID(启用OAuth) |
GITHUB_CLIENT_SECRET | _(无)_ | GitHub OAuth应用程序客户端密钥 |
MCP_BASE_URL | _(无)_ | 服务器的公共URL(例如。 https://my.host) |
当所有三个 GITHUB_*/MCP_BASE_URL 如果设置了变量,服务器需要GitHub OAuth 2.1身份验证。当缺少任何身份验证时,服务器将在没有身份验证的情况下运行(适用于本地stdio使用)。
备份
集 GABOS_BACKUP_DIR 以启用每日备份。服务器每天使用SQLite的在线备份API复制两个数据库一次(防止并发写入),并删除早于 GABOS_BACKUP_RETENTION_DAYS 天。如果当天已经存在备份,则跳过该备份。在Docker中挂载一个卷,以便备份在容器重启后仍然存在:
volumes:
- ./backups:/backups
environment:
- GABOS_BACKUP_DIR=/backups恢复(手动):
- 停止服务器。
- 将备份文件复制到原始数据库路径上,例如。
cp backups/agents_2026-04-26.db ~/.local/share/gabos-mcp/agents.db. - 启动服务器。
备份文件是纯SQLite数据库,可以使用任何SQLite客户端进行检查。
连接
克劳德桌面-远程(OAuth)
首选 设置>连接器>添加自定义连接器,选择“Streamable HTTP”,然后输入服务器URL(例如。 https://mcp.example.ch/mcp).Claude Desktop自动处理OAuth流——它通过动态客户端注册进行注册,打开GitHub登录的浏览器窗口,并管理令牌刷新。
推荐的Claude Desktop允许列表
工具以反映其副作用类的后缀命名,使每个工具的允许列表变得简单明了:
| 后缀 | 副作用 | 建议的Claude桌面设置 |
|---|---|---|
_read, _search, _context | 只读 | 始终允许 |
_write, _extract_learnings | 创建或修改数据 | 允许每次会话一次 |
_delete | 不可逆删除 | 每次询问 |
工具
工具按模块分组并命名 module_verb 或 module_verb_noun 所以他们按域名的字母顺序排序。
权限模型
- 阅读已打开 所有经过身份验证的用户。私人物品(代理人和知识
shared=false)对非所有者隐藏,但不会引起错误。 - 写入和删除仅限所有者。 只有资源所有者可以更新或删除它。
- 代理标签所有权: 添加表单的标签
agent:或agent::folder:知识条目要求您拥有该代理。
代理
代理是存储在数据库中的领域专家。每个代理都有一个系统提示(角色)、知识标签和链接的CHM文档页面。随着时间的推移,它们会通过使用变得更聪明。
代理人问答环节:
sequenceDiagram
participant Claude
participant You
participant MCP
You->>MCP: agent_context(agent, query, folder_context?)
MCP-->>You: system_prompt + context_markdown
You->>Claude: Answer query using system_prompt + context_markdown
Claude-->>You: answer
You->>MCP: agent_extract_learnings(agent, query, answer)
MCP-->>You: {knowledge_saved, doc_refs_saved}MCP从知识库和CHM文档中组装上下文-- 你 使用该上下文进行回答。 agent_extract_learnings 电话 ctx.sample() 在已经活跃的会话上提取和保存可重用的事实;不需要外部API密钥。
| 工具 | 说明 |
|---|---|
agent_read | 列出所有可见的代理(无参数),或按名称/ID获取特定代理。通过 include_doc_refs=true 以包含链接的CHM页面。 |
agent_context | 为查询组装并返回上下文(系统提示+知识+CHM页面)。 |
agent_extract_learnings | 通过当前的法学硕士课程,从已完成的问答中提取并持续学习。 |
agent_write | 创建(mode="create")或更新(mode="update")代理人。接受可选 doc_refs 和 learnings 两种模式下的字段。仅限所有者。 |
agent_delete | 删除代理(否 doc_ref_ids)或删除特定的文档引用(doc_ref_ids 提供)。仅限所有者。 |
agent_write模式:
mode="create"—name,description,system_prompt必修的;model,knowledge_tags,auto_learn,shared可选。mode="update"—name_or_id必修的;所有其他字段都是部分覆盖。doc_refs--列表{context_key, app, source, page_path, relevance_note?}。更新时,添加:添加新条目,保持现有引用不变。learnings--列表{title, content, tags?, shared?}.写入知识库agent:预先准备。 删除代理时不删除 --通过明确删除knowledge_delete.
知识
一个共享的、经过标签过滤的知识库。只有所有者可以编辑或删除他们的条目。
| 工具 | 说明 |
|---|---|
knowledge_read | 按以下方式获取单个条目 id,或列出按以下方式筛选的条目 owner/tag 分页。 |
knowledge_write | 创建(mode="create")或更新(mode="update")知识条目。所有者仅用于更新。 |
knowledge_delete | 删除知识条目。仅限所有者。 |
knowledge_write模式:
mode="create"—title和content必修的;id必须省略;tags,shared可选。mode="update"—id必修的;其他字段是部分覆盖。
文件(CHM)
读取和搜索通过配置的CHM文档文件 GABOS_CHM_FILES.
| 工具 | 说明 |
|---|---|
docs_search | 在配置的CHM应用程序中进行全文搜索。用于自由文本查询。 |
docs_read | 浏览应用程序/资源/页面或阅读页面。行为:无参数→ 列出应用程序; app → 列出来源; app+source → 列表页面; app+source+page_path → 阅读内容。 |
缓存无效:
CHM缓存存储在 GABOS_CHM_CACHE_DIR (默认值 ~/.cache/gabos-mcp/chm)与布局 ///。删除子目录会使该缓存无效,并在下次访问时强制重建:
# Clear one source
rm -rf "$GABOS_CHM_CACHE_DIR/MYAPP/mysource"
# Clear one app
rm -rf "$GABOS_CHM_CACHE_DIR/MYAPP"
# Clear everything
rm -rf "$GABOS_CHM_CACHE_DIR"服务器检测到外部删除,并在下次使用工具时自动重建,无需重新启动。
克劳德代码-远程(OAuth)
claude mcp add --transport http gabos-mcp https://mcp.fuet.ch/mcp首次使用时,Claude Code会打开浏览器以完成GitHub OAuth流程。令牌存储在本地并自动刷新。
