使用说明
modex
modex (模块专家/现代化专家)是一个MCP服务器,使LLM擅长编写现代、地道的Go代码。
它将Go标准库和项目依赖文档索引到本地SQLite FTS5数据库中,这样LLM就可以在使用API之前验证API是否存在,从而消除依赖幻觉、版本偏差和过时的习惯用法。
为什么
LLM经常生成Go代码,这些代码:
- 引用已安装版本中不存在的函数或类型
- 使用被新的stdlib添加所取代的已弃用模式
- 从内存中发明方法签名,而不是检查实际的API
modex为模型提供了一个本地的、可搜索的真实文档索引——相同的文档 go doc 会显示出来,这样它就可以在写之前查看。
特性
- 全文搜索 通过stdlib+项目依赖文档(FTS5、porter词干)
- 背景索引 具有进度跟踪功能--不阻塞模型
- 去重 --重新索引时跳过内容/版本不变的包
- 诊断编排 --通过一个工具构建/过时/安全/现代化检查
- 现代化应用模式 --奔跑
go fix使用模拟运行支持进行更改 - 运输 --stdio和流式HTTP(建议:作为持久HTTP服务运行)
- 纯Go SQLite --无CGo,无需系统库
工具
| 工具 | 说明 |
|---|---|
ping |
健康检查-退货 pong. |
register_project |
注册Go项目目录以进行索引。确认 go.mod 存在并启动stdlib+所有项目依赖项的后台索引。 |
get_index_status |
检查已注册项目的索引进度。返回阶段、总计/索引/跳过/失败计数。 |
reindex_project |
重新启动已注册项目的索引(首先取消任何活动的索引)。 |
search_docs |
使用模式搜索索引文档 auto, text, symbol,或 fts5,以及可选的包/种类/父过滤器。 |
get_diagnostics |
对项目运行诊断程序。类别: build, outdated, security, modernize (默认情况下为所有类别)。 |
apply_modernize |
申请 go fix 具有可选选择性修复器的现代化, aggressive,以及 dry_run 模式。 |
快速资产
prompts/coding_modern_go.md 包含一个系统提示,用于使用modex编写现代、地道的Go代码。
安装
先决条件: 转到1.26+(modex使用 go fix 1.26中添加了现代化器;它可以为使用任何Go版本构建的项目建立索引)
从源代码构建:
git clone https://github.com/0xCarbon/modex
cd modex
go build -o modex ./cmd/modex
或直接安装:
go install github.com/0xCarbon/modex/cmd/modex@latest
用法
modex被设计为作为一个持久的HTTP服务运行——启动一次并从任意数量的Claude会话连接。
启动服务器
modex --transport http --addr 127.0.0.1:3838
MCP端点在根路径上提供服务,例如。 http://127.0.0.1:3838/mcp.
stdio传输
对于单会话使用(例如macOS/Windows上的Claude Desktop):
modex --transport stdio
数据库位置
索引存储在 ~/.cache/modex/modex.db 默认情况下。覆盖 --db:
modex --db /path/to/modex.db
Claude代码配置
将modex添加为全局MCP服务器,使其在每个项目中都可用:
claude mcp add --transport http modex http://127.0.0.1:3838/mcp
或编辑 ~/.claude.json 直接添加到顶级 mcpServers:
{
"mcpServers": {
"modex": {
"type": "http",
"url": "http://127.0.0.1:3838/mcp"
}
}
}
Claude桌面配置
对于stdio传输,请添加 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"modex": {
"command": "modex"
}
}
}
工作流程
-
注册您的项目一次:
register_project(project_path="/path/to/your/project") -
索引在后台运行。检查进度:
get_index_status(project_path="/path/to/your/project") -
曾经
phase是ready,在编写代码之前搜索文档:search_docs(query="bytes.Buffer.Write", mode="symbol") -
需要时运行诊断程序:
get_diagnostics(project_path="/path/to/your/project", categories=["build","security"]) -
应用现代化(或预览
dry_run=true):apply_modernize(project_path="/path/to/your/project", dry_run=true)
建筑
cmd/modex/ main entry point, flag parsing, transport setup
internal/
db/ SQLite wrapper, FTS5 schema, auto-sync triggers
diagnostics/ build, outdated, security, modernize orchestration
docs/ go/doc extraction, background indexer, progress tracking
server/ MCP server, tool handlers
prompts/ coding_modern_go.md system prompt
储存: SQLite具有FTS5虚拟表,由 docs 内容表。自动同步触发器使FTS5与INSERT/DELETE/UPDATE操作保持同步,无需任何手动管理。
索引管道:
- 枚举stdlib和项目包(轻量级
NeedName|NeedModule) - 对于每个未重复数据消除的包:满载语法,通过提取
go/doc,插入交易
除尘: SHA256哈希值 packagePath@moduleVersion本地包(无版本)使用其源文件的内容指纹。
发展
# Build
go build ./...
# Fast tests (skips integration tests that index stdlib ~30s)
go test -short ./...
# All tests
go test ./... -timeout 10m
# Specific packages
go test ./internal/db/... -v
go test ./internal/docs/... -v
go test ./internal/server/... -v
路线图
- [x] MODEX-001:核心MCP服务器(ping、限速、并发中间件)
- [x] MODEX-002:文档索引(SQLite FTS5、go/doc提取、后台索引器)
- [x] 型号-003:
search_docs工具 - [x] 型号-004:
get_diagnostics编排器 - [x] MODEX-005:构建诊断(通过
get_diagnostics类别build) - [x] MODEX-006:过时的诊断(通过
get_diagnostics类别outdated) - [x] MODEX-007:安全诊断(通过
get_diagnostics类别security) - [x] MODEX-008:使诊断现代化(通过
get_diagnostics类别modernize) - [x] 型号-009:
apply_modernize - [x] 型号-010:
coding_modern_go提示
许可证
麻省理工学院