Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package github-mcp-server for
openSUSE:Factory checked in at 2026-08-21 16:56:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/github-mcp-server (Old)
and /work/SRC/openSUSE:Factory/.github-mcp-server.new.1258 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "github-mcp-server"
Fri Aug 21 16:56:22 2026 rev:4 rq:1372635 version:1.10.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/github-mcp-server/github-mcp-server.changes
2026-08-20 16:15:39.227009949 +0200
+++
/work/SRC/openSUSE:Factory/.github-mcp-server.new.1258/github-mcp-server.changes
2026-08-21 16:57:49.509550311 +0200
@@ -1,0 +2,18 @@
+Thu Aug 20 18:43:34 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to version 1.10.1:
+ * Flatten add_issue_comment's input schema (drop top-level
+ anyOf and dependentSchemas) so stricter JSON Schema clients
+ can list tools; the handler still validates mutually
+ exclusive body/reaction/comment_id modes. Fixes a v1.10.0
+ regression that could reject the whole tool inventory
+ before any tool ran.
+- Vendored Go modules are unchanged (go.mod/go.sum identical to
+ 1.10.0), so the licence audit stands: all vendored modules
+ linked into the binaries are MIT, BSD-3-Clause or Apache-2.0
+ and no copyleft code is linked.
+- Keep github-mcp-server-root-command-name.patch: upstream pull
+ request 2998 merged after v1.10.1, and the cobra root command
+ is still declared as "server" in this release.
+
+-------------------------------------------------------------------
Old:
----
github-mcp-server-1.10.0.tar.zst
New:
----
github-mcp-server-1.10.1.tar.zst
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ github-mcp-server.spec ++++++
--- /var/tmp/diff_new_pack.pBz1Vc/_old 2026-08-21 16:57:50.545587062 +0200
+++ /var/tmp/diff_new_pack.pBz1Vc/_new 2026-08-21 16:57:50.546587098 +0200
@@ -23,7 +23,7 @@
# -modcacherw leave the module cache writable so cleanup cannot fail
%define goflags "-buildmode=pie -mod=vendor -modcacherw"
Name: github-mcp-server
-Version: 1.10.0
+Version: 1.10.1
Release: 0
Summary: Model Context Protocol server for GitHub
License: MIT
++++++ _service ++++++
--- /var/tmp/diff_new_pack.pBz1Vc/_old 2026-08-21 16:57:50.580588304 +0200
+++ /var/tmp/diff_new_pack.pBz1Vc/_new 2026-08-21 16:57:50.584588446 +0200
@@ -3,8 +3,8 @@
<param name="url">https://github.com/github/github-mcp-server</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
- <param name="revision">v1.10.0</param>
- <param name="version">1.10.0</param>
+ <param name="revision">v1.10.1</param>
+ <param name="version">1.10.1</param>
<param name="changesgenerate">disable</param>
</service>
<service name="recompress" mode="manual">
@@ -13,7 +13,7 @@
</service>
<service name="go_modules" mode="manual">
<param name="compression">zst</param>
- <param name="archive">github-mcp-server-1.10.0.tar.zst</param>
+ <param name="archive">github-mcp-server-1.10.1.tar.zst</param>
</service>
</services>
++++++ github-mcp-server-1.10.0.tar.zst -> github-mcp-server-1.10.1.tar.zst
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/github-mcp-server-1.10.0/pkg/github/__toolsnaps__/add_issue_comment.snap
new/github-mcp-server-1.10.1/pkg/github/__toolsnaps__/add_issue_comment.snap
---
old/github-mcp-server-1.10.0/pkg/github/__toolsnaps__/add_issue_comment.snap
2026-08-19 17:29:24.000000000 +0200
+++
new/github-mcp-server-1.10.1/pkg/github/__toolsnaps__/add_issue_comment.snap
2026-08-20 10:50:12.000000000 +0200
@@ -6,30 +6,6 @@
},
"description": "Add a comment and/or reaction to a specific issue or issue
comment in a GitHub repository. Use this tool with pull requests as well (in
this case pass pull request number as issue_number), but only if user is not
asking specifically to add or react to review comments. At least one of body or
reaction is required.",
"inputSchema": {
- "anyOf": [
- {
- "required": [
- "body"
- ]
- },
- {
- "required": [
- "reaction"
- ]
- }
- ],
- "dependentSchemas": {
- "comment_id": {
- "not": {
- "required": [
- "body"
- ]
- },
- "required": [
- "reaction"
- ]
- }
- },
"properties": {
"body": {
"description": "Comment content. Required unless reaction is
provided.",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/github-mcp-server-1.10.0/pkg/github/issues.go
new/github-mcp-server-1.10.1/pkg/github/issues.go
--- old/github-mcp-server-1.10.0/pkg/github/issues.go 2026-08-19
17:29:24.000000000 +0200
+++ new/github-mcp-server-1.10.1/pkg/github/issues.go 2026-08-20
10:50:12.000000000 +0200
@@ -1399,16 +1399,6 @@
},
},
Required: []string{"owner", "repo",
"issue_number"},
- AnyOf: []*jsonschema.Schema{
- {Required: []string{"body"}},
- {Required: []string{"reaction"}},
- },
- DependentSchemas: map[string]*jsonschema.Schema{
- "comment_id": {
- Required: []string{"reaction"},
- Not:
&jsonschema.Schema{Required: []string{"body"}},
- },
- },
},
},
[]scopes.Scope{scopes.Repo},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/github-mcp-server-1.10.0/pkg/github/issues_test.go
new/github-mcp-server-1.10.1/pkg/github/issues_test.go
--- old/github-mcp-server-1.10.0/pkg/github/issues_test.go 2026-08-19
17:29:24.000000000 +0200
+++ new/github-mcp-server-1.10.1/pkg/github/issues_test.go 2026-08-20
10:50:12.000000000 +0200
@@ -5410,6 +5410,10 @@
assert.Contains(t, schema.Properties, "body")
assert.Contains(t, schema.Properties, "reaction")
assert.ElementsMatch(t, schema.Required, []string{"owner", "repo",
"issue_number"})
+ assert.Empty(t, schema.AnyOf)
+ assert.Empty(t, schema.OneOf)
+ assert.Empty(t, schema.AllOf)
+ assert.Empty(t, schema.DependentSchemas)
resolved, err := schema.Resolve(nil)
require.NoError(t, err)
@@ -5425,62 +5429,47 @@
isValid bool
}{
{
- name: "body-only comment",
- args: map[string]any{"body": "This is a comment"},
+ name: "cross-field requirements are handler
validated",
+ args: map[string]any{},
isValid: true,
},
{
- name: "issue or pull request reaction",
- args: map[string]any{"reaction": "heart"},
+ name: "comment_id relationships are handler
validated",
+ args: map[string]any{"comment_id": 999, "body":
"This is a comment"},
isValid: true,
},
{
- name: "comment and issue or pull request reaction",
- args: map[string]any{"body": "This is a comment",
"reaction": "heart"},
+ name: "body minLength accepts non-empty body",
+ args: map[string]any{"body": "This is a comment"},
isValid: true,
},
{
- name: "existing comment reaction",
- args: map[string]any{"comment_id": 999, "reaction":
"heart"},
+ name: "reaction enum accepts supported reaction",
+ args: map[string]any{"reaction": "heart"},
isValid: true,
},
{
- name: "missing body and reaction",
- args: map[string]any{},
+ name: "missing required owner",
+ args: map[string]any{"owner": nil},
isValid: false,
},
{
- name: "empty body",
+ name: "body minLength rejects empty body",
args: map[string]any{"body": ""},
isValid: false,
},
{
- name: "comment_id without reaction",
- args: map[string]any{"comment_id": 999},
- isValid: false,
- },
- {
- name: "comment_id with body",
- args: map[string]any{"comment_id": 999, "body":
"This is a comment"},
- isValid: false,
- },
- {
- name: "comment_id with body and reaction",
- args: map[string]any{"comment_id": 999, "body":
"This is a comment", "reaction": "heart"},
- isValid: false,
- },
- {
- name: "zero comment_id",
+ name: "comment_id minimum rejects zero",
args: map[string]any{"comment_id": 0, "reaction":
"heart"},
isValid: false,
},
{
- name: "fractional comment_id",
+ name: "comment_id integer rejects fraction",
args: map[string]any{"comment_id": 1.5, "reaction":
"heart"},
isValid: false,
},
{
- name: "invalid reaction",
+ name: "reaction enum rejects unsupported reaction",
args: map[string]any{"reaction": "party"},
isValid: false,
},
@@ -5628,6 +5617,28 @@
expectedToolErrMsg: "at least one of body or reaction
is required",
},
{
+ name: "empty body",
+ requestArgs: map[string]any{
+ "owner": "owner",
+ "repo": "repo",
+ "issue_number": float64(42),
+ "body": "",
+ },
+ expectToolError: true,
+ expectedToolErrMsg: "body cannot be empty when
provided",
+ },
+ {
+ name: "empty reaction",
+ requestArgs: map[string]any{
+ "owner": "owner",
+ "repo": "repo",
+ "issue_number": float64(42),
+ "reaction": "",
+ },
+ expectToolError: true,
+ expectedToolErrMsg: "reaction cannot be empty when
provided",
+ },
+ {
name: "missing issue_number for reaction",
requestArgs: map[string]any{
"owner": "owner",
@@ -5659,6 +5670,18 @@
expectedToolErrMsg: "comment_id can only be provided
when reaction is provided",
},
{
+ name: "comment_id with body but without reaction",
+ requestArgs: map[string]any{
+ "owner": "owner",
+ "repo": "repo",
+ "issue_number": float64(42),
+ "comment_id": float64(999),
+ "body": "This is a comment",
+ },
+ expectToolError: true,
+ expectedToolErrMsg: "comment_id cannot be combined with
body",
+ },
+ {
name: "zero comment_id",
requestArgs: map[string]any{
"owner": "owner",
@@ -5683,6 +5706,30 @@
expectedToolErrMsg: "comment_id must be greater than 0",
},
{
+ name: "fractional comment_id",
+ requestArgs: map[string]any{
+ "owner": "owner",
+ "repo": "repo",
+ "issue_number": float64(42),
+ "comment_id": float64(1.5),
+ "reaction": "heart",
+ },
+ expectToolError: true,
+ expectedToolErrMsg: "parameter comment_id is not a
valid number",
+ },
+ {
+ name: "non-numeric comment_id",
+ requestArgs: map[string]any{
+ "owner": "owner",
+ "repo": "repo",
+ "issue_number": float64(42),
+ "comment_id": "not-a-number",
+ "reaction": "heart",
+ },
+ expectToolError: true,
+ expectedToolErrMsg: "parameter comment_id is not a
valid number",
+ },
+ {
name: "comment_id with body",
requestArgs: map[string]any{
"owner": "owner",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/github-mcp-server-1.10.0/pkg/github/tools_validation_test.go
new/github-mcp-server-1.10.1/pkg/github/tools_validation_test.go
--- old/github-mcp-server-1.10.0/pkg/github/tools_validation_test.go
2026-08-19 17:29:24.000000000 +0200
+++ new/github-mcp-server-1.10.1/pkg/github/tools_validation_test.go
2026-08-20 10:50:12.000000000 +0200
@@ -1,6 +1,7 @@
package github
import (
+ "encoding/json"
"go/ast"
"go/parser"
"go/token"
@@ -46,6 +47,29 @@
})
}
}
+
+// TestAllToolInputSchemasAvoidTopLevelCombinators keeps the complete OSS tool
+// inventory portable across provider JSON Schema subsets. Some providers
reject
+// an entire tools/list payload when any input schema has a top-level
combinator,
+// so cross-field constraints belong in handlers or below ordinary properties.
+func TestAllToolInputSchemasAvoidTopLevelCombinators(t *testing.T) {
+ tools := AllTools(stubTranslation)
+ require.NotEmpty(t, tools, "AllTools should return at least one tool")
+
+ for _, serverTool := range tools {
+ tool := serverTool.Tool
+ t.Run(tool.Name, func(t *testing.T) {
+ data, err := json.Marshal(tool.InputSchema)
+ require.NoError(t, err, "Tool %q InputSchema must
marshal", tool.Name)
+
+ var schema map[string]json.RawMessage
+ require.NoError(t, json.Unmarshal(data, &schema), "Tool
%q InputSchema must be a JSON object", tool.Name)
+ assert.NotContains(t, schema, "anyOf", "Tool %q
InputSchema must not use top-level anyOf", tool.Name)
+ assert.NotContains(t, schema, "oneOf", "Tool %q
InputSchema must not use top-level oneOf", tool.Name)
+ assert.NotContains(t, schema, "allOf", "Tool %q
InputSchema must not use top-level allOf", tool.Name)
+ })
+ }
+}
// TestAllResourcesHaveRequiredMetadata validates that all resources have
mandatory metadata
func TestAllResourcesHaveRequiredMetadata(t *testing.T) {
++++++ vendor.tar.zst ++++++