templui-mcp-server
Version:
A Model Context Protocol (MCP) server for TemplUI components, providing AI assistants with access to component source code, documentation, demos, and metadata.
131 lines • 5.62 kB
JavaScript
import { handleGetComponent, setGitHubClient as setGitHubClientComponent } from './get-component.js';
import { handleGetComponentDemo, setGitHubClient as setGitHubClientDemo } from './get-component-demo.js';
import { handleGetComponentDocs, setDocumentationParser as setDocumentationParserDocs } from './get-component-docs.js';
import { handleGetComponentJavaScript, setGitHubClient as setGitHubClientJS } from './get-component-javascript.js';
import { handleGetComponentMetadata, setDocumentationParser as setDocumentationParserMeta } from './get-component-metadata.js';
import { handleListComponents, initializeGitHubIntegration } from './list-components.js';
import { handleCheckUpdates, initializeUpdater as initializeUpdaterCheck } from './check-updates.js';
import { handleRefreshCache, initializeUpdater as initializeUpdaterCache } from './refresh-cache.js';
import { schema as getComponentSchema } from './get-component.js';
import { schema as getComponentDemoSchema } from './get-component-demo.js';
import { schema as getComponentDocsSchema } from './get-component-docs.js';
import { schema as getComponentJavaScriptSchema } from './get-component-javascript.js';
import { schema as getComponentMetadataSchema } from './get-component-metadata.js';
import { schema as listComponentsSchema } from './list-components.js';
import { schema as checkUpdatesSchema } from './check-updates.js';
import { schema as refreshCacheSchema } from './refresh-cache.js';
import { Updater } from '../utils/updater.js';
// Tool handlers
export const toolHandlers = {
get_component: handleGetComponent,
get_component_demo: handleGetComponentDemo,
get_component_docs: handleGetComponentDocs,
get_component_javascript: handleGetComponentJavaScript,
get_component_metadata: handleGetComponentMetadata,
list_components: handleListComponents,
check_updates: handleCheckUpdates,
refresh_cache: handleRefreshCache
};
// Tool schemas
export const toolSchemas = {
get_component: getComponentSchema,
get_component_demo: getComponentDemoSchema,
get_component_docs: getComponentDocsSchema,
get_component_javascript: getComponentJavaScriptSchema,
get_component_metadata: getComponentMetadataSchema,
list_components: listComponentsSchema,
check_updates: checkUpdatesSchema,
refresh_cache: refreshCacheSchema
};
// Tool definitions for MCP
export const tools = {
'get_component': {
name: 'get_component',
description: 'Get the source code (.templ file) for a specific TemplUI component with helpful comments',
inputSchema: {
type: 'object',
properties: getComponentSchema,
required: ['componentName']
}
},
'get_component_demo': {
name: 'get_component_demo',
description: 'Get demo/example code showing how to use a TemplUI component',
inputSchema: {
type: 'object',
properties: getComponentDemoSchema,
required: ['componentName']
}
},
'get_component_docs': {
name: 'get_component_docs',
description: 'Get documentation for a TemplUI component including installation and usage',
inputSchema: {
type: 'object',
properties: getComponentDocsSchema,
required: ['componentName']
}
},
'get_component_javascript': {
name: 'get_component_javascript',
description: 'Get JavaScript code for a TemplUI component (if it has client-side functionality)',
inputSchema: {
type: 'object',
properties: getComponentJavaScriptSchema,
required: ['componentName']
}
},
'get_component_metadata': {
name: 'get_component_metadata',
description: 'Get detailed metadata for a TemplUI component including props, category, and features',
inputSchema: {
type: 'object',
properties: getComponentMetadataSchema,
required: ['componentName']
}
},
'list_components': {
name: 'list_components',
description: 'Get a list of all available TemplUI components, optionally filtered by category',
inputSchema: {
type: 'object',
properties: listComponentsSchema
}
},
'check_updates': {
name: 'check_updates',
description: 'Check for updates in the TemplUI repository and show current status',
inputSchema: {
type: 'object',
properties: checkUpdatesSchema
}
},
'refresh_cache': {
name: 'refresh_cache',
description: 'Clear cached data and force fresh retrieval from sources',
inputSchema: {
type: 'object',
properties: refreshCacheSchema
}
}
};
/**
* Initialize all tools with required dependencies
*/
export function initializeTools(githubClient, documentationParser) {
// Set dependencies for GitHub-based tools
setGitHubClientComponent(githubClient);
setGitHubClientDemo(githubClient);
setGitHubClientJS(githubClient);
// Set dependencies for documentation-based tools
setDocumentationParserDocs(documentationParser);
setDocumentationParserMeta(documentationParser);
// Initialize updater for new tools
const updater = new Updater(githubClient);
// Set dependencies for list components with GitHub integration
initializeGitHubIntegration(githubClient, updater);
// Set dependencies for new tools
initializeUpdaterCheck(updater);
initializeUpdaterCache(updater);
}
//# sourceMappingURL=index.js.map