/**
* MySQL Resource - Capabilities
*
* Provides server version, available features, and tool categories.
*/
import type { MySQLAdapter } from '../MySQLAdapter.js';
import type { ResourceDefinition, RequestContext } from '../../../types/index.js';
import { TOOL_GROUPS, META_GROUPS, getMetaGroupInfo, getToolGroupInfo } from '../../../filtering/ToolFilter.js';
export function createCapabilitiesResource(adapter: MySQLAdapter): ResourceDefinition {
return {
uri: 'mysql://capabilities',
name: 'Server Capabilities',
title: 'MySQL Server Capabilities',
description: 'MySQL server version, extensions, and available tool categories',
mimeType: 'application/json',
annotations: {
audience: ['user', 'assistant'],
priority: 0.9
},
handler: async (_uri: string, _context: RequestContext) => {
// Get server version
const versionResult = await adapter.executeQuery('SELECT VERSION() as version');
const version = (versionResult.rows?.[0]?.['version'] as string) ?? 'unknown';
// Get available features
const features = {
json: version.startsWith('5.7') || version.startsWith('8.'),
fulltext: true,
partitioning: true,
replication: true,
gtid: version.startsWith('5.6') || version.startsWith('5.7') || version.startsWith('8.')
};
// Get tool groups and meta-groups info
const toolGroupList = getToolGroupInfo();
const metaGroupList = getMetaGroupInfo();
return {
server: {
version,
features
},
toolCategoryCount: Object.keys(TOOL_GROUPS).length,
metaGroupCount: Object.keys(META_GROUPS).length,
toolGroups: toolGroupList,
metaGroups: metaGroupList
};
}
};
}