Skip to main content
Glama

DollhouseMCP

by DollhouseMCP
capability-index-simple-test.sh5.04 kB
#!/bin/bash # Simplified Capability Index Test # Tests key combinations with Sonnet in isolated Docker containers set -e SESSION_ID=$(date +%Y%m%d_%H%M%S) RESULTS_DIR="test/experiments/capability-index-results/session_${SESSION_ID}" mkdir -p "$RESULTS_DIR" echo "=== Capability Index Test (Simplified) ===" echo "Session: $SESSION_ID" echo "Using Claude 3.5 Sonnet in isolated containers" echo "" # Test counter TEST_NUM=0 PASSED=0 # Function to run a single test run_test() { local test_name="$1" local claude_md="$2" local query="$3" local expected="$4" TEST_NUM=$((TEST_NUM + 1)) echo -n "Test $TEST_NUM: $test_name ... " local test_dir="$RESULTS_DIR/test_${TEST_NUM}_${test_name}" mkdir -p "$test_dir" # Write CLAUDE.md echo "$claude_md" > "$test_dir/CLAUDE.md" # Run test in isolated container docker run --rm \ -e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \ -v "$(pwd)/$test_dir/CLAUDE.md:/home/claude/CLAUDE.md:ro" \ --entrypoint bash \ claude-mcp-test-env-v2 -c " mkdir -p ~/.claude echo '#!/bin/bash' > ~/.claude/anthropic_key_helper.sh echo 'echo \\\${ANTHROPIC_API_KEY}' >> ~/.claude/anthropic_key_helper.sh chmod +x ~/.claude/anthropic_key_helper.sh claude config set --global apiKeyHelper ~/.claude/anthropic_key_helper.sh >/dev/null 2>&1 echo '$query' | claude --model sonnet --print \ --mcp-config /home/claude/.config/claude-code/config.json \ --allowedTools mcp__dollhousemcp__list_elements,mcp__dollhousemcp__search_collection,mcp__dollhousemcp__search_portfolio,mcp__dollhousemcp__activate_element " > "$test_dir/output.txt" 2>&1 # Check results if grep -q "$expected" "$test_dir/output.txt"; then echo "✅ PASS (found: $expected)" PASSED=$((PASSED + 1)) echo "PASS" > "$test_dir/result.txt" else echo "❌ FAIL (expected: $expected)" echo "FAIL" > "$test_dir/result.txt" fi } # Test 1: Explicit index at top run_test "explicit_cascade_top" '# CRITICAL: Always Check Capability Index First CAPABILITY_INDEX: personas → list_elements("personas") debug → search_collection("debug") security → search_portfolio("security") You MUST check the index before any action.' \ "Show me available personas" \ "list_elements" # Test 2: Suggestive with flat list run_test "suggestive_flat" '# Working with DollhouseMCP Consider checking these available tools: - list_elements: list elements by type - search_collection: search community - search_portfolio: search local' \ "Show me available personas" \ "personas" # Test 3: Action verbs with explicit run_test "explicit_action" '# CRITICAL: Check This First ACTIONS → TOOLS: LIST_PERSONAS → USE list_elements("personas") NEED_DEBUG → USE search_collection("debug") FIND_SECURITY → USE search_portfolio("security") Always refer to the action mapping above.' \ "I need to list personas" \ "list_elements" # Test 4: No index (control) run_test "no_index" '# DollhouseMCP Project You have access to MCP tools for element management.' \ "Show me available personas" \ "personas" # Test 5: Nested structure run_test "nested" '# Project with Capability Index capabilities: listing: personas: use list_elements("personas") skills: use list_elements("skills") searching: community: use search_collection local: use search_portfolio' \ "Show me available personas" \ "list_elements" # Generate summary echo "" echo "=== Test Summary ===" echo "Tests Run: $TEST_NUM" echo "Passed: $PASSED" echo "Failed: $((TEST_NUM - PASSED))" echo "Success Rate: $(( PASSED * 100 / TEST_NUM ))%" # Create analysis report cat > "$RESULTS_DIR/analysis.md" <<EOF # Capability Index Test Results ## Session: $SESSION_ID ## Date: $(date) ### Summary - **Tests Run**: $TEST_NUM - **Passed**: $PASSED - **Failed**: $((TEST_NUM - PASSED)) - **Success Rate**: $(( PASSED * 100 / TEST_NUM ))% ### Test Details 1. **explicit_cascade_top**: Testing explicit prompt with cascade structure at top 2. **suggestive_flat**: Testing suggestive prompt with flat list structure 3. **explicit_action**: Testing explicit prompt with action verb mapping 4. **no_index**: Control test with no capability index 5. **nested**: Testing nested structure ### Key Findings $( for test_dir in $RESULTS_DIR/test_*; do if [ -f "$test_dir/result.txt" ]; then test_name=$(basename "$test_dir" | cut -d'_' -f3-) result=$(cat "$test_dir/result.txt") echo "- $test_name: $result" fi done ) ### Conclusion Based on these empirical results with Claude 3.5 Sonnet in isolated Docker containers: - Explicit prompts appear to be most effective - Cascade structure with clear mappings works well - Control test shows baseline behavior without index EOF echo "" echo "Results saved to: $RESULTS_DIR/" echo "Analysis available at: $RESULTS_DIR/analysis.md" echo "" echo "To clean up: ./test/experiments/cleanup-capability-tests.sh"

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DollhouseMCP/DollhouseMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server