mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-04-18 19:41:31 +00:00
- Add provider registry to manage LLM providers (Claude, Codex, Cursor, Gemini). - Create provider routes for MCP server operations (list, upsert, delete, run). - Implement MCP service for handling server operations and validations. - Introduce abstract provider class and MCP provider base for shared functionality. - Add tests for MCP server operations across different providers and scopes. - Define shared interfaces and types for MCP functionality. - Implement utility functions for handling JSON config files and API responses.
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { ClaudeProvider } from '@/modules/providers/list/claude/claude.provider.js';
|
|
import { CodexProvider } from '@/modules/providers/list/codex/codex.provider.js';
|
|
import { CursorProvider } from '@/modules/providers/list/cursor/cursor.provider.js';
|
|
import { GeminiProvider } from '@/modules/providers/list/gemini/gemini.provider.js';
|
|
import type { IProvider } from '@/shared/interfaces.js';
|
|
import type { LLMProvider } from '@/shared/types.js';
|
|
import { AppError } from '@/shared/utils.js';
|
|
|
|
const providers: Record<LLMProvider, IProvider> = {
|
|
claude: new ClaudeProvider(),
|
|
codex: new CodexProvider(),
|
|
cursor: new CursorProvider(),
|
|
gemini: new GeminiProvider(),
|
|
};
|
|
|
|
/**
|
|
* Central registry for resolving provider MCP implementations by id.
|
|
*/
|
|
export const providerRegistry = {
|
|
listProviders(): IProvider[] {
|
|
return Object.values(providers);
|
|
},
|
|
|
|
resolveProvider(provider: string): IProvider {
|
|
const key = provider as LLMProvider;
|
|
const resolvedProvider = providers[key];
|
|
if (!resolvedProvider) {
|
|
throw new AppError(`Unsupported provider "${provider}".`, {
|
|
code: 'UNSUPPORTED_PROVIDER',
|
|
statusCode: 400,
|
|
});
|
|
}
|
|
|
|
return resolvedProvider;
|
|
},
|
|
};
|