Releases: hoyt-harness/doxygen-mcp
Release list
v4.0.0
MCP Python SDK v2 Migration
This release upgrades the server's protocol dependency from the MCP Python SDK v1 to v2 (mcp 1.29.0 → 2.1.1). The external protocol surface — tool names, descriptions, input schemas, and runtime behavior — is unchanged. All existing client configurations work without modification.
Why v4.0.0?
The mcp v2 SDK removed mcp.server.fastmcp entirely. Code importing from that module raises ModuleNotFoundError under mcp 2.x. This is a hard protocol dependency break: environments pinned to mcp<2 cannot install this release alongside other mcp 2.x tools without isolating. The major version reflects that boundary, even though callers see identical behavior from the tools themselves.
What changed
Import updated (server.py): FastMCP is renamed MCPServer in mcp v2 and moved to mcp.server.mcpserver.
# v3.x
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Doxygen")
# v4.0.0
from mcp.server.mcpserver import MCPServer
mcp = MCPServer("Doxygen")The @mcp.tool() decorator API and mcp.run() call site are unchanged. MCPServer is a drop-in rename with the same high-level interface.
Dependency bump (pyproject.toml): mcp>=1.0.0,<2.0.0 → mcp>=2.0.0,<3.0.0
Lock file (uv.lock): mcp 1.29.0 → 2.1.1. Transitive changes:
- Added:
httpx2,httpcore2,mcp-types,opentelemetry-api - Removed:
httpx-sse,pydantic-settings,python-dotenv
Spec: This migration was developed against specs/001-mcp-v2-migration/ (spec.md + plan.md), using the MCP Python SDK v1→v2 Migration Guide as the upstream reference.
What did not change
- All 7 tool names, descriptions, and input schemas
DoxygenConfigPydantic model andto_doxyfile()logicmcp.run()entry point (stdio transport, no arguments)__main__.pyand__init__.py- Test suite (14/14 pass, no new skips)
Verification
uv run python -c "from doxygen_mcp.server import mcp; print(type(mcp).__name__)"→MCPServeruv run pytest→ 14 passed, 0 faileduv run ruff check src/ tests/→ 0 errorshooks/ci-check.sh→ green
v3.1.0
Changes
- Doxyfile convention update:
OUTPUT_DIRECTORYchanged fromdocstodoxygenper PCS v2.12.0 (generated Doxygen output is not tracked in git; users generate as needed).INPUTchanged from absolute path to..PROJECT_NUMBERupdated to3.0.2. docs/html/removed: 164 generated HTML files removed from tracking..gitignore:examples/*/docs/→examples/*/doxygen/.- SPDX rollout:
COPYING.mdrenamed toCOPYING;pyproject.tomllicense.fileupdated;SPDX-License-Identifier: GPL-3.0-or-lateradded to 9 source files. - Community files:
CODE_OF_CONDUCT.md,.github/ISSUE_TEMPLATE/bug_report.md,.github/ISSUE_TEMPLATE/feature_request.mdadded. mcp-inspector.jsonadded (PCS v2.11.2 template).- CRLF fixed:
server.py,__init__.py,__main__.py. - Line length: 14 violations fixed across
calculator.cpp,calculator.h,main.cpp,check_environment.py. - Dependencies: 5 packages updated;
cryptographyat50.0.0(resolves Dependabot alert #35).
Known open items
- mcp 2.0 migration:
mcp<2.0.0upper bound intentional.mcp.server.fastmcpremoved in mcp 2.0; migration planned with all three MCP server repos in a dedicated session (July 2027 deadline).
v3.0.2
v3.0.1
Bug Fixes
- Path validation bypass removed (
server.py):create_doxygen_project()andgenerate_documentation()were skipping their own path validation (must exist, must be within cwd) wheneverPYTEST_CURRENT_TESTwas set. The bypass was in production code, not test infrastructure, so validation was never exercised during the test suite. Removed; tests updated to use real temp dirs within cwd.
Dependency Updates
- 27 Python package upgrades including mcp, pydantic, cryptography, anyio, and uvicorn
- Supply-chain soak window added (
uv.toml:exclude-newer = 7 days)
Tooling & Compliance
check_environment.py: fixed missingimport os(would have raisedNameErrorat runtime intest_manual_doxygen_run())- Git hooks, CI workflow, and linter configuration brought up to Positronikal Coding Standards v2.6.2
SECURITY.md,CODEOWNERS, and.github/PULL_REQUEST_TEMPLATE.mdadded
Modernization & uv Migration - v3.0.0
v3.0.0 - Modernization & uv Migration
This is a major release with breaking changes. The Doxygen MCP server has been modernized with faster dependency management, cleaner documentation, and professional naming conventions.
⚠️ Breaking Changes
Installation & Configuration:
- New dependency manager: Migrated from pip to uv for faster, more reliable builds
- New installation command:
uv sync(replacespip install -e .) - New entry point:
uv run doxygen-mcp(old entry point removed) - MCP server name: Now displays as "Doxygen" (was "doxygen-mcp")
- Python requirement: Now requires Python 3.11+ (was 3.8+)
MCP Client Configuration:
{
"mcpServers": {
"doxygen": {
"command": "uv",
"args": ["--directory", "/path/to/doxygen-mcp", "run", "doxygen-mcp"]
}
}
}✨ Improvements
- 📚 Documentation: Consolidated from 9 files to 6 with clearer structure
- Quick Start guide in README.md
- Comprehensive developer guide in USING.md
- Complete troubleshooting in BUGS.md
- ⚡ Performance: Faster dependency resolution with uv
- 🔒 Reproducibility: Lock file (
uv.lock) ensures consistent builds - 📦 Modern Packaging: Follows PEP 517/518 standards
- 🎨 Professional Naming: Server displays as "Doxygen" in MCP clients
🔄 Migration from v2.0.0
For Existing Users:
- Update repository:
git pull origin master- Remove old virtual environment:
rm -rf .venv- Install with uv:
uv sync-
Update MCP client configuration (see Breaking Changes above)
-
Restart your MCP client
See USING.md for complete migration instructions.
📦 Installation (New Users)
Prerequisites:
- Python 3.11+
- uv package manager
- Doxygen
Install:
git clone https://github.com/Positronikal/doxygen-mcp.git
cd doxygen-mcp
uv syncConfigure in Claude Desktop:
{
"mcpServers": {
"doxygen": {
"command": "uv",
"args": ["--directory", "/full/path/to/doxygen-mcp", "run", "doxygen-mcp"]
}
}
}🛠️ Tools Available
All 7 Doxygen MCP tools remain unchanged:
create_doxygen_project- Initialize documentation projectsgenerate_documentation- Generate docs from source codescan_project- Analyze project structurevalidate_documentation- Check coverage and warningscreate_doxyfile- Generate configuration filescheck_doxygen_install- Verify Doxygen installationsuggest_file_patterns- Get file pattern recommendations
📄 License
GNU General Public License v3.0 or later (GPLv3+)
Questions? Open an issue or see BUGS.md for troubleshooting.
Comprehensive Refactor and Modernization
This release represents a major refactoring of the project, introducing a modern and more robust foundation for the Doxygen MCP Server. The changes focus on improving code quality, enhancing security, and standardizing the project's structure to align with best practices in the Python ecosystem.
Key Changes:
- Project Modernization: The repository has been migrated to use
pyproject.tomlfor dependency management, replacing the legacyrequirements.txtfile. This provides a more standardized and declarative way to manage the project's build and dependencies. - Code Quality & Security: The core server code in
server.pywas refactored to simplify implementation by utilizing theFastMCPclass. Security was enhanced by adding sanitization tosubprocess.runcalls to mitigate potential command injection vulnerabilities. - Standardized Documentation: The project's documentation has been reorganized for improved clarity and consistency. Files like
BUGS.md,TROUBLESHOOTING.md,DEVELOPMENT.md, andLICENSE.mdwere renamed or created to follow standard conventions and provide a centralized location for contributor information. - Testing and Environment: Installation and usage instructions were updated to use
uvanduvenv, providing a modern and efficient way for users and clients to manage the project environment.