@pedrocid/music-mcp
Version:
MCP server for controlling Apple Music on macOS (v1.0.5)
84 lines (83 loc) • 3 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.infoTool = void 0;
exports.handleInfoCommand = handleInfoCommand;
const version_js_1 = require("../version.js");
const config_js_1 = require("../config.js");
const logger_js_1 = require("../logger.js");
const fs_1 = require("fs");
const child_process_1 = require("child_process");
const os_1 = __importDefault(require("os"));
const path_1 = require("path");
exports.infoTool = {
name: 'info',
description: 'Get diagnostic information about the Music MCP server status',
inputSchema: {
type: 'object',
properties: {
command: {
type: 'string',
enum: ['info'],
description: 'Command to execute'
}
},
required: ['command']
}
};
async function handleInfoCommand() {
logger_js_1.logger.info('Handling info command');
const configurationIssues = (0, config_js_1.validateConfig)();
// Check Music app availability
let musicAppAvailable = false;
try {
(0, child_process_1.execSync)('osascript -e "tell application \\"Music\\" to get version"', {
timeout: 5000,
stdio: 'pipe'
});
musicAppAvailable = true;
}
catch (error) {
configurationIssues.push('Music app not accessible or not installed');
}
// Check AppleScript availability
let appleScriptAvailable = false;
try {
(0, child_process_1.execSync)('which osascript', { timeout: 5000, stdio: 'pipe' });
appleScriptAvailable = true;
}
catch (error) {
configurationIssues.push('AppleScript (osascript) not available');
}
// Check logger status - primarily using stderr now
let loggerPath = 'stderr (standard error)';
let loggerStatus = 'ok';
// Check if file logging is enabled and accessible
if (process.env.NODE_ENV === 'development' || process.env.MUSIC_MCP_FILE_LOGGING === 'true') {
const logFile = process.env.MUSIC_MCP_LOG_FILE ||
`${os_1.default.homedir()}/Library/Logs/music-mcp.log`;
try {
const logDir = (0, path_1.dirname)(logFile);
if ((0, fs_1.existsSync)(logDir) || (0, fs_1.existsSync)(logFile)) {
loggerPath = `stderr + file: ${logFile}`;
}
else {
loggerPath = `stderr (file logging failed: ${logFile})`;
configurationIssues.push(`Optional log file directory not accessible: ${logDir}`);
}
}
catch (error) {
loggerPath = 'stderr (file logging disabled due to error)';
}
}
return {
version: (0, version_js_1.getVersion)(),
musicAppAvailable,
appleScriptAvailable,
loggerPath,
loggerStatus,
configurationIssues
};
}