Development
February 3, 2026 · View on GitHub
Prerequisites
- Go 1.18 or higher
- Git
Project Structure
.
├── cmd/ # Command definitions
├── docs/ # Documentation
├── pkg/ # Source code
├── main.go # Entry point
├── Makefile # Build scripts
└── README.md # This file
Building from source
-
Clone the repository:
git clone https://github.com/inercia/MCPShell.git cd mcpshell -
Build the application:
make buildThis will create a binary in the
builddirectory. -
Alternatively, install the application:
make install
Continuous Integration
This project uses GitHub Actions for continuous integration:
- Pull Request Testing: Every pull request triggers an automated workflow that:
- Runs all unit tests
- Performs race condition detection
- Checks code formatting
- Runs linters to ensure code quality
These checks help maintain code quality and prevent regressions as the project evolves.
Releases
This project uses GoReleaser and GitHub Actions to automatically build and release binaries for multiple platforms. When a tag is pushed, the workflow:
- Runs all tests
- Builds binaries for multiple platforms (Linux, macOS, Windows) and architectures (amd64, arm64)
- Creates archives with documentation and examples
- Generates checksums
- Creates a GitHub release with all artifacts
- Generates a changelog from commit messages
Quick Start
To create a new release:
# Create and tag a new release (updates docs and creates tag)
make release
# Push the tag to trigger the automated release workflow
git push origin main v1.2.3
The release will appear on the GitHub Releases page with binaries for each supported platform.
Testing Releases Locally
Before creating an official release:
# Validate the GoReleaser configuration
make release-test
# Build a snapshot release locally (no tag required)
make release-snapshot
For detailed information about the release process, see the Release Process Guide.
Make Targets
Run make help to see all available targets. Key targets include:
make build: Build the applicationmake clean: Remove build artifactsmake test: Run unit testsmake test-e2e: Run end-to-end testsmake run: Run the applicationmake install: Install the applicationmake lint: Run lintingmake format: Format Go codemake validate-examples: Validate all YAML configsmake release: Create a new release (tag + docs update)make release-test: Validate GoReleaser configurationmake release-snapshot: Build snapshot release locallymake help: Show all available targets