ones-doc-content-mcp
v1.0.6
Published
MCP server for fetching ONES linked document content from URL or requirement hash
Downloads
24
Readme
ONES Doc MCP
用于内网环境的 ONES 文档读取 MCP Server。只需配置 ONES 地址和登录账号密码,即可通过 MCP 获取文档搜索结果与文档正文。
环境要求
- Node.js 20+
- 可访问 ONES 内网地址
- ONES 账号(建议最小只读权限)
环境变量
复制 .env.example 为 .env 并填写:
ONES_BASE_URL:ONES 内网根地址ONES_USERNAME:登录账号ONES_PASSWORD:登录密码ONES_TIMEOUT_MS:请求超时(可选,默认15000)ONES_MAX_CONTENT_CHARS:正文最大长度(可选,默认20000)
安装与使用
直接运行:
npx -y ones-doc-content-mcpMCP 客户端配置示例:
{
"mcpServers": {
"ones-doc": {
"command": "npx",
"args": ["-y", "ones-doc-content-mcp"],
"env": {
"ONES_BASE_URL": "https://ones.example.internal",
"ONES_USERNAME": "your_username",
"ONES_PASSWORD": "your_password"
}
}
}
}本地开发
npm install
npm run dev构建运行
npm run build
npm run start测试
npm run testGitHub Actions 发布 npm
仓库已提供工作流:.github/workflows/publish-npm.yml。
触发方式:
- 推送语义化版本 tag(如
v1.0.0)
发布前准备:
- 在 npm 包页面启用 Trusted Publishing(OIDC)并添加 GitHub 仓库信任关系:
- Owner/Repo:
twodogwang/mcp-demo - Workflow file:
.github/workflows/publish-npm.yml - Environment:留空(当前 workflow 未使用
environment)
- Owner/Repo:
- 确保
package.json的version与 tag 一致(例如version=0.1.2对应 tagv0.1.2)。 - 无需配置
NPM_TOKENSecret。 - 该 workflow 使用 Node
22.14.0以满足 npm Trusted Publishing 的最低版本要求。
首次发布 1.0.0 推荐流程:
npm run test
npm run build
npx bumpp 1.0.0 --all --commit --tag --no-push --no-verify --yes
git push origin main --follow-tags后续常规发布流程:
npm run test
npm run build
npm run release:patch # 或 release:minor / release:major
git push origin main --follow-tags工作流会执行:npm ci -> npm test -> npm run build -> npm publish --access public --provenance(通过 GitHub OIDC 获取 npm 发布权限)。
MCP 工具
1) search_docs
按关键词搜索文档。
示例参数:
{"query":"ONES 登录","limit":5}2) get_doc
通过上下文引用获取文档正文。
ref 支持:
- 完整 ONES 文档 URL(优先)
#12345需求号
当 ref 为 #12345 时:
- 服务会先查询需求关联文档;
- 按
updated_at取最新一篇(缺失时回退created_at); - 返回该文档正文。
Smoke 命令
node scripts/smoke.mjs "ONES"
node scripts/smoke.mjs "https://ones.example.internal/wiki/#/doc/abc"
node scripts/smoke.mjs "#12345"常见问题
- 登录失败(
AUTH_FAILED)
- 检查
ONES_BASE_URL、账号密码是否正确。
- 输入无效(
INVALID_DOC_REF)
get_doc.ref仅支持完整 URL 或#数字。
- 无关联文档(
NO_LINKED_DOC)
- 该需求号下没有关联文档,或当前账号无权限读取。
- 接口探测失败(
DISCOVERY_FAILED)
- 说明当前 ONES 实例接口与候选路径不匹配,需要补充候选规则。
