feat(mcp): add Model Context Protocol integration
Add MCP integration including: - New MCP settings tab with server configuration - Tool invocation UI components - API endpoints for MCP management - Integration with chat system for tool execution - Example configurations
This commit is contained in:
@@ -33,7 +33,7 @@ interface ControlPanelProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Beta status for experimental features
|
// Beta status for experimental features
|
||||||
const BETA_TABS = new Set<TabType>(['service-status', 'local-providers']);
|
const BETA_TABS = new Set<TabType>(['service-status', 'local-providers', 'mcp']);
|
||||||
|
|
||||||
const BetaLabel = () => (
|
const BetaLabel = () => (
|
||||||
<div className="absolute top-2 right-2 px-1.5 py-0.5 rounded-full bg-purple-500/10 dark:bg-purple-500/20">
|
<div className="absolute top-2 right-2 px-1.5 py-0.5 rounded-full bg-purple-500/10 dark:bg-purple-500/20">
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ export const TAB_ICONS: Record<TabType, string> = {
|
|||||||
'cloud-providers': 'i-ph:cloud',
|
'cloud-providers': 'i-ph:cloud',
|
||||||
'local-providers': 'i-ph:laptop',
|
'local-providers': 'i-ph:laptop',
|
||||||
'service-status': 'i-ph:activity-bold',
|
'service-status': 'i-ph:activity-bold',
|
||||||
connection: 'i-ph:wifi-high-fill',
|
connection: 'i-ph:wifi-high',
|
||||||
'event-logs': 'i-ph:list-bullets-fill',
|
'event-logs': 'i-ph:list-bullets',
|
||||||
mcp: 'i-ph:hard-drives-bold',
|
mcp: 'i-ph:hard-drives-bold',
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -53,7 +53,8 @@ export const DEFAULT_TAB_CONFIG = [
|
|||||||
{ id: 'event-logs', visible: true, window: 'user' as const, order: 6 },
|
{ id: 'event-logs', visible: true, window: 'user' as const, order: 6 },
|
||||||
{ id: 'mcp', visible: true, window: 'user' as const, order: 7 },
|
{ id: 'mcp', visible: true, window: 'user' as const, order: 7 },
|
||||||
{ id: 'profile', visible: true, window: 'user' as const, order: 8 },
|
{ id: 'profile', visible: true, window: 'user' as const, order: 8 },
|
||||||
{ id: 'settings', visible: true, window: 'user' as const, order: 9 },
|
{ id: 'service-status', visible: true, window: 'user' as const, order: 9 },
|
||||||
{ id: 'service-status', visible: true, window: 'user' as const, order: 10 },
|
|
||||||
{ id: 'update', visible: true, window: 'user' as const, order: 11 },
|
// User Window Tabs (In dropdown, initially hidden)
|
||||||
|
{ id: 'settings', visible: false, window: 'user' as const, order: 10 },
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ import type { ElementInfo } from '~/components/workbench/Inspector';
|
|||||||
import type { TextUIPart, FileUIPart, Attachment } from '@ai-sdk/ui-utils';
|
import type { TextUIPart, FileUIPart, Attachment } from '@ai-sdk/ui-utils';
|
||||||
import { useMCPStore } from '~/lib/stores/mcp';
|
import { useMCPStore } from '~/lib/stores/mcp';
|
||||||
import type { LlmErrorAlertType } from '~/types/actions';
|
import type { LlmErrorAlertType } from '~/types/actions';
|
||||||
|
import type { TextUIPart, FileUIPart, Attachment } from '@ai-sdk/ui-utils';
|
||||||
|
import { useMCPStore } from '~/lib/stores/mcp';
|
||||||
|
|
||||||
const toastAnimation = cssTransition({
|
const toastAnimation = cssTransition({
|
||||||
enter: 'animated fadeInRight',
|
enter: 'animated fadeInRight',
|
||||||
|
|||||||
Reference in New Issue
Block a user