marketing-post-generator-mcp
Version:
A powerful MCP server for AI-powered marketing blog post generation with Claude integration
90 lines • 3.15 kB
TypeScript
import { Tool, Prompt } from '@modelcontextprotocol/sdk/types.js';
import winston from 'winston';
import { ToolRegistryEntry, PromptRegistryEntry, RegistryConfig, RegistryStats, DiscoveryEntry, DiscoveryMetadata, ExecutionContext, RegistryEvent } from './types.js';
/**
* Central registry for managing MCP tools and prompts
*/
export declare class ToolAndPromptRegistry {
private readonly tools;
private readonly prompts;
private readonly config;
private readonly logger;
private readonly eventListeners;
constructor(config?: Partial<RegistryConfig>, logger?: winston.Logger);
/**
* Register a tool in the registry
*/
registerTool(toolDefinition: Tool, handler: (args: any) => Promise<any>, metadata?: Partial<Omit<ToolRegistryEntry, 'type' | 'toolDefinition' | 'handler'>>): Promise<void>;
/**
* Register a prompt in the registry
*/
registerPrompt(promptDefinition: Prompt, handler: (args: any) => Promise<string>, metadata?: Partial<Omit<PromptRegistryEntry, 'type' | 'promptDefinition' | 'handler'>>): Promise<void>;
/**
* Register multiple tools and prompts at once
*/
registerAll(tools: Array<{
definition: Tool;
handler: (args: any) => Promise<any>;
metadata?: Partial<Omit<ToolRegistryEntry, 'type' | 'toolDefinition' | 'handler'>>;
}>, prompts: Array<{
definition: Prompt;
handler: (args: any) => Promise<string>;
metadata?: Partial<Omit<PromptRegistryEntry, 'type' | 'promptDefinition' | 'handler'>>;
}>): Promise<void>;
/**
* Get a tool by name
*/
getTool(name: string): ToolRegistryEntry | undefined;
/**
* Get a prompt by name
*/
getPrompt(name: string): PromptRegistryEntry | undefined;
/**
* Get all tool definitions for MCP server registration
*/
getToolDefinitions(): Tool[];
/**
* Get all prompt definitions for MCP server registration
*/
getPromptDefinitions(): Prompt[];
/**
* Execute a tool by name
*/
executeTool(name: string, args: any, context?: Partial<ExecutionContext>): Promise<any>;
/**
* Execute a prompt by name
*/
executePrompt(name: string, args: any, context?: Partial<ExecutionContext>): Promise<string>;
/**
* Get discovery metadata for client exploration
*/
getDiscoveryMetadata(): DiscoveryMetadata;
/**
* Get discovery entries for client exploration
*/
getDiscoveryEntries(): DiscoveryEntry[];
/**
* Get registry statistics
*/
getStats(): RegistryStats;
/**
* Add event listener for registry events
*/
addEventListener(listener: (event: RegistryEvent) => void): void;
/**
* Remove event listener
*/
removeEventListener(listener: (event: RegistryEvent) => void): void;
/**
* Clear all registered tools and prompts
*/
clear(): void;
private registerEntry;
private validateEntry;
private generateId;
private compareVersions;
private formatVersion;
private emitEvent;
private log;
}
//# sourceMappingURL=ToolAndPromptRegistry.d.ts.map