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 ++++++

Reply via email to