# Changelog

All notable changes to Teukhos are documented here.
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

---

## [0.3.3] — 2026-03-17

### Added
- **Auth middleware wired into FastMCP** — `AuthMiddleware` now protects HTTP `/mcp` endpoint via `mcp.run(middleware=[...])`. Bearer token validation is fully functional for HTTP transport.
- **CORS middleware wired into FastMCP** — `cors_origins` config option now applies Starlette `CORSMiddleware` with MCP-specific headers (`mcp-protocol-version`, `mcp-session-id`, `Authorization`).

### Fixed
- `__version__` now reads from `pyproject.toml` via `importlib.metadata` — single source of truth
- GitHub Copilot global config path corrected to `%APPDATA%/Code/User/mcp.json` on Windows

---

## [0.3.0] — 2026-03-16

### Added
- **Multi-client installer system** — plugin/strategy pattern with 15 supported MCP clients:
  Claude Desktop, Claude Code, Cursor, GitHub Copilot, Gemini CLI, Codex,
  Windsurf, Cline, Roo Code, Continue.dev, Kiro, Auggie, CodeBuddy, OpenCode, Trae
- **`teukhos install`** rewritten — auto-detect clients, `--client`, `--all`, `--project`,
  `--url` (HTTP), `--key` (API key), `--dest` (arbitrary JSON path), `--config-key`
- **`teukhos uninstall`** — remove server registrations from client configs
- **`teukhos clients`** — list all supported clients with detection status and config paths
- **`--dest` custom path install** — write MCP config to any JSON file, bypassing client detection
- **`--config-key`** option — choose `mcpServers` (default) or `servers` (GitHub Copilot format)
- **`env:` prefix API key resolution** — `"env:TEUKHOS_API_KEY"` reads from environment,
  plain strings used as literals. Default: `env:TEUKHOS_API_KEY`
- **`resolve_key()`** utility in `teukhos/auth.py` for env-var-or-literal key resolution
- **`AuthMiddleware`** — Bearer token validation middleware for HTTP transport
- **`ServerBundle`** dataclass — `build_server()` now returns bundle with resolved auth keys and CORS config
- **`cors_origins`** config option for HTTP transport CORS headers
- **Improved HTTP startup banner** — shows endpoint, health URL, auth status, and connect hint
- **Project-level install scope** — `--project` writes to `.cursor/mcp.json`, `.claude/settings.json`, etc.
  in current directory. Silently falls back to global for clients that don't support project scope
- **Atomic JSON writes** with backup (`.teukhos-backup`) for safe config file modifications
- Example config: `examples/remote-server.yaml`
- Architecture diagram: `docs/images/how-it-works.svg`
- Full README rewrite with recipes, deployment guide, and supported clients table

### Changed
- `build_server()` returns `ServerBundle` instead of raw `FastMCP` instance
- `install` command no longer hardcoded to Claude Desktop — uses installer plugin system
- Version bumped to 0.3.0 to mark multi-client and HTTP transport milestone

---

## [0.2.0] — 2026-03-15

### Changed
- **Project renamed from MCPForge to Teukhos** — unique name, clean namespace
  across PyPI, npm, GitHub, and all major registries
- CLI command changed from `mcp-forge` to `teukhos`
- Default config filename changed from `mcp-forge.yaml` to `teukhos.yaml`
- Legacy `mcp-forge.yaml` still accepted automatically with a deprecation note
- Package name on PyPI changed from `mcpforge` to `teukhos`
- All internal imports updated from `mcpforge.*` to `teukhos.*`
- `ForgeInfo.name` default updated to `teukhos-server`
- `install` command now registers as `teukhos-<name>` in Claude Desktop config
- Version bumped to 0.2.0 to mark the identity change cleanly

### Added
- `httpx` added as an explicit dependency (was implicit via fastmcp)
- Backward-compatible config file resolution (`_resolve_config` in CLI)
- `[tool.hatch.build.targets.wheel]` section in `pyproject.toml`
- Project URLs (Homepage, Repository, Issues) in `pyproject.toml`
- PyPI classifiers
- GitHub Actions CI workflow (`.github/workflows/ci.yml`)
- This CHANGELOG

### Fixed
- Boolean arg handling: cleaned up redundant condition in `_build_command`

---

## [0.1.0] — 2026-03-11

### Added
- Initial working PoC under the name MCPForge
- Pydantic config models for `mcp-forge.yaml`
- `cli` adapter with typed arg mapping (flags, positional, boolean)
- Output mapping: `stdout`, `stderr`, `json_field`, `exit_code`
- FastMCP server generation at runtime with dynamic function signatures
- `stdio` and `http` (streamable-http) transports
- `api_key` auth mode
- `serve`, `validate`, `version`, `wait-ready`, `install`, `discover` CLI commands
- Rich startup banner
- Security warning for unauthenticated 0.0.0.0 bindings
- Health endpoint `/health`
- Example configs: `git-tools.yaml`, `dev-tools.yaml`, `media-tools.yaml`
- Full test suite: unit + integration tests
- Claude Desktop integration via `install` command
