Skip to content

Workflow MCP Testing Guide ​

Prerequisites ​

Before testing, ensure:

  1. NCP is built: npm run build
  2. Anthropic API key is configured

Step-by-Step Testing ​

Step 1: Verify Workflow MCP is Loaded ​

bash
# Check if workflow MCP is discovered
ncp find "workflow"

# Should show:
# workflow:execute
# workflow:execute-custom
# workflow:execute-task
# workflow:generate-workflow
# workflow:list-workflows

If not found, check:

bash
# Verify file exists
ls -la src/internal-mcps/examples/workflow.mcp.ts

# Rebuild
npm run build

Step 2: Configure Anthropic API Key ​

Option A: Add to NCP profile (recommended):

Edit ~/.ncp/all.json:

json
{
  "mcpServers": {
    "workflow": {
      "type": "internal",
      "env": {
        "ANTHROPIC_API_KEY": "_USE_SECURE_STORAGE_"
      }
    }
  }
}

Then run any workflow tool - you'll be prompted to enter the key.

Option B: Set environment variable:

bash
export ANTHROPIC_API_KEY="sk-ant-..."

Step 3: Test Simple Task Execution ​

Test 1: Basic intelligent task

bash
ncp run workflow:execute-task \
  task="Write a haiku about programming"

Expected output:

json
{
  "task": "Write a haiku about programming",
  "result": "Code flows like water...",
  "usage": { "input_tokens": 25, "output_tokens": 50 },
  "model": "claude-3-5-sonnet-20241022"
}

Test 2: Task with context

bash
ncp run workflow:execute-task \
  task="Summarize these GitHub issues" \
  context='{"issues":["Bug in login","Feature request: dark mode","Performance issue"]}'

Step 4: Test Workflow Listing ​

bash
ncp run workflow:list-workflows

Expected output:

json
{
  "workflows": [
    {
      "name": "daily-standup",
      "description": "Daily standup: Check issues, summarize, post to Slack",
      "requiredContext": ["slackWebhook", "repo"],
      "recommendedSchedule": "0 9 * * 1-5"
    },
    // ... more workflows
  ]
}

Step 5: Test Workflow Generation ​

bash
ncp run workflow:generate-workflow \
  description="Every hour, check Hacker News front page, find AI-related posts, summarize them, and save to a file"

Expected: Claude generates a workflow definition with steps.

Step 6: Test Predefined Workflow (Simulation) ​

Since predefined workflows need actual MCPs (GitHub, Slack, etc.), let's test the structure:

bash
# This will execute but may fail at tool calling (expected)
ncp run workflow:execute \
  workflowName="daily-standup" \
  context='{"slackWebhook":"https://test.webhook","repo":"test/repo"}'

Expected behavior:

  • ✅ Workflow loads correctly
  • ✅ Steps are identified
  • ⚠️ Tool calls may fail (if GitHub/Slack MCPs not configured)
  • ✅ State tracking works

Step 7: Test Custom Workflow ​

Create a simple test workflow:

bash
ncp run workflow:execute-custom \
  workflow='{
    "name": "test-workflow",
    "description": "Simple test workflow",
    "steps": [
      {
        "name": "Step 1: Think",
        "description": "Generate a random fact about cats"
      },
      {
        "name": "Step 2: Analyze",
        "description": "Explain why cats are interesting"
      }
    ]
  }'

Expected output:

json
{
  "workflowName": "test-workflow",
  "status": "completed",
  "results": [
    {
      "step": "Step 1: Think",
      "success": true,
      "output": "Cats can rotate their ears 180 degrees...",
      "timestamp": "2024-01-15T10:00:00Z"
    },
    {
      "step": "Step 2: Analyze",
      "success": true,
      "output": "Cats are interesting because...",
      "timestamp": "2024-01-15T10:00:05Z"
    }
  ],
  "startTime": "2024-01-15T10:00:00Z",
  "endTime": "2024-01-15T10:00:05Z"
}

Integration Testing with Other MCPs ​

Test with AI MCP ​

bash
ncp run workflow:execute-custom \
  workflow='{
    "name": "ai-test",
    "description": "Test AI integration",
    "steps": [
      {
        "name": "Generate Text",
        "description": "Use AI to write a short poem",
        "tool": "ai:complete",
        "parameters": {
          "prompt": "Write a short poem about technology",
          "provider": "anthropic"
        }
      }
    ]
  }'

Note: This requires AI MCP to be configured with API keys.

Test with Database MCP ​

bash
ncp run workflow:execute-custom \
  workflow='{
    "name": "db-test",
    "description": "Test database workflow",
    "steps": [
      {
        "name": "Create Test DB",
        "description": "Create a test database table",
        "tool": "database:create-table",
        "parameters": {
          "dbPath": "./test-workflow.db",
          "tableName": "workflow_tests",
          "columns": {"id": "INTEGER PRIMARY KEY", "name": "TEXT", "timestamp": "TEXT"}
        }
      },
      {
        "name": "Insert Test Data",
        "description": "Insert a test record",
        "tool": "database:insert",
        "parameters": {
          "dbPath": "./test-workflow.db",
          "tableName": "workflow_tests",
          "data": {"name": "Test Workflow", "timestamp": "2024-01-15"}
        }
      }
    ]
  }'

Testing with Schedule MCP Integration ​

Step 1: Test Workflow Manually ​

bash
# Create a simple workflow that just logs
ncp run workflow:execute-task \
  task="Return the current date and time with a friendly message"

Step 2: Schedule It ​

bash
# Schedule to run every 5 minutes for testing
ncp run schedule:add \
  name="test-workflow" \
  command="ncp run workflow:execute-task task='Log test execution at current time'" \
  schedule="*/5 * * * *" \
  description="Test workflow execution every 5 minutes"

Step 3: Verify Schedule ​

bash
# List schedules
ncp run schedule:list

# Should show your test-workflow

Step 4: Monitor Execution ​

Wait 5 minutes and check if it ran:

bash
# Check schedule status/logs (if supported)
ncp run schedule:get name="test-workflow"

Step 5: Remove Test Schedule ​

bash
ncp run schedule:remove name="test-workflow"

Troubleshooting Tests ​

Issue 1: "workflow not found" ​

Symptom:

Error: Tool not found: workflow:execute

Solutions:

bash
# 1. Rebuild
npm run build

# 2. Check file exists
ls src/internal-mcps/examples/workflow.mcp.ts

# 3. Check for TypeScript errors
npm run build 2>&1 | grep workflow

# 4. Verify SimpleMCP loader is working
ncp find "ai"  # Test with another example MCP

Issue 2: "ANTHROPIC_API_KEY not configured" ​

Symptom:

Error: ANTHROPIC_API_KEY not configured.

Solution:

bash
# Option 1: Set environment variable
export ANTHROPIC_API_KEY="sk-ant-..."

# Option 2: Add to profile
# Edit ~/.ncp/all.json and add workflow MCP config

# Verify
echo $ANTHROPIC_API_KEY

Issue 3: Workflow executes but tool calls fail ​

Symptom:

json
{
  "step": "Call GitHub",
  "success": false,
  "error": "Tool github:list-issues not found"
}

Explanation: This is expected if referenced MCPs aren't configured.

Solutions:

  1. Configure the referenced MCP (e.g., GitHub)
  2. Or test with a workflow that doesn't call external tools
  3. Or modify workflow to use available MCPs only

Issue 4: Conditional steps not working ​

Test conditional logic:

bash
ncp run workflow:execute-custom \
  workflow='{
    "name": "conditional-test",
    "steps": [
      {
        "name": "Step 1",
        "description": "Always runs"
      },
      {
        "name": "Step 2",
        "description": "Should skip",
        "condition": "false"
      },
      {
        "name": "Step 3",
        "description": "Should run",
        "condition": "true"
      }
    ]
  }' \
  context='{}'

Expected: Step 2 skipped, Steps 1 and 3 executed.

Performance Testing ​

Test 1: Single Step Latency ​

bash
time ncp run workflow:execute-task \
  task="Say hello"

Expected: ~2-5 seconds (depends on Claude API latency)

Test 2: Multi-Step Workflow Latency ​

bash
time ncp run workflow:execute-custom \
  workflow='{
    "name": "multi-step",
    "steps": [
      {"name": "Step 1", "description": "First step"},
      {"name": "Step 2", "description": "Second step"},
      {"name": "Step 3", "description": "Third step"}
    ]
  }'

Expected: ~6-15 seconds (3 steps × 2-5 seconds each)

Test 3: Token Usage ​

Check how many tokens workflows consume:

bash
ncp run workflow:execute-task \
  task="Generate a comprehensive report about AI trends" | jq '.usage'

Test Checklist ​

Before considering Workflow MCP ready:

  • [ ] ncp find "workflow" shows all 5 tools
  • [ ] execute-task works with simple task
  • [ ] list-workflows returns predefined workflows
  • [ ] generate-workflow creates valid workflow from description
  • [ ] execute-custom runs multi-step workflow
  • [ ] Error handling works (test with invalid API key)
  • [ ] Integration with Schedule MCP works
  • [ ] State tracking shows correct status
  • [ ] Conditional steps execute correctly
  • [ ] Context variables are accessible in steps

Quick Test Script ​

Save this as test-workflow.sh:

bash
#!/bin/bash

echo "Testing Workflow MCP..."

echo "1. Testing discovery..."
ncp find "workflow" | grep -q "workflow:execute" && echo "✓ Discovery works" || echo "✗ Discovery failed"

echo "2. Testing simple task..."
ncp run workflow:execute-task task="Say hello in French" > /dev/null 2>&1 && echo "✓ Simple task works" || echo "✗ Simple task failed"

echo "3. Testing workflow listing..."
ncp run workflow:list-workflows | grep -q "daily-standup" && echo "✓ Workflow listing works" || echo "✗ Workflow listing failed"

echo "4. Testing custom workflow..."
ncp run workflow:execute-custom workflow='{"name":"test","steps":[{"name":"test","description":"test step"}]}' > /dev/null 2>&1 && echo "✓ Custom workflow works" || echo "✗ Custom workflow failed"

echo "Done!"

Run it:

bash
chmod +x test-workflow.sh
./test-workflow.sh

Next Steps ​

After basic testing works:

  1. Test real workflows with actual MCP integrations
  2. Schedule workflows with Schedule MCP
  3. Monitor execution over time
  4. Optimize based on token usage and latency
  5. Create custom workflows for your specific use cases

Happy testing! 🚀

Released under the Elastic License 2.0.