Mcp
Dashboard MCP
Model Context Protocol reference for dashboard.do - Dashboard and analytics interface
Dashboard MCP
Dashboard and analytics interface
Overview
The Model Context Protocol (MCP) provides AI models with direct access to dashboard.do through a standardized interface.
Installation
pnpm add @modelcontextprotocol/sdkConfiguration
Add to your MCP server configuration:
{
"mcpServers": {
"dashboard": {
"command": "npx",
"args": ["-y", "@dotdo/mcp-server"],
"env": {
"DO_API_KEY": "your-api-key"
}
}
}
}Tools
dashboard/invoke
Main tool for dashboard.do operations.
{
"name": "dashboard/invoke",
"description": "Dashboard and analytics interface",
"inputSchema": {
"type": "object",
"properties": {
"operation": {
"type": "string",
"description": "Operation to perform"
},
"parameters": {
"type": "object",
"description": "Operation parameters"
}
},
"required": ["operation"]
}
}Usage in AI Models
Claude Desktop
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"dashboard": {
"command": "npx",
"args": ["-y", "@dotdo/mcp-server", "--tool=dashboard"],
"env": {
"DO_API_KEY": "undefined"
}
}
}
}OpenAI GPTs
# Custom GPT configuration
tools:
- type: mcp
server: dashboard
operations:
- invoke
- query
- executeCustom Integration
import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'
const transport = new StdioClientTransport({
command: 'npx',
args: ['-y', '@dotdo/mcp-server', '--tool=dashboard'],
})
const client = new Client(
{
name: 'dashboard-client',
version: '1.0.0',
},
{
capabilities: {},
}
)
await client.connect(transport)
// Call tool
const result = await client.callTool({
name: 'dashboard/invoke',
arguments: {
operation: 'dashboard',
parameters: {},
},
})Tool Definitions
Available Tools
{
"tools": [
{
"name": "dashboard/invoke",
"description": "Invoke dashboard.do",
"inputSchema": {
/* ... */
}
},
{
"name": "dashboard/query",
"description": "Query dashboard.do resources",
"inputSchema": {
/* ... */
}
},
{
"name": "dashboard/status",
"description": "Check dashboard.do status",
"inputSchema": {
/* ... */
}
}
]
}Resources
Available Resources
{
"resources": [
{
"uri": "dashboard://config",
"name": "Dashboard Configuration",
"mimeType": "application/json"
},
{
"uri": "dashboard://docs",
"name": "Dashboard Documentation",
"mimeType": "text/markdown"
}
]
}Prompts
Pre-configured Prompts
{
"prompts": [
{
"name": "dashboard-quick-start",
"description": "Quick start guide for dashboard.do",
"arguments": []
},
{
"name": "dashboard-best-practices",
"description": "Best practices for dashboard.do",
"arguments": []
}
]
}Examples
Basic Usage
// AI model calls tool via MCP
mcp call dashboard/processWith Parameters
// Call with parameters
await mcp.callTool('dashboard/invoke', {
operation: 'process',
parameters: {
// Operation-specific parameters
},
options: {
timeout: 30000,
},
})Error Handling
try {
const result = await mcp.callTool('dashboard/invoke', {
operation: 'process',
})
return result
} catch (error) {
if (error.code === 'TOOL_NOT_FOUND') {
console.error('Dashboard tool not available')
} else {
throw error
}
}AI Integration Patterns
Agentic Workflows
// AI agent uses dashboard.do in workflow
const workflow = {
steps: [
{
tool: 'dashboard/invoke',
operation: 'analyze',
input: 'user-data',
},
{
tool: 'dashboard/process',
operation: 'transform',
input: 'analysis-result',
},
],
}Chain of Thought
AI models can reason about dashboard.do operations:
User: "I need to process this data"
AI: "I'll use the dashboard tool to:
1. Validate the data format
2. Process it through dashboard.do
3. Return the results
Let me start..."
[Calls: mcp call dashboard/process]Server Implementation
Custom MCP Server
import { Server } from '@modelcontextprotocol/sdk/server/index.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
const server = new Server(
{
name: 'dashboard-server',
version: '1.0.0',
},
{
capabilities: {
tools: {},
resources: {},
prompts: {},
},
}
)
// Register tool
server.setRequestHandler('tools/call', async (request) => {
if (request.params.name === 'dashboard/invoke') {
// Handle dashboard.do operation
return {
content: [
{
type: 'text',
text: JSON.stringify(result),
},
],
}
}
})
const transport = new StdioServerTransport()
await server.connect(transport)Best Practices
- Tool Design - Keep tools focused and single-purpose
- Error Messages - Provide clear, actionable errors
- Documentation - Include examples in tool descriptions
- Rate Limiting - Implement appropriate limits
- Security - Validate all inputs from AI models
- Monitoring - Track tool usage and errors