|
| 1 | +# ✅ Developer Onboarding Checklist |
| 2 | + |
| 3 | +> Follow this checklist to set up your development environment, verify all features, and ensure consistent onboarding across the MCP Gateway project. |
| 4 | +
|
| 5 | +--- |
| 6 | + |
| 7 | +## 🛠 Environment Setup |
| 8 | + |
| 9 | +???+ check "System prerequisites" |
| 10 | + - [ ] Python ≥ 3.10 |
| 11 | + - [ ] Node.js and npm, npx (used for testing with `supergateway` and the HTML/JS Admin UI) |
| 12 | + - [ ] Docker, Docker Compose, and Podman |
| 13 | + - [ ] Make, GitHub CLI (`gh`), `curl`, `jq`, `openssl` |
| 14 | + - [ ] Optional: Visual Studio Code + Dev Containers extension (or WSL2 if on Windows) |
| 15 | + |
| 16 | +???+ check "Python tooling" |
| 17 | + - [ ] `pip install --upgrade pip` |
| 18 | + - [ ] `uv` and `uvenv` installed - [install uv](https://github.com/astral-sh/uv) |
| 19 | + - [ ] `.venv` created with `make venv install install-dev` |
| 20 | + |
| 21 | +???+ check "Additional tools" |
| 22 | + - [ ] `helm` installed for Kubernetes deployments ([Helm install docs](https://helm.sh/docs/intro/install/)) |
| 23 | + - [ ] Security tools in `$PATH`: `hadolint`, `dockle`, `trivy`, `osv-scanner` |
| 24 | + |
| 25 | +???+ check "Useful VS Code extensions" |
| 26 | + - [ ] Python, Pylance |
| 27 | + - [ ] YAML, Even Better TOML |
| 28 | + - [ ] Docker, Dev Containers (useful on Windows) |
| 29 | + |
| 30 | +???+ check "GitHub setup" |
| 31 | + - [ ] GitHub email configured in `git config` |
| 32 | + - [ ] See [GitHub config guide](./github.md#16-personal-git-configuration-recommended) |
| 33 | + |
| 34 | +???+ check ".env configuration" |
| 35 | + - [ ] Copy `.env.example` to `.env` |
| 36 | + - [ ] Set various env variables, such as: |
| 37 | + - `JWT_SECRET_KEY` |
| 38 | + - `BASIC_AUTH_PASSWORD` |
| 39 | +--- |
| 40 | + |
| 41 | +## 🔧 Makefile Targets |
| 42 | + |
| 43 | +???+ check "Local setup" |
| 44 | + - [ ] `make check-env` (validates .env is complete) |
| 45 | + - [ ] `make venv install install-dev serve` |
| 46 | + - [ ] `make smoketest` runs and passes |
| 47 | + |
| 48 | +???+ check "Container builds" |
| 49 | + - [ ] Docker: `make docker-prod docker-run-ssl-host compose-up` |
| 50 | + - [ ] Podman: `make podman podman-prod podman-run-ssl-host` |
| 51 | + |
| 52 | +???+ check "Packaging" |
| 53 | + - [ ] `make dist verify` builds packages |
| 54 | + - [ ] `make devpi-install devpi-init devpi-start devpi-setup-user devpi-upload devpi-test` |
| 55 | + - [ ] Install and test `mcpgateway` CLI locally |
| 56 | + |
| 57 | +???+ check "Minikube & Helm" |
| 58 | + - [ ] `make helm-install minikube-install minikube-start minikube-k8s-apply helm-package helm-deploy` |
| 59 | + - [ ] See [minikube deployment](deployment/minikube.md) |
| 60 | + |
| 61 | +--- |
| 62 | + |
| 63 | +## 🧪 Testing |
| 64 | + |
| 65 | +???+ check "Code quality" |
| 66 | + - [ ] `make lint`, `make lint-web` |
| 67 | + - [ ] `make shell-linters-install`, `make shell-lint` |
| 68 | + - [ ] `make hadolint` (Dockerfile linting) |
| 69 | + |
| 70 | +???+ check "Unit tests" |
| 71 | + - [ ] `make test` passes all cases |
| 72 | + |
| 73 | +--- |
| 74 | + |
| 75 | +## 🔐 Security |
| 76 | + |
| 77 | +???+ check "Vulnerability scans" |
| 78 | + - [ ] Run: |
| 79 | + ```bash |
| 80 | + make hadolint dockle osv-scan trivy pip-audit |
| 81 | + ``` |
| 82 | + |
| 83 | +???+ check "SonarQube analysis" |
| 84 | + - [ ] `make sonar-up-docker` |
| 85 | + - [ ] `make sonar-submit-docker` — ensure no critical violations |
| 86 | + |
| 87 | +--- |
| 88 | + |
| 89 | +## 🔑 JWT Authentication |
| 90 | + |
| 91 | +???+ check "Generate and use a Bearer token" |
| 92 | + - [ ] Export a token with: |
| 93 | + ```bash |
| 94 | + export MCPGATEWAY_BEARER_TOKEN=$(python3 -m mcpgateway.utils.create_jwt_token --username admin --exp 0 --secret my-test-key) |
| 95 | + ``` |
| 96 | + |
| 97 | + - [ ] Verify authenticated API access: |
| 98 | + ```bash |
| 99 | + curl -k -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" https://localhost:4444/version | jq |
| 100 | + ``` |
| 101 | + |
| 102 | +--- |
| 103 | + |
| 104 | +## 🤖 Client Integration |
| 105 | + |
| 106 | +???+ check "Run wrapper and test transports" |
| 107 | + - [ ] Run: `python3 -m mcpgateway.wrapper` (stdio support) |
| 108 | + - [ ] Test transports: |
| 109 | + - Streamable HTTP |
| 110 | + - Server-Sent Events (SSE) |
| 111 | + - [ ] Optional: Integrate with Claude, Copilot, Continue ([usage guide](../using/index.md)) |
| 112 | + |
| 113 | +--- |
| 114 | + |
| 115 | +## 🧭 API Testing |
| 116 | + |
| 117 | +???+ check "Authentication required" |
| 118 | + - [ ] Unauthenticated: |
| 119 | + ```bash |
| 120 | + curl http://localhost:4444/tools |
| 121 | + # -> should return 401 Unauthorized |
| 122 | + ``` |
| 123 | + - [ ] Authenticated: |
| 124 | + ```bash |
| 125 | + curl -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" http://localhost:4444/version | jq |
| 126 | + ``` |
| 127 | + |
| 128 | +???+ check "Endpoint coverage" |
| 129 | + - [ ] Confirm key routes: |
| 130 | + - `/version` |
| 131 | + - `/health` |
| 132 | + - `/tools` |
| 133 | + - `/servers` |
| 134 | + - `/resources` |
| 135 | + - `/prompts` |
| 136 | + - `/gateways` |
| 137 | + - [ ] Browse [Redoc docs](http://localhost:4444/redoc) |
| 138 | + |
| 139 | +--- |
| 140 | + |
| 141 | +## 🖥 Admin UI |
| 142 | + |
| 143 | +???+ check "Login and diagnostics" |
| 144 | + - [ ] Navigate to [`/admin`](http://localhost:4444/admin) |
| 145 | + - [ ] Log in with Basic Auth credentials from `.env` |
| 146 | + - [ ] `/version` shows healthy DB and Redis |
| 147 | + |
| 148 | +???+ check "CRUD verification" |
| 149 | + - [ ] Create / edit / delete: |
| 150 | + - Servers |
| 151 | + - Tools |
| 152 | + - Resources |
| 153 | + - Prompts |
| 154 | + - Gateways |
| 155 | + - [ ] Toggle active/inactive switches |
| 156 | + - [ ] JWT stored in `HttpOnly` cookie, no errors in DevTools Console |
| 157 | + |
| 158 | +???+ check "Metrics" |
| 159 | + - [ ] Confirm latency and error rate display under load |
| 160 | + |
| 161 | +--- |
| 162 | + |
| 163 | +## 📚 Documentation |
| 164 | + |
| 165 | +???+ check "Build and inspect docs" |
| 166 | + - [ ] `cd docs && make venv serve` |
| 167 | + - [ ] Open http://localhost:8000 |
| 168 | + - [ ] Confirm: |
| 169 | + - `.pages` ordering |
| 170 | + - nav structure |
| 171 | + - working images |
| 172 | + - Mermaid diagrams |
| 173 | + |
| 174 | +???+ check "Read and understand" |
| 175 | + - [ ] `README.md` in root |
| 176 | + - [ ] [Official docs site](https://ibm.github.io/mcp-context-forge/) |
| 177 | + - [ ] [MkDocs Admonitions guide](https://squidfunk.github.io/mkdocs-material/reference/admonitions/) |
| 178 | + |
| 179 | +--- |
| 180 | + |
| 181 | +## ✅ Final Review |
| 182 | + |
| 183 | +???+ check "Ready to contribute" |
| 184 | + - [ ] All items checked |
| 185 | + - [ ] PR description links to this checklist |
| 186 | + - [ ] Stuck? Open a [discussion](https://github.com/your-repo/discussions) or issue |
0 commit comments