@gluneau/hive-mcp-server
Version:
An MCP server that enables AI assistants to interact with the Hive blockchain
85 lines • 2.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.canPerformTokenTransfers = exports.canPerformAuthenticatedOperations = exports.refreshEnvConfig = exports.getConfig = exports.validatePrivateKey = void 0;
// Configuration manager for environment variables and settings
const dhive_1 = require("@hiveio/dhive");
const fs_1 = require("fs");
const path_1 = require("path");
// Read package.json for server info
function getPackageInfo() {
try {
const packagePath = (0, path_1.join)(__dirname, '..', 'package.json');
const packageJson = JSON.parse((0, fs_1.readFileSync)(packagePath, 'utf8'));
return {
name: packageJson.name || 'HiveServer',
version: packageJson.version || '1.0.0'
};
}
catch (error) {
// Fallback values if package.json cannot be read
return { name: 'HiveServer', version: '1.0.0' };
}
}
// Create a function to read environment variables
const readEnvConfig = () => {
return {
username: process.env.HIVE_USERNAME,
postingKey: process.env.HIVE_POSTING_KEY,
activeKey: process.env.HIVE_ACTIVE_KEY,
memoKey: process.env.HIVE_MEMO_KEY,
};
};
// Get package info for server configuration
const packageInfo = getPackageInfo();
// Default configuration
const defaultConfig = {
hive: readEnvConfig(),
server: {
name: packageInfo.name,
version: packageInfo.version,
},
log: {
logLevel: 'info',
},
};
// Validate a private key format (without logging the actual key)
const validatePrivateKey = (key) => {
if (!key)
return false;
try {
dhive_1.PrivateKey.fromString(key);
return true;
}
catch (error) {
return false;
}
};
exports.validatePrivateKey = validatePrivateKey;
// Get the configuration
const getConfig = () => {
return defaultConfig;
};
exports.getConfig = getConfig;
// Refresh the environment variables in the config
const refreshEnvConfig = () => {
defaultConfig.hive = readEnvConfig();
};
exports.refreshEnvConfig = refreshEnvConfig;
// Check if the authenticated operations are available
const canPerformAuthenticatedOperations = () => {
// Always read the latest environment values
(0, exports.refreshEnvConfig)();
const { username, postingKey } = defaultConfig.hive;
return Boolean(username && postingKey && (0, exports.validatePrivateKey)(postingKey));
};
exports.canPerformAuthenticatedOperations = canPerformAuthenticatedOperations;
// Check if token transfers are available
const canPerformTokenTransfers = () => {
// Always read the latest environment values
(0, exports.refreshEnvConfig)();
const { username, activeKey } = defaultConfig.hive;
return Boolean(username && activeKey && (0, exports.validatePrivateKey)(activeKey));
};
exports.canPerformTokenTransfers = canPerformTokenTransfers;
exports.default = defaultConfig;
//# sourceMappingURL=index.js.map