The MCP (Model Control Plane) Dashboard provides a comprehensive web interface for managing and executing all MCP server tools. This guide covers the enhanced features added to improve tool coverage and align with the MCP JavaScript SDK.
The dashboard now displays all 50+ available MCP tools organized by category:
- GitHub Tools - Repository, PR, and issue management
- Docker Tools - Container management and orchestration
- Hardware Tools - Hardware information and recommendations
- Runner Tools - GitHub Actions autoscaler management
- IPFS Files Tools - IPFS file operations
- Network Tools - P2P network management
- Models - AI model search and recommendations
- Inference - AI model inference operations
- Workflows - Workflow management
- Dashboard - Dashboard data and metrics
- Other - Additional utilities
The dashboard includes a powerful search feature that allows you to:
- Search tools by name (e.g., "github", "docker")
- Search by category (e.g., "Network", "Hardware")
- Search by description keywords
- Clear filters to show all tools
How to use:
- Navigate to the "MCP Tools" tab
- Type in the search box at the top
- Results update in real-time
- Click "Clear Search" to reset
Each tool is clickable and opens an interactive execution modal with:
- Tool name and description
- Dynamic parameter form based on the tool's input schema
- Parameter validation (required fields marked with *)
- Execute button to run the tool
- Result display with syntax highlighting
- Error handling with detailed messages
How to execute a tool:
- Click on any tool tag
- Fill in the required parameters in the modal
- Click "Execute Tool"
- View the result in the result panel
- Click "Cancel" or close to dismiss the modal
The dashboard exposes several REST API endpoints:
Returns all available MCP tools with categorization and input schemas.
Response:
{
"tools": [
{
"name": "github_list_repos",
"description": "List GitHub repositories",
"category": "GitHub",
"status": "active",
"input_schema": {
"properties": {
"owner": {"type": "string"},
"limit": {"type": "integer"}
}
}
}
],
"categories": {
"GitHub": [...],
"Docker": [...]
},
"total": 50,
"category_count": 10
}Execute MCP tools via JSON-RPC 2.0 protocol.
Request:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "github_list_repos",
"arguments": {
"owner": "octocat",
"limit": 10
}
},
"id": 1
}Response:
{
"jsonrpc": "2.0",
"result": {
"repos": [...],
"total": 10
},
"id": 1
}The enhanced MCP SDK (mcp-sdk.js) provides convenient methods for all tool categories.
// Initialize the client
const client = new MCPClient('/jsonrpc');
// Call any tool by name
const result = await client.callTool('github_list_repos', {
owner: 'octocat',
limit: 10
});// List repositories
const repos = await client.githubListRepos('octocat', 30);
// Get specific repository
const repo = await client.githubGetRepo('octocat', 'hello-world');
// List pull requests
const prs = await client.githubListPrs('octocat', 'hello-world', 'open');
// Get specific PR
const pr = await client.githubGetPr('octocat', 'hello-world', 123);
// List issues
const issues = await client.githubListIssues('octocat', 'hello-world', 'open');
// Get specific issue
const issue = await client.githubGetIssue('octocat', 'hello-world', 456);// Run container
const container = await client.dockerRunContainer('nginx:latest', null, { PORT: '8080' });
// List containers
const containers = await client.dockerListContainers(true);
// Stop container
await client.dockerStopContainer('container_id');
// Pull image
await client.dockerPullImage('redis:alpine');// Get hardware information
const hwInfo = await client.hardwareGetInfo();
// Test hardware
const testResults = await client.hardwareTest();
// Get hardware recommendations
const recommendations = await client.hardwareRecommend('inference');// Start autoscaler
await client.runnerStartAutoscaler('myorg', 60);
// Stop autoscaler
await client.runnerStopAutoscaler();
// Get status
const status = await client.runnerGetStatus();
// List workflows
const workflows = await client.runnerListWorkflows('myorg', 'myrepo');// Add file
const result = await client.ipfsFilesAdd('/path/to/file', 'file content');
// Get file
await client.ipfsFilesGet('QmHash123...', '/output/path');
// Cat file
const content = await client.ipfsFilesCat('QmHash123...');
// Pin file
await client.ipfsFilesPin('QmHash123...');
// List files
const files = await client.ipfsFilesList('/');// List peers
const peers = await client.networkListPeers();
// Connect to peer
await client.networkConnectPeer('/ip4/1.2.3.4/tcp/4001/p2p/QmPeerId');
// Get swarm info
const swarmInfo = await client.networkGetSwarmInfo();
// Get bandwidth stats
const bandwidth = await client.networkGetBandwidth();
// Ping peer
const latency = await client.networkPingPeer('QmPeerId');Execute multiple tools in parallel for better performance:
const results = await client.callToolsBatch([
{
name: 'github_list_repos',
arguments: { owner: 'octocat' }
},
{
name: 'docker_list_containers',
arguments: { all: true }
},
{
name: 'hardware_get_info',
arguments: {}
}
]);
// Results array contains {result: ...} or {error: ...} for each call
results.forEach((res, index) => {
if (res.error) {
console.error(`Call ${index} failed:`, res.error);
} else {
console.log(`Call ${index} succeeded:`, res.result);
}
});github_list_repos- List repositoriesgithub_get_repo- Get repository detailsgithub_list_prs- List pull requestsgithub_get_pr- Get PR detailsgithub_list_issues- List issuesgithub_get_issue- Get issue details
docker_run_container- Run a containerdocker_list_containers- List containersdocker_stop_container- Stop a containerdocker_pull_image- Pull an image
hardware_get_info- Get hardware informationhardware_test- Run hardware testshardware_recommend- Get hardware recommendations
runner_start_autoscaler- Start GitHub Actions autoscalerrunner_stop_autoscaler- Stop autoscalerrunner_get_status- Get autoscaler statusrunner_list_workflows- List workflowsrunner_provision_for_workflow- Provision runner for workflowrunner_list_containers- List runner containersrunner_stop_container- Stop runner container
ipfs_files_add- Add file to IPFSipfs_files_get- Get file from IPFSipfs_files_cat- Cat file contentipfs_files_pin- Pin fileipfs_files_unpin- Unpin fileipfs_files_list- List filesipfs_files_validate_cid- Validate CID
network_list_peers- List connected peersnetwork_connect_peer- Connect to peernetwork_disconnect_peer- Disconnect from peernetwork_dht_put- Put value in DHTnetwork_dht_get- Get value from DHTnetwork_get_swarm_info- Get swarm informationnetwork_get_bandwidth- Get bandwidth statisticsnetwork_ping_peer- Ping a peer
All tool executions include comprehensive error handling:
try {
const result = await client.callTool('github_list_repos', { owner: 'invalid' });
console.log('Success:', result);
} catch (error) {
if (error instanceof MCPError) {
console.error('MCP Error:', error.code, error.message);
console.error('Additional data:', error.data);
} else {
console.error('Network or other error:', error);
}
}Error codes follow JSON-RPC 2.0 specification:
-32700- Parse error-32600- Invalid Request-32601- Method not found / Tool not found-32602- Invalid params-32603- Internal error
- Use category-specific methods when available for better type checking and IDE support
- Batch multiple tool calls when possible to reduce latency
- Handle errors gracefully with try-catch blocks
- Cache tool metadata to avoid repeated API calls
- Use search/filter to quickly find the tool you need
- Test tools with the interactive UI before integrating in code
- Check that the MCP server is running
- Verify network connectivity
- Check browser console for errors
- Try refreshing the tools list
- Verify all required parameters are provided
- Check parameter types match the schema
- Review error message for details
- Ensure tool is available and active
- Make sure tools have been loaded first
- Check that search input is properly focused
- Try clearing and re-entering search terms
Planned features for future releases:
- Tool usage statistics and metrics
- Tool favorites/pinning
- Tool execution history
- Advanced filtering options
- Tool documentation viewer
- Example workflow templates
For issues, questions, or feature requests:
- Open an issue on GitHub
- Check the documentation
- Review existing issues for solutions