Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# CODEOWNERS for hawk-mcpkit
* @GrayCodeAI/maintainers

# SDK source
/ @GrayCodeAI/core-team

# CI / release / build tooling
/.github/ @GrayCodeAI/devops-team
/Makefile @GrayCodeAI/devops-team
/scripts/ @GrayCodeAI/devops-team

# Documentation
*.md @GrayCodeAI/docs-team
118 changes: 118 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
name: Bug report
description: Something is broken or behaving unexpectedly.
title: "bug: <one-line summary>"
labels: ["bug", "triage"]

body:
- type: markdown
attributes:
value: |
Thanks for taking the time to file a bug report. Please fill in as much
of the form as you can — the more we know, the faster we can fix it.

Before submitting:
- Search [existing issues](https://github.com/GrayCodeAI/hawk-mcpkit/issues) to avoid duplicates.
- If this is a security issue, please **do not** file a public issue. See `SECURITY.md`.

- type: textarea
id: what-happened
attributes:
label: What happened?
description: A clear, concise description of the bug.
placeholder: When I call mcpkit.New() and then s.ServeHTTP(), I expected X but got Y.
validations:
required: true

- type: dropdown
id: surface
attributes:
label: Surface
description: Which SDK surface is affected?
options:
- "Server construction (New)"
- "Tool registration (AddTool)"
- "Resource registration (AddResource, AddResourceTemplate, AddGraphResource)"
- "Prompt registration (AddPrompt)"
- "HTTP transport (ServeHTTP, ServeHTTPWithShutdown)"
- "Stdio transport (ServeStdio)"
- "Auth (RequireBearerToken, WithHTTPToken)"
- "Handler helpers (StrArg, JSONResult)"
- "Build / packaging"
validations:
required: true

- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
description: Minimal Go snippet that reliably reproduces the problem.
render: go
placeholder: |
s := mcpkit.New("my-server", "0.1.0")
// ... register tools ...
err := s.ServeHTTP(":8080")
// ^ wrong behaviour / panic / hang / etc.
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected behavior
description: What did you expect to happen instead?
validations:
required: true

- type: input
id: sdk-version
attributes:
label: hawk-mcpkit version
description: Contents of the VERSION file or `go list -m github.com/GrayCodeAI/hawk-mcpkit`.
placeholder: "0.1.0"
validations:
required: true

- type: input
id: go-version
attributes:
label: Go version
description: Output of `go version`.
placeholder: "go1.26.5"
validations:
required: true

- type: input
id: os
attributes:
label: Operating system
description: e.g. macOS 14.5 (arm64), Ubuntu 24.04 (amd64), Windows 11 (amd64).
placeholder: "macOS 14.5 (arm64)"
validations:
required: true

- type: textarea
id: deps
attributes:
label: Relevant dependency versions
description: |
Paste the output of `go list -m all | grep -E "mcp-go|mark3labs"`.
render: shell

- type: textarea
id: logs
attributes:
label: Logs / traceback
description: |
Paste any relevant output, including the full error/stack trace.
**Redact API tokens, session IDs, and any private data first.**
render: shell

- type: checkboxes
id: confirm
attributes:
label: Confirmation
options:
- label: I searched existing issues and did not find a duplicate.
required: true
- label: I redacted any secrets, tokens, or private data from logs.
required: true
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Security vulnerability
url: https://github.com/GrayCodeAI/hawk-mcpkit/security/advisories/new
about: Please report security issues privately via a GitHub Security Advisory. See SECURITY.md.
- name: Question / discussion
url: https://github.com/GrayCodeAI/hawk/discussions
about: Have a question or want to discuss an idea? Open a discussion on the hawk repo.
75 changes: 75 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Feature request
description: Suggest an improvement or a new SDK capability.
title: "feat: <one-line summary>"
labels: ["enhancement", "triage"]

body:
- type: markdown
attributes:
value: |
Thanks for proposing a feature. hawk-mcpkit is a thin Go wrapper
around `mark3labs/mcp-go` that provides construction, transports, and
handler helpers for the hawk ecosystem. Every feature is evaluated
against whether it serves **a single developer** building an MCP
server — i.e. it improves ergonomics, lowers boilerplate, or simplifies
integration.

Before submitting:
- Search [existing issues](https://github.com/GrayCodeAI/hawk-mcpkit/issues) to avoid duplicates.
- This repo must never import hawk-eco dependencies. If your feature
requires a hawk-ecosystem type, it belongs in the consuming engine.

- type: dropdown
id: kind
attributes:
label: Kind of feature
description: What flavour of change is this?
options:
- "New server constructor option"
- "New transport (e.g. Unix socket, WebSocket)"
- "New handler helper (e.g. StrArg variant, JSONResult option)"
- "Auth / security (token gating, rate limiting)"
- "Resource / graph resource helper"
- "Tool / prompt registration helper"
- "Error handling / typed errors"
- "Tooling / CI / docs / packaging"
validations:
required: true

- type: textarea
id: problem
attributes:
label: What problem are you trying to solve?
description: Describe the user problem first. Solutions can come later.
placeholder: When I build an MCP server with mcpkit, I have to write boilerplate Y because the SDK doesn't expose X.
validations:
required: true

- type: textarea
id: proposal
attributes:
label: Proposed solution
description: How would you like the SDK to behave? Snippet of API you'd want.
render: go
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: |
What did you try? What do other MCP Go libraries (`mark3labs/mcp-go`,
`modelcontextprotocol/go-sdk`, `fifty-shades-of-go/mcp`) do? Why
isn't that enough?

- type: checkboxes
id: principles
attributes:
label: Foundation-layer fit
description: hawk-mcpkit avoids hawk-eco scope. Confirm this feature respects that.
options:
- label: Works with zero configuration (sensible defaults).
- label: Does not introduce a hawk-eco dependency.
- label: Does not break wire-compatibility with existing MCP clients.
- label: Has an escape hatch (override via parameter or option).
67 changes: 67 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<!--
Thanks for your contribution! Please fill out this template so reviewers can
understand the change quickly. Anything that does not apply can be left in
place; do not delete unanswered sections — write "n/a".
-->

## Summary

<!--
One paragraph describing what this PR does and why. Link the related
issue(s) with `Fixes #N` or `Refs #N` if applicable.
-->

## Changes

<!--
Bullet list of what changed, grouped by area (server, transport, auth,
helpers, types, version, CI, docs).
Reviewers should be able to skim this and know what to look at first.
-->

-

## API impact

<!--
Did you add, remove, rename, or change the signature of any exported
symbol? List them here. If yes, confirm whether this is a breaking
change and bump the version accordingly in `VERSION`. If no exported
surface changed, write "n/a".
-->

## Ecosystem boundary check

<!--
hawk-mcpkit must never import hawk-eco dependencies. Confirm this PR
does not add any imports of `hawk`, `eyrie`, `yaad`, `tok`, `trace`,
`sight`, `inspect`, `hawk-core-contracts`, or any SDK.
-->

## Testing

<!--
Describe how you tested. Paste output of `make test` and `make lint`.
If you added new tests, list them.
-->

```text
$ make test
...
$ make lint
...
$ make boundaries
...
```

## Checklist

- [ ] Commits follow [Conventional Commits](https://www.conventionalcommits.org/)
(`feat:`, `fix:`, `perf:`, `refactor:`, `docs:`, `test:`, etc.)
- [ ] `make ci` passes locally
- [ ] `make boundaries` passes (no hawk-eco imports)
- [ ] New or changed code has tests
- [ ] Public APIs have doc comments
- [ ] `CHANGELOG.md` updated under `## [Unreleased]` if user-visible
- [ ] `VERSION` file is **not** edited manually — release-please bumps it
- [ ] No secrets, tokens, or PII added to the repo
Loading