import React, { useState } from "react"; import { Modal, Tooltip, Form, Select, message, Button as AntdButton, } from "antd"; import { InfoCircleOutlined } from "@ant-design/icons"; import { Button, TextInput } from "@tremor/react"; import { createMCPServer } from "../networking"; import { MCPServer } from "./types"; import { isAdminRole } from "@/utils/roles"; interface CreateMCPServerProps { userRole: string; accessToken: string | null; onCreateSuccess: (newMcpServer: MCPServer) => void; } const CreateMCPServer: React.FC = ({ userRole, accessToken, onCreateSuccess, }) => { const [form] = Form.useForm(); const [isLoading, setIsLoading] = useState(false); const handleCreate = async (formValues: Record) => { setIsLoading(true); try { console.log(`formValues: ${JSON.stringify(formValues)}`); if (accessToken != null) { const response: MCPServer = await createMCPServer( accessToken, formValues ); message.success("MCP Server created successfully"); form.resetFields(); setModalVisible(false); onCreateSuccess(response); } } catch (error) { message.error("Error creating MCP Server: " + error, 20); } finally { setIsLoading(false); } }; // state const [isModalVisible, setModalVisible] = useState(false); const handleCancel = () => { form.resetFields(); setModalVisible(false); }; // rendering if (!isAdminRole(userRole)) { return null; } return (
MCP Logo

Add New MCP Server

Configure your MCP server connection

} open={isModalVisible} width={1000} onCancel={handleCancel} footer={null} className="top-8" styles={{ body: { padding: '24px' }, header: { padding: '24px 24px 0 24px', border: 'none' }, }} >
MCP Server Name } name="alias" rules={[ { required: false, message: "Please enter a server name" }, ]} > Description} name="description" rules={[ { required: false, message: "Please enter a server description", }, ]} > MCP Server URL * } name="url" rules={[ { required: true, message: "Please enter a server URL" }, { type: 'url', message: "Please enter a valid URL" } ]} >
Transport Type * } name="transport" rules={[{ required: true, message: "Please select a transport type" }]} > Authentication * } name="auth_type" rules={[{ required: true, message: "Please select an auth type" }]} >
MCP Version * } name="spec_version" rules={[ { required: true, message: "Please select a spec version" }, ]} >
); }; export default CreateMCPServer;