CLI Examples¶
This directory contains practical examples of using the MCP Standards Server CLI in various scenarios.
Quick Examples¶
Basic Commands¶
# Initialize configuration
mcp-standards config --init
# Sync standards
mcp-standards sync
# Check status
mcp-standards status
# Query standards for a React project
mcp-standards query --project-type web-application --framework react
# Validate current directory
mcp-standards validate .
# Start MCP server
mcp-standards serve
Common Use Cases¶
# Validate and auto-fix issues
mcp-standards validate src/ --fix
# Check for standards updates without downloading
mcp-standards sync --check
# Export standards for documentation
mcp-standards query --project-type api --format markdown > api-standards.md
# Clear outdated cache entries
mcp-standards cache --clear-outdated
# Validate with custom config
mcp-standards -c custom-config.yaml validate
Example Scripts¶
Daily Development Script¶
#!/bin/bash
# dev-start.sh - Start development with standards check
echo "🚀 Starting development environment..."
# Update standards if needed
if mcp-standards sync --check | grep -q "outdated"; then
echo "📥 Updating standards..."
mcp-standards sync
fi
# Validate workspace
echo "✅ Checking code standards..."
mcp-standards validate . --severity warning --quiet
# Start MCP server in background
echo "🖥️ Starting MCP server..."
mcp-standards serve --daemon
echo "✨ Ready to code! MCP server running on http://localhost:3000"
Pre-commit Validation¶
#!/bin/bash
# pre-commit.sh - Validate before committing
# Get staged files
STAGED=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(js|jsx|ts|tsx|py)$')
if [ -z "$STAGED" ]; then
echo "No files to validate"
exit 0
fi
echo "Validating staged files..."
echo "$STAGED" | xargs mcp-standards validate --fix
# Re-stage fixed files
echo "$STAGED" | xargs git add
# Final validation
if ! echo "$STAGED" | xargs mcp-standards validate --fail-on error; then
echo "❌ Validation failed. Please fix errors before committing."
exit 1
fi
echo "✅ All checks passed!"
Project Setup Script¶
#!/bin/bash
# setup-project.sh - Set up new project with standards
PROJECT_NAME=$1
PROJECT_TYPE=${2:-web-application}
if [ -z "$PROJECT_NAME" ]; then
echo "Usage: $0 <project-name> [project-type]"
exit 1
fi
echo "🏗️ Setting up project: $PROJECT_NAME"
# Create project directory
mkdir -p "$PROJECT_NAME"
cd "$PROJECT_NAME"
# Initialize git
git init
# Create MCP context
cat > .mcp-context.json << EOF
{
"project_type": "$PROJECT_TYPE",
"name": "$PROJECT_NAME",
"created": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
}
EOF
# Query and save applicable standards
echo "📋 Fetching applicable standards..."
mcp-standards query --context .mcp-context.json --format markdown > PROJECT_STANDARDS.md
# Create project config
cat > .mcp-standards.yaml << EOF
# MCP Standards Configuration for $PROJECT_NAME
project:
name: $PROJECT_NAME
type: $PROJECT_TYPE
validation:
on_save: true
severity: error
sync:
auto_sync: true
EOF
# Set up pre-commit hooks
cat > .pre-commit-config.yaml << EOF
repos:
- repo: local
hooks:
- id: mcp-standards
name: MCP Standards Check
entry: mcp-standards validate
language: system
files: '\.(js|jsx|ts|tsx|py)$'
pass_filenames: true
EOF
echo "✅ Project setup complete!"
echo "📄 See PROJECT_STANDARDS.md for applicable standards"
CI/CD Integration Script¶
#!/bin/bash
# ci-validate.sh - Validation script for CI/CD
set -e # Exit on error
# Configuration
SEVERITY=${MCP_SEVERITY:-error}
FORMAT=${MCP_FORMAT:-json}
OUTPUT_FILE="validation-results.$FORMAT"
echo "🔍 MCP Standards Validation"
echo "=========================="
# Ensure standards are synced
echo "📚 Syncing standards..."
mcp-standards sync
# Run validation
echo "✅ Validating code..."
if mcp-standards validate . \
--severity "$SEVERITY" \
--format "$FORMAT" \
--output "$OUTPUT_FILE"; then
echo "✨ Validation passed!"
EXIT_CODE=0
else
echo "❌ Validation failed!"
EXIT_CODE=1
fi
# Generate report
echo "📊 Generating report..."
mcp-standards report \
--input "$OUTPUT_FILE" \
--format html \
--output standards-report.html
# Show summary
echo ""
echo "Summary:"
echo "--------"
mcp-standards report \
--input "$OUTPUT_FILE" \
--format summary
exit $EXIT_CODE
Batch Processing Script¶
#!/bin/bash
# batch-validate.sh - Validate multiple projects
PROJECTS_DIR=${1:-./projects}
REPORT_DIR=${2:-./reports}
mkdir -p "$REPORT_DIR"
echo "🔄 Batch validation of projects in $PROJECTS_DIR"
echo "Reports will be saved to $REPORT_DIR"
echo ""
# Find all projects with .mcp-standards.yaml
find "$PROJECTS_DIR" -name ".mcp-standards.yaml" -type f | while read -r config_file; do
PROJECT_DIR=$(dirname "$config_file")
PROJECT_NAME=$(basename "$PROJECT_DIR")
echo "📁 Processing: $PROJECT_NAME"
# Run validation
if mcp-standards -c "$config_file" validate "$PROJECT_DIR" \
--format json \
--output "$REPORT_DIR/$PROJECT_NAME.json" 2>/dev/null; then
echo " ✅ Passed"
else
echo " ❌ Failed"
fi
done
# Generate summary report
echo ""
echo "📊 Generating summary report..."
mcp-standards report \
--merge "$REPORT_DIR"/*.json \
--format html \
--output "$REPORT_DIR/summary.html"
echo "✨ Batch validation complete!"
echo "📄 View summary: $REPORT_DIR/summary.html"
Integration Examples¶
Git Hooks¶
# .git/hooks/pre-commit
#!/bin/bash
# Validate before commit
# Only validate if MCP standards is installed
if ! command -v mcp-standards &> /dev/null; then
echo "Warning: mcp-standards not installed, skipping validation"
exit 0
fi
# Get changed files
CHANGED=$(git diff --cached --name-only --diff-filter=ACM)
if [ -n "$CHANGED" ]; then
echo "$CHANGED" | xargs mcp-standards validate --fail-on error
fi
VS Code Tasks¶
// .vscode/tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Validate Current File",
"type": "shell",
"command": "mcp-standards validate ${file}",
"problemMatcher": "$tsc",
"presentation": {
"reveal": "silent",
"focus": false,
"panel": "shared"
}
},
{
"label": "Fix Current File",
"type": "shell",
"command": "mcp-standards validate --fix ${file}",
"presentation": {
"reveal": "always",
"focus": false
}
},
{
"label": "Query Standards",
"type": "shell",
"command": "mcp-standards query --context .mcp-context.json --format markdown",
"presentation": {
"reveal": "always",
"panel": "new"
}
}
]
}
Shell Aliases¶
# Add to ~/.bashrc or ~/.zshrc
# Quick validation
alias mcpv='mcp-standards validate'
alias mcpvf='mcp-standards validate --fix'
# Query shortcuts
alias mcpq='mcp-standards query'
alias mcpqa='mcp-standards query --project-type api'
alias mcpqw='mcp-standards query --project-type web-application'
# Status and sync
alias mcps='mcp-standards status'
alias mcpsync='mcp-standards sync'
# Function for validating specific file types
mcpvalidate() {
local file_type="${1:-js}"
find . -name "*.$file_type" -type f | xargs mcp-standards validate
}
# Function for quick project analysis
mcpanalyze() {
echo "🔍 Analyzing project..."
mcp-standards query --context . --format json | jq -r '.results[] | "- \(.title): \(.summary)"'
}
Docker Integration¶
# Dockerfile with MCP validation
FROM node:18 AS validator
# Install MCP Standards
RUN pip install mcp-standards-server
# Copy source code
COPY . /app
WORKDIR /app
# Validate during build
RUN mcp-standards validate . --fail-on error
# Continue with regular build...
FROM node:18-slim
COPY --from=validator /app /app
WORKDIR /app
RUN npm ci --only=production
CMD ["npm", "start"]
Makefile Integration¶
# Makefile with MCP standards
.PHONY: validate fix sync standards help
validate: ## Validate code against standards
@echo "🔍 Validating code..."
@mcp-standards validate src/ --fail-on error
fix: ## Auto-fix standards violations
@echo "🔧 Fixing violations..."
@mcp-standards validate src/ --fix
sync: ## Sync latest standards
@echo "📥 Syncing standards..."
@mcp-standards sync
standards: ## Show applicable standards
@echo "📋 Applicable standards:"
@mcp-standards query --context .mcp-context.json --format summary
check: validate ## Run all checks
help: ## Show this help
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.DEFAULT_GOAL := help
Advanced Examples¶
Custom Validation Pipeline¶
#!/usr/bin/env python3
# validate_pipeline.py - Custom validation pipeline
import subprocess
import json
import sys
from pathlib import Path
def run_validation(path, standards=None):
"""Run MCP validation with specific standards."""
cmd = ["mcp-standards", "validate", str(path), "--format", "json"]
if standards:
cmd.extend(["--standards", ",".join(standards)])
result = subprocess.run(cmd, capture_output=True, text=True)
return json.loads(result.stdout) if result.stdout else {}
def main():
# Define validation stages
stages = [
{
"name": "Security",
"standards": ["security-*", "auth-*"],
"severity": "error"
},
{
"name": "Performance",
"standards": ["performance-*", "optimization-*"],
"severity": "warning"
},
{
"name": "Accessibility",
"standards": ["wcag-*", "a11y-*"],
"severity": "error"
}
]
all_passed = True
for stage in stages:
print(f"\n🔍 Running {stage['name']} validation...")
result = run_validation(".", stage['standards'])
issues = result.get('issues', [])
errors = [i for i in issues if i['severity'] == 'error']
if errors and stage['severity'] == 'error':
print(f"❌ {stage['name']}: {len(errors)} errors found")
all_passed = False
else:
print(f"✅ {stage['name']}: Passed")
sys.exit(0 if all_passed else 1)
if __name__ == "__main__":
main()
Monitoring Script¶
#!/bin/bash
# monitor-standards.sh - Monitor standards compliance over time
METRICS_FILE="standards-metrics.csv"
TIMESTAMP=$(date +%s)
# Run validation and extract metrics
RESULT=$(mcp-standards validate . --format json)
TOTAL_FILES=$(echo "$RESULT" | jq '.summary.files_scanned')
ERRORS=$(echo "$RESULT" | jq '.summary.errors')
WARNINGS=$(echo "$RESULT" | jq '.summary.warnings')
# Append to metrics file
echo "$TIMESTAMP,$TOTAL_FILES,$ERRORS,$WARNINGS" >> "$METRICS_FILE"
# Generate trend report if enough data
if [ $(wc -l < "$METRICS_FILE") -gt 10 ]; then
echo "📊 Compliance Trend (last 10 checks):"
tail -10 "$METRICS_FILE" | awk -F, '
BEGIN { print "Errors | Warnings" }
{ printf "%6d | %8d\n", $3, $4 }
'
fi
# Alert if errors increase
if [ -f ".last_error_count" ]; then
LAST_ERRORS=$(cat .last_error_count)
if [ "$ERRORS" -gt "$LAST_ERRORS" ]; then
echo "⚠️ Error count increased from $LAST_ERRORS to $ERRORS"
fi
fi
echo "$ERRORS" > .last_error_count
Tips and Tricks¶
- Use JSON output for scripting and automation
- Cache standards to avoid repeated downloads
- Create project-specific configs for consistent validation
- Integrate with existing tools using format converters
- Monitor trends to track improvement over time
- Automate fixes where possible to save time
- Document exceptions when overriding standards