Contributing to ssh-mcp

August 24, 2026 · View on GitHub

Thank you for your interest in contributing to ssh-mcp! Your help is greatly appreciated. Please follow these guidelines to make the process smooth for everyone.

How to Contribute

  1. Fork the repository and create your branch from main.
  2. Clone your fork to your local machine.
  3. Create a descriptive branch name (e.g., feature/add-ssh-support or bugfix/fix-connection-issue).
  4. Make your changes with clear, concise commits.
  5. Test your changes to ensure nothing is broken.
  6. Push to your fork and submit a Pull Request (PR) to the main branch.

Code Style

  • Follow the existing code style and conventions.
  • Write clear, descriptive commit messages.
  • Add comments where necessary for clarity.

Issues and Bugs

  • If you find a bug, please open an issue with detailed steps to reproduce it.
  • If you want to work on an existing issue, comment on it to let others know.

Feature Requests

  • Open an issue to discuss new features before submitting a PR.
  • Describe your proposed feature and its use case.

Pull Requests

  • Ensure your PR is up to date with the latest main branch.
  • Reference related issues in your PR description (e.g., Closes #12).
  • Be responsive to feedback and requested changes.
  • Add a changeset: Run npm run changeset before pushing. Select the bump type (patch/minor/major) and write a short changelog entry. This ensures your change appears in the release notes.

Changeset Example

npm run changeset
# Select ssh-mcp
# Select minor (for new features) or patch (for fixes)
# Write: "Add ProxyJump support for bastion connections"

This creates a file in .changeset/ — commit it with your PR. When the PR merges, the changesets bot opens a "Version Packages" PR that bumps the version, updates CHANGELOG.md, and publishes to npm. Publishing to npm also lists the new version on the official MCP registry.

server.json

server.json is the MCP registry entry. Its two version fields — the listing's own version, and the npm version it points at — are written by npm run version from package.json, so they arrive already bumped in the "Version Packages" PR and should not be edited by hand. Everything else in the file is hand-maintained; if you change the title or description, note that the registry schema caps both at 100 characters, which test/unit/sync-server-json.test.ts asserts.

Review Criteria

The .review-pro/ directory holds the criteria this project's changes are reviewed against — node/ for general Node.js server concerns (security, correctness, API contracts, tests, performance), and ssh-mcp/ for signals specific to this codebase: progress and cancellation, OTEL, the HTTP rate limit, ProxyJump, CA certificates, and MCP resources.

They are plain markdown. Reading the files relevant to your change is a useful checklist before you open a PR, and nothing needs to be installed to do that. Anything touching the policy engine, the audit chain, or host-key handling is worth checking against .review-pro/ssh-mcp/security.md in particular.

Those same files are the rubric for review-pro (npx review-pro), which runs them as an automated review. That tool is mine and lives in a separate repository; using it is entirely optional, CI does not run it, and no PR is held up for skipping it.

Code of Conduct

  • Be respectful and inclusive in all interactions.
  • See the CODE_OF_CONDUCT.md if available.

Thank you for helping make ssh-mcp better!