chore(mcp): include resolve-binary.js in npm package

Root .gitignore ignores dist/; force-add so the launcher ships complete.
This commit is contained in:
logan committed 2026-10-15 12:12:03 +08:00
1 parent 8ae1e438a1
commit 80500ee8dc
1 file changed
+92
+92
View File
@@ -0,0 +1,92 @@
'use strict';
const fs = require('fs');
const path = require('path');
const os = require('os');
/**
* Resolve the OpsxDB Go MCP binary path.
* Order: OPSXDB_MCP_BIN → PATH → common install locations.
* @returns {string|null}
*/
function resolveBinary() {
const envBin = process.env.OPSXDB_MCP_BIN;
if (envBin && isExecutable(envBin)) return path.resolve(envBin);
const onPath = findOnPath('opsxdb-mcp');
if (onPath) return onPath;
const home = os.homedir();
const candidates = [
path.join(home, 'devops', 'opsxdb', 'bin', 'opsxdb-mcp'),
path.join(home, '.opsxdb', 'bin', 'opsxdb-mcp'),
path.join(home, '.local', 'bin', 'opsxdb-mcp'),
'/usr/local/bin/opsxdb-mcp',
'/opt/homebrew/bin/opsxdb-mcp',
];
for (const c of candidates) {
if (isExecutable(c)) return c;
}
return null;
}
function findOnPath(name) {
const pathEnv = process.env.PATH || '';
for (const dir of pathEnv.split(path.delimiter)) {
if (!dir) continue;
const p = path.join(dir, name);
if (isExecutable(p)) return p;
if (process.platform === 'win32' && isExecutable(p + '.exe')) return p + '.exe';
}
return null;
}
function isExecutable(filePath) {
try {
const st = fs.statSync(filePath);
if (!st.isFile()) return false;
fs.accessSync(filePath, fs.constants.X_OK);
return true;
} catch {
return false;
}
}
function missingBinaryMessage() {
return `opsxdb-mcp: Go binary not found.
This npm package (@rlwj-lab/opsxdb-mcp) is a Node launcher for the OpsxDB
MCP server (stdio). The real server is a Go binary named opsxdb-mcp.
Build it from the opsxdb repo:
cd server && go build -o ../bin/opsxdb-mcp ./cmd/opsxdb-mcp
Then either:
- put bin/opsxdb-mcp on your PATH, or
- export OPSXDB_MCP_BIN=/absolute/path/to/opsxdb-mcp
Cursor / Claude Desktop example:
{
"mcpServers": {
"opsxdb": {
"command": "npx",
"args": ["-y", "@rlwj-lab/opsxdb-mcp"],
"env": {
"OPSXDB_MCP_BIN": "/absolute/path/to/opsxdb-mcp"
}
}
}
}
Config files (same as native binary):
~/.opsxdb/mcp.json
~/.opsxdb/connections.json
`;
}
module.exports = {
resolveBinary,
missingBinaryMessage,
};