Skip to main content
Glama

MCP Context Provider

WORKFLOW_TROUBLESHOOTING.md8.8 kB
# GitHub Actions Workflow Troubleshooting Guide This guide provides comprehensive troubleshooting steps to ensure GitHub Actions workflows run successfully in the MCP Context Provider repository. ## 🔍 Quick Diagnostic Commands ```bash # Validate all workflows python scripts/test_workflows.py --report # Check recent workflow runs gh run list --limit=10 # View specific workflow run details gh run view <run-id> # View failed workflow logs gh run view <run-id> --log-failed ``` ## 🛠️ Common Issues and Solutions ### 1. Permission Errors (403 Forbidden) **Symptoms:** - `⚠️ GitHub release failed with status: 403` - `Resource not accessible by integration` - Release creation fails **Root Cause:** Missing or insufficient `GITHUB_TOKEN` permissions in workflow. **Solution:** Ensure workflows have proper permissions block: ```yaml permissions: contents: write # Required to create releases and upload assets actions: read # Required to read workflow status checks: read # Required to read check results ``` **Applied Fix:** - ✅ Added permissions to `.github/workflows/release.yml` - ✅ Added permissions to `.github/workflows/ci.yml` ### 2. Missing Files During Build **Symptoms:** - `No such file or directory: test_build.py` - Build artifacts not found - Context files missing **Root Cause:** Files excluded by `.gitignore` or incorrect path references. **Solution:** 1. Review `.gitignore` patterns: ```bash # Too broad - excludes needed files test_*.py # Better - specific exclusions test_server.py test_session_init.py ``` 2. Verify file paths in workflow: ```bash ls -la scripts/ # Check if files exist git ls-files | grep test # Check what's tracked ``` **Applied Fix:** - ✅ Made `.gitignore` more specific - ✅ Added `test_build.py` to repository ### 3. Package Naming Issues **Symptoms:** - `Package build failed - file not found: mcp-context-provider-1.8.0.dxt` - DXT package created with wrong name **Root Cause:** Build script creates package with default name instead of versioned name. **Solution:** Update build script to use proper naming: ```python def move_package_to_root(self, package_file: Path, version: str = None): """Move the built package to repository root with proper naming""" if version: dest_name = f"mcp-context-provider-{version}.dxt" else: dest_name = "mcp-context-provider.dxt" # ... rest of implementation ``` **Applied Fix:** - ✅ Fixed `scripts/build_dxt.py` package naming - ✅ Packages now correctly named with version ### 4. Workflow Not Triggering **Symptoms:** - Push tags but no workflow runs - Expected workflow doesn't start **Root Cause:** - Incorrect trigger conditions - Tag naming doesn't match pattern - Workflow file syntax errors **Solution:** 1. Verify trigger patterns: ```yaml on: push: tags: - 'v*' # Matches v1.8.0, v2.0.0, etc. ``` 2. Check tag format: ```bash git tag v1.8.0 # ✅ Correct git tag 1.8.0 # ❌ Won't trigger 'v*' pattern ``` 3. Validate workflow syntax: ```bash python scripts/test_workflows.py ``` ### 5. Environment Variable Issues **Symptoms:** - Context files not loading - Server configuration errors - Path-related failures **Root Cause:** Missing or incorrect environment variables in workflow. **Solution:** Ensure workflows set required environment variables: ```yaml env: CONTEXT_CONFIG_DIR: contexts AUTO_LOAD_CONTEXTS: "true" PYTHONPATH: server ``` ## 🔧 Workflow Validation Framework ### Automated Validation Use the built-in validation script: ```bash # Validate all workflows python scripts/test_workflows.py --report # Validate specific workflow python scripts/test_workflows.py --workflow release.yml ``` ### Manual Validation Checklist 1. **Permissions Block Present** - [ ] `contents: write` for releases - [ ] `actions: read` for workflow status - [ ] `checks: write` for CI results 2. **Trigger Configuration** - [ ] Appropriate triggers defined (`push`, `pull_request`, etc.) - [ ] Correct tag patterns for releases - [ ] Branch filters for CI 3. **Job Structure** - [ ] `runs-on` specified for all jobs - [ ] Required steps present - [ ] Action versions up to date 4. **Security** - [ ] No hardcoded secrets or tokens - [ ] Proper use of `${{ secrets.GITHUB_TOKEN }}` - [ ] Environment variables properly configured 5. **File Dependencies** - [ ] All referenced files exist in repository - [ ] Build scripts executable and functional - [ ] Required dependencies installed ## 🚀 Best Practices for Reliable Workflows ### 1. Use Explicit Permissions Always define minimum required permissions: ```yaml permissions: contents: write # Only what you need actions: read # Be specific ``` ### 2. Version Pin Actions Use specific action versions for reliability: ```yaml - uses: actions/checkout@v4 # ✅ Pinned version - uses: actions/checkout@main # ❌ Unstable ``` ### 3. Add Validation Steps Include validation in workflows: ```yaml - name: Validate workflows run: python scripts/test_workflows.py - name: Validate build process run: python scripts/test_build.py ``` ### 4. Handle Errors Gracefully Add error handling and cleanup: ```yaml - name: Cleanup on failure if: failure() run: | rm -f *.dxt rm -rf dxt/ ``` ### 5. Test Locally First Before pushing tags: ```bash # Test build process python scripts/build_dxt.py --version 1.8.0 # Validate workflows python scripts/test_workflows.py --report # Check workflow syntax yamllint .github/workflows/ ``` ## 📋 Workflow Health Monitoring ### Regular Checks 1. **Monthly Workflow Review** ```bash # Check recent workflow success rates gh run list --limit=20 # Review failed runs gh run list --status=failure --limit=10 ``` 2. **Action Version Updates** ```bash # Check for outdated actions python scripts/test_workflows.py --report ``` 3. **Permission Audits** ```bash # Review workflow permissions grep -r "permissions:" .github/workflows/ ``` ### Metrics to Track - Workflow success rate (target: >95%) - Build time (target: <5 minutes) - Time to release (target: <10 minutes) - Failed workflow recovery time ## 🆘 Emergency Procedures ### Workflow Completely Broken 1. **Immediate Actions:** ```bash # Disable automatic workflows gh workflow disable <workflow-name> # Create manual release gh release create v1.8.0 --generate-notes package.dxt ``` 2. **Root Cause Analysis:** ```bash # Check recent changes git log --oneline -10 .github/workflows/ # Compare with working version git show HEAD~1:.github/workflows/release.yml ``` 3. **Recovery:** ```bash # Revert to working version git checkout HEAD~1 -- .github/workflows/ # Test and commit fix python scripts/test_workflows.py --report git commit -m "fix: restore working workflow" ``` ### Release Pipeline Blocked 1. **Manual Release Process:** ```bash # Build package locally python scripts/build_dxt.py --version 1.8.0 # Create release manually gh release create v1.8.0 \\ --title "Manual Release v1.8.0" \\ --notes "Emergency manual release" \\ mcp-context-provider-1.8.0.dxt ``` 2. **Hotfix Workflow:** ```bash # Create hotfix branch git checkout -b hotfix/workflow-fix # Apply minimal fix # Test thoroughly # Fast-track review and merge ``` ## 📞 Getting Help ### Internal Resources - **Workflow Validation**: `python scripts/test_workflows.py --report` - **Build Testing**: `python scripts/test_build.py` - **Documentation**: `docs/guides/DEVELOPER_GUIDE.md` ### External Resources - [GitHub Actions Documentation](https://docs.github.com/en/actions) - [Workflow Syntax Reference](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions) - [Troubleshooting Workflows](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows) ### Emergency Contacts - Repository Maintainer: Check GitHub repository settings - CI/CD Issues: Create issue with `workflow` label - Security Concerns: Follow security policy guidelines --- ## Summary This troubleshooting guide covers the most common workflow issues encountered in the MCP Context Provider repository. The implemented solutions include: - ✅ **Permission fixes** in workflow files - ✅ **Automated validation** with `test_workflows.py` - ✅ **Build system fixes** for proper package naming - ✅ **Comprehensive monitoring** and health checks Regular use of the validation tools and following the best practices outlined here will ensure reliable, successful workflow execution.

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/doobidoo/MCP-Context-Provider'

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