Skip to content

Commit f9d532e

Browse files
docs: add CONTRIBUTING.md and clarify project scope
- Add CONTRIBUTING.md stating what's in/out of scope, discuss-first workflow expectations, and forking as a first-class path for use cases outside the server's intended scope. - Rename claude.md -> CLAUDE.md to match Claude Code convention and fix a latent case-sensitivity issue on non-macOS filesystems. Strengthen the "Your role" line and add a CONTRIBUTING.md reference. - Update README: remove "for now" from the object-types note (scope is deliberate, not a temporary limitation), state the "simple and forkable" intent in the opening paragraph, and point contributors to CONTRIBUTING.md. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent a59e0e7 commit f9d532e

3 files changed

Lines changed: 92 additions & 4 deletions

File tree

claude.md renamed to CLAUDE.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
A read-only [Model Context Protocol](https://modelcontextprotocol.io/) server that enables LLMs to interact with NetBox infrastructure data. Built with FastMCP and designed for use by NetBox operators.
66

7-
**Your role**: Help contributors design and implement features following open-source best practices. Ask clarifying questions and challenge assumptions when needed.
7+
**Your role**: Help contributors design and implement features within the project's stated scope (see [CONTRIBUTING.md](CONTRIBUTING.md)). Challenge proposals that fall outside scope before implementation begins, not after. Ask clarifying questions and challenge assumptions when needed.
88

99
## Tech Stack
1010

@@ -373,4 +373,5 @@ mcp_tool("netbox_get_changelogs", {
373373
- [Model Context Protocol Specification](https://modelcontextprotocol.io/)
374374
- [FastMCP Documentation](https://github.com/jlowin/fastmcp)
375375
- [Project README](./README.md) - User-facing setup and usage
376+
- [Contributing Guide](./CONTRIBUTING.md) - Project scope, contribution workflow, and out-of-scope list
376377
- [Security Policy](./SECURITY.md) - Vulnerability reporting

CONTRIBUTING.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Contributing to NetBox MCP Server
2+
3+
Thanks for your interest in contributing! This guide covers what kinds of contributions we're looking for, how to propose them, and where the project's boundaries are.
4+
5+
Questions that don't need a code change are best asked in the `#ai` channel on [NetDev Community Slack](https://netdev.chat/) - this project doesn't have dedicated community channels yet.
6+
7+
## Project scope
8+
9+
The NetBox MCP Server is a **simple, read-only MCP server for core NetBox objects**. It uses the NetBox REST API with static token authentication. The priorities are:
10+
11+
- **Easy to get started.** Minimal configuration, minimal dependencies, runs locally in under a minute.
12+
- **Hard to misuse.** Read-only by design, no plugin surface, small attack surface.
13+
- **Easy to fork.** Apache 2.0 licensed, small codebase, designed to be adapted.
14+
15+
This project is maintained by a small team - scope is deliberately limited so it stays that way. We may decline feature proposals that fall outside the areas listed below, even if they're well-executed.
16+
17+
### Forking is a first-class option
18+
19+
If your use case needs features outside this scope, forking is actively encouraged. The project is small and focused by design - your fork can diverge without losing the core. We welcome issues or discussions that share interesting forks back with the community.
20+
21+
## Reporting bugs
22+
23+
Bug reports should describe unintended or unexpected behaviour - not requests for new functionality (see "Feature requests" below for that).
24+
25+
1. Check you're running the [latest release](https://github.com/netboxlabs/netbox-mcp-server/releases) - your bug may already be fixed.
26+
2. Search [existing issues](https://github.com/netboxlabs/netbox-mcp-server/issues) to see if it's been reported. If so, add a 👍 reaction and any extra context as a comment.
27+
3. If it's new, [open an issue](https://github.com/netboxlabs/netbox-mcp-server/issues/new) with clear reproduction steps, error messages, and NetBox/Python versions.
28+
29+
Tips:
30+
31+
- Screenshots and exact error messages are especially helpful.
32+
- Don't prepend your issue title with a label like `[Bug]` - labels are applied by maintainers.
33+
34+
## Feature requests
35+
36+
Before opening a feature request:
37+
38+
1. **Check the scope section above.** If your idea falls outside the project's scope, please consider a fork rather than an FR.
39+
2. **Search existing issues** to avoid duplicates.
40+
3. **Open an issue for discussion first.** Don't start implementation until a maintainer has confirmed scope fit.
41+
42+
In-scope contributions we're especially keen to see:
43+
44+
- Bug fixes in existing tools
45+
- Improvements to error messages and logging
46+
- Documentation, examples, and quickstart improvements
47+
- Adding new core NetBox object types to `src/netbox_mcp_server/netbox_types.py`
48+
- Compatibility fixes for new NetBox versions
49+
- Dependency updates
50+
51+
## Submitting pull requests
52+
53+
For non-trivial changes, please **open an issue first**. This saves you time - if the change isn't a good fit, we can tell you before you write the code. Drive-by bug fixes and small docs improvements don't need an issue first - just send a PR.
54+
55+
Our process for larger changes:
56+
57+
1. Open an issue describing the bug or feature.
58+
2. Wait for maintainer response confirming scope and approach.
59+
3. Submit a PR referencing the issue.
60+
4. Respond to review feedback.
61+
5. Maintainer merges.
62+
63+
PR checklist:
64+
65+
- Base off `main`.
66+
- Conventional commit format (`feat:`, `fix:`, `chore:`, etc. - see [`CLAUDE.md`](CLAUDE.md) for details).
67+
- `ruff check` passes.
68+
- Type hints on all public functions.
69+
70+
Detailed code standards live in [`CLAUDE.md`](CLAUDE.md) - please skim it before your first PR.
71+
72+
## AI-assisted contributions
73+
74+
AI-assisted contributions are welcome. We use AI tools ourselves. That said, you're responsible for what you submit - review it, test it, and take ownership. PRs that appear to be unreviewed AI output will be asked for revision or closed.
75+
76+
## Other ways to contribute
77+
78+
Not every useful contribution is code:
79+
80+
- Answering questions in discussions or issues
81+
- Writing a blog post or video about your use case
82+
- Sharing useful forks back via issues or discussions
83+
- Improving documentation

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
> - Docker users: rebuild images with updated CMD
88
> - See [CHANGELOG.md](CHANGELOG.md) for full details
99
10-
This is a simple read-only [Model Context Protocol](https://modelcontextprotocol.io/) server for NetBox. It enables you to interact with your data in NetBox directly via LLMs that support MCP.
10+
This is a simple read-only [Model Context Protocol](https://modelcontextprotocol.io/) server for NetBox. It enables you to interact with your data in NetBox directly via LLMs that support MCP.
11+
12+
The server is intentionally simple — easy to get started with, hard to misuse (read-only by default, no plugin surface), and easy to fork and adapt. Forking under Apache 2.0 is a first-class path for users who need capabilities beyond the project's scope.
1113

1214
## Tools
1315

@@ -17,7 +19,7 @@ This is a simple read-only [Model Context Protocol](https://modelcontextprotocol
1719
| get_object_by_id | Gets detailed information about a specific NetBox object by its ID |
1820
| get_changelogs | Retrieves change history records (audit trail) based on filters |
1921

20-
> Note: the set of supported object types is explicitly defined and limited to the core NetBox objects for now, and won't work with object types from plugins.
22+
> Note: The set of supported object types is explicitly limited to core NetBox objects. Plugin object types and advanced features (GraphQL, dynamic model discovery, etc.) are deliberately out of scope — see [CONTRIBUTING.md](CONTRIBUTING.md) for the full scope statement and rationale.
2123
2224
## Usage
2325

@@ -310,7 +312,9 @@ The server will be accessible at `http://localhost:8000/mcp` for MCP clients. Yo
310312

311313
## Development
312314

313-
Contributions are welcome! Please open an issue or submit a PR.
315+
Contributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) before proposing new features — we encourage filing an issue for discussion first to confirm scope fit.
316+
317+
If your use case needs capabilities outside this project's scope, forking under Apache 2.0 is an actively supported path.
314318

315319
## License
316320

0 commit comments

Comments
 (0)