UNPKG

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
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