Thanks for your interest in improving the IPinfo MCP Server. This document explains how to propose a change and what a change needs before it can be merged.
Open an issue on GitHub Issues. For bugs, include the server version, how you run it (hosted, uvx, Claude Desktop extension), the tool call that failed, and the response you got.
Security vulnerabilities must not be reported as public issues. Follow the security policy instead.
- Fork the repository (or create a branch, if you have write access).
- Make your change, following the requirements below.
- Open a pull request against
maindescribing what the change does and why. - Wait for CI to pass and for an approving review from a maintainer.
All changes go through pull requests; nobody pushes directly to main.
A pull request is merged only when:
- Linting passes:
uv run ruff check .reports no errors. The rules are configured inpyproject.toml(line length 120). - Code is formatted:
uv run ruff format .produces no changes. - Type checking passes:
uv run pyrightreports no errors. All code undersrc/is fully type-annotated. - Tests pass:
uv run pytestsucceeds. - Changes are tested: new tools, parameters, or behaviour changes come with unit tests under
tests/(tool tests live intests/tools/). Unit tests mock the IPinfo API and must not require a token. - Documentation is updated: changes to tools, parameters, outputs, or configuration are reflected in the README.
- The pull request is reviewed: at least one maintainer approves it.
CI (.github/workflows/test.yml) runs linting, type checking, and tests on every pull request. CodeQL analysis also runs on every pull request, and any security findings it reports need to be addressed.
See the Development section of the README for how to set up the project and run these checks locally.
By contributing, you agree that your contributions are licensed under the Apache License 2.0, the same license as the project.