Mcp
Workflows MCP
Model Context Protocol reference for workflows.do - Declarative orchestration of business processes
Workflows MCP
Declarative orchestration of business processes
Overview
The Model Context Protocol (MCP) provides AI models with direct access to workflows.do through a standardized interface.
Installation
pnpm add @modelcontextprotocol/sdkConfiguration
Add to your MCP server configuration:
{
"mcpServers": {
"workflows": {
"command": "npx",
"args": ["-y", "@dotdo/mcp-server"],
"env": {
"DO_API_KEY": "your-api-key"
}
}
}
}Tools
workflows/invoke
Main tool for workflows.do operations.
{
"name": "workflows/invoke",
"description": "Declarative orchestration of business processes",
"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": {
"workflows": {
"command": "npx",
"args": ["-y", "@dotdo/mcp-server", "--tool=workflows"],
"env": {
"DO_API_KEY": "undefined"
}
}
}
}OpenAI GPTs
# Custom GPT configuration
tools:
- type: mcp
server: workflows
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=workflows'],
})
const client = new Client(
{
name: 'workflows-client',
version: '1.0.0',
},
{
capabilities: {},
}
)
await client.connect(transport)
// Call tool
const result = await client.callTool({
name: 'workflows/invoke',
arguments: {
operation: 'workflows',
parameters: {},
},
})Tool Definitions
Available Tools
{
"tools": [
{
"name": "workflows/invoke",
"description": "Invoke workflows.do",
"inputSchema": {
/* ... */
}
},
{
"name": "workflows/query",
"description": "Query workflows.do resources",
"inputSchema": {
/* ... */
}
},
{
"name": "workflows/status",
"description": "Check workflows.do status",
"inputSchema": {
/* ... */
}
}
]
}Resources
Available Resources
{
"resources": [
{
"uri": "workflows://config",
"name": "Workflows Configuration",
"mimeType": "application/json"
},
{
"uri": "workflows://docs",
"name": "Workflows Documentation",
"mimeType": "text/markdown"
}
]
}Prompts
Pre-configured Prompts
{
"prompts": [
{
"name": "workflows-quick-start",
"description": "Quick start guide for workflows.do",
"arguments": []
},
{
"name": "workflows-best-practices",
"description": "Best practices for workflows.do",
"arguments": []
}
]
}Examples
Basic Usage
// AI model calls tool via MCP
mcp call workflows/executeWith Parameters
// Call with parameters
await mcp.callTool('workflows/invoke', {
operation: 'process',
parameters: {
// Operation-specific parameters
},
options: {
timeout: 30000,
},
})Error Handling
try {
const result = await mcp.callTool('workflows/invoke', {
operation: 'process',
})
return result
} catch (error) {
if (error.code === 'TOOL_NOT_FOUND') {
console.error('Workflows tool not available')
} else {
throw error
}
}AI Integration Patterns
Agentic Workflows
// AI agent uses workflows.do in workflow
const workflow = {
steps: [
{
tool: 'workflows/invoke',
operation: 'analyze',
input: 'user-data',
},
{
tool: 'workflows/process',
operation: 'transform',
input: 'analysis-result',
},
],
}Chain of Thought
AI models can reason about workflows.do operations:
User: "I need to process this data"
AI: "I'll use the workflows tool to:
1. Validate the data format
2. Process it through workflows.do
3. Return the results
Let me start..."
[Calls: mcp call workflows/execute]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: 'workflows-server',
version: '1.0.0',
},
{
capabilities: {
tools: {},
resources: {},
prompts: {},
},
}
)
// Register tool
server.setRequestHandler('tools/call', async (request) => {
if (request.params.name === 'workflows/invoke') {
// Handle workflows.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