MCPcopy Create free account
hub / github.com/modelcontextprotocol/inspector / ToolsTab

Function ToolsTab

client/src/components/ToolsTab.tsx:167–903  ·  view source on GitHub ↗
({
  tools,
  listTools,
  clearTools,
  callTool,
  selectedTool,
  setSelectedTool,
  toolResult,
  isPollingTask,
  nextCursor,
  error,
  resourceContent,
  onReadResource,
  serverSupportsTaskRequests,
}: {
  tools: Tool[];
  listTools: () => void;
  clearTools: () => void;
  callTool: (
    name: string,
    params: Record<string, unknown>,
    metadata?: Record<string, unknown>,
    runAsTask?: boolean,
  ) => Promise<CompatibilityCallToolResult>;
  selectedTool: Tool | null;
  setSelectedTool: (tool: Tool | null) => void;
  toolResult: CompatibilityCallToolResult | null;
  isPollingTask?: boolean;
  nextCursor: ListToolsResult["nextCursor"];
  error: string | null;
  resourceContent: Record<string, string>;
  onReadResource?: (uri: string) => void;
  serverSupportsTaskRequests: boolean;
})

Source from the content-addressed store, hash-verified

165};
166
167const ToolsTab = ({
168 tools,
169 listTools,
170 clearTools,
171 callTool,
172 selectedTool,
173 setSelectedTool,
174 toolResult,
175 isPollingTask,
176 nextCursor,
177 error,
178 resourceContent,
179 onReadResource,
180 serverSupportsTaskRequests,
181}: {
182 tools: Tool[];
183 listTools: () => void;
184 clearTools: () => void;
185 callTool: (
186 name: string,
187 params: Record<string, unknown>,
188 metadata?: Record<string, unknown>,
189 runAsTask?: boolean,
190 ) => Promise<CompatibilityCallToolResult>;
191 selectedTool: Tool | null;
192 setSelectedTool: (tool: Tool | null) => void;
193 toolResult: CompatibilityCallToolResult | null;
194 isPollingTask?: boolean;
195 nextCursor: ListToolsResult["nextCursor"];
196 error: string | null;
197 resourceContent: Record<string, string>;
198 onReadResource?: (uri: string) => void;
199 serverSupportsTaskRequests: boolean;
200}) => {
201 const [params, setParams] = useState<Record<string, unknown>>({});
202 const [runAsTask, setRunAsTask] = useState(false);
203 const [isToolRunning, setIsToolRunning] = useState(false);
204 const [isOutputSchemaExpanded, setIsOutputSchemaExpanded] = useState(false);
205 const [isMetadataExpanded, setIsMetadataExpanded] = useState(false);
206 const [metadataEntries, setMetadataEntries] = useState<
207 { id: string; key: string; value: string }[]
208 >([]);
209 const [hasValidationErrors, setHasValidationErrors] = useState(false);
210 const formRefs = useRef<Record<string, DynamicJsonFormRef | null>>({});
211 const { toast } = useToast();
212 const { copied, setCopied } = useCopy();
213
214 // Function to check if any form has validation errors
215 const checkValidationErrors = (validateChildren: boolean = false) => {
216 const errors = Object.values(formRefs.current).some(
217 (ref) =>
218 ref &&
219 (validateChildren ? !ref.validateJson().isValid : ref.hasJsonError()),
220 );
221 setHasValidationErrors(errors);
222 return errors;
223 };
224

Callers

nothing calls this directly

Calls 15

useToastFunction · 0.90
resolveRefFunction · 0.90
generateDefaultValueFunction · 0.90
isReservedMetaKeyFunction · 0.90
hasValidMetaPrefixFunction · 0.90
hasValidMetaNameFunction · 0.90
normalizeUnionTypeFunction · 0.90
isPropertyRequiredFunction · 0.90
cnFunction · 0.90
useCopyFunction · 0.85
getTaskSupportFunction · 0.85
hasAnnotationsFunction · 0.85

Tested by

no test coverage detected