- Move tests from src/gitea_mcp_remote/tests/ to tests/ (top-level)
- Update pytest.ini to point to new test location
- All imports already use absolute paths (gitea_mcp_remote.*)
- Tests run successfully from new location (28/30 pass, 2 pre-existing failures)
This improves project structure by following standard Python conventions
where tests live at the repository root level rather than inside the
source package.
Closes#21
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit removes the incorrectly structured standalone MCP server that was built without understanding the distinction between standalone and HTTP transport modes. These files will be replaced with proper HTTP transport wrapper components.
Removed:
- src/gitea_mcp/ directory (standalone server implementation)
- tests/ directory (tests for standalone implementation)
This clears the way for implementing the correct HTTP-wrapped architecture.
Closes#9
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Added comprehensive test coverage for all tool modules:
Test Files Created:
- tests/conftest.py: Shared fixtures for all tests
- tests/test_issues.py: Complete coverage for issue tools
- tests/test_labels.py: Complete coverage for label tools
- tests/test_milestones.py: Complete coverage for milestone tools
Test Coverage:
- Tool definition validation (schema structure)
- Handler function routing
- Successful API response formatting
- Error handling (GiteaClientError)
- Required parameter validation
- Optional parameter handling
- Mock Gitea API responses
Configuration Updates:
- Added pytest-cov>=4.0.0 to dev dependencies
- Created run_tests.sh script for easy test execution
All tests use pytest-asyncio for async functions and mock the
GiteaClient to avoid real API calls. Tests validate tool schemas,
handler routing, response formatting, and error handling.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implemented MCP server core infrastructure with authentication and HTTP client:
- Created auth.py for API token management
- Loads GITEA_API_URL and GITEA_API_TOKEN from environment
- Uses python-dotenv for .env file support
- Validates required configuration on initialization
- Provides authentication headers for API requests
- Created client.py with base HTTP client
- GiteaClient class using httpx AsyncClient
- Async HTTP methods: get(), post(), patch(), delete()
- Comprehensive error handling for HTTP status codes
- Custom exception hierarchy for different error types
- Configurable timeout (default 30s)
- Updated server.py with MCP server setup
- Initialized MCP server with StdioServerTransport
- Integrated AuthConfig and GiteaClient
- Registered placeholder tool handlers (list_repositories, create_issue, create_pull_request)
- Added CLI with --help and --version options
- Proper error handling for configuration failures
- Updated pyproject.toml
- Added console script entry point: gitea-mcp
- Created comprehensive unit tests
- test_auth.py: Tests for AuthConfig validation and headers
- test_client.py: Tests for GiteaClient initialization and error handling
All acceptance criteria met:
- MCP server initializes with StdioServerTransport
- Authentication loads from environment variables
- Base HTTP client with auth headers implemented
- Error handling for API connection failures
- Server reports available tools (placeholders for future issues)
Closes#2
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create pyproject.toml with project metadata
- Add dependencies: mcp, httpx, python-dotenv
- Set up src/gitea_mcp package structure with __init__.py files
- Create placeholder server.py for MCP server implementation
- Add tools subdirectory for future tool implementations
- Create tests directory structure
- Update .gitignore with comprehensive Python exclusions
- Add README.md with project overview
Uses modern src-layout with pyproject.toml (no setup.py).
Project is ready for MCP server implementation.
Closes#1
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>