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-09-09 16:20:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/github-mcp-server (Old)
 and      /work/SRC/openSUSE:Factory/.github-mcp-server.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "github-mcp-server"

Wed Sep  9 16:20:57 2026 rev:7 rq:1376542 version:1.12.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/github-mcp-server/github-mcp-server.changes      
2026-09-07 11:31:46.684146112 +0200
+++ 
/work/SRC/openSUSE:Factory/.github-mcp-server.new.1265/github-mcp-server.changes
    2026-09-09 16:22:58.200577236 +0200
@@ -1,0 +2,15 @@
+Wed Sep  9 06:20:15 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to version 1.12.1:
+  * OAuth protected-resource metadata now advertises only the
+    default scopes instead of the full step-up catalogue, so
+    clients no longer request delete_repo, workflow and
+    administrative scopes at login.
+  * assign_copilot_to_issue and
+    assign_copilot_to_issue_with_intent reject a missing
+    owner, repo or issue_number with a clear parameter error
+    instead of a confusing repository-resolution failure.
+- Vendored Go modules are unchanged (go.mod/go.sum identical to
+  1.12.0).
+
+-------------------------------------------------------------------

Old:
----
  github-mcp-server-1.12.0.tar.zst

New:
----
  github-mcp-server-1.12.1.tar.zst

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ github-mcp-server.spec ++++++
--- /var/tmp/diff_new_pack.UK2EP9/_old  2026-09-09 16:22:59.122615771 +0200
+++ /var/tmp/diff_new_pack.UK2EP9/_new  2026-09-09 16:22:59.124615855 +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.12.0
+Version:        1.12.1
 Release:        0
 Summary:        Model Context Protocol server for GitHub
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.UK2EP9/_old  2026-09-09 16:22:59.173617903 +0200
+++ /var/tmp/diff_new_pack.UK2EP9/_new  2026-09-09 16:22:59.177618070 +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.12.0</param>
-    <param name="version">1.12.0</param>
+    <param name="revision">v1.12.1</param>
+    <param name="version">1.12.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.12.0.tar.zst</param>
+    <param name="archive">github-mcp-server-1.12.1.tar.zst</param>
   </service>
 </services>
 

++++++ github-mcp-server-1.12.0.tar.zst -> github-mcp-server-1.12.1.tar.zst 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/github-mcp-server-1.12.0/Dockerfile 
new/github-mcp-server-1.12.1/Dockerfile
--- old/github-mcp-server-1.12.0/Dockerfile     2026-09-03 15:56:57.000000000 
+0200
+++ new/github-mcp-server-1.12.1/Dockerfile     2026-09-08 20:58:41.000000000 
+0200
@@ -7,7 +7,7 @@
 RUN mkdir -p ./pkg/github/ui_dist && \
     cd ui && npm run build
 
-FROM 
golang:1.27.0-alpine@sha256:4c9fe60190a2a3350ddc51de80d0224b8a6698d12bdfc999fee45ea9d6c46dbc
 AS build
+FROM 
golang:1.27.1-alpine@sha256:cf6fca6641884b8433441b2b0652976f975e1d0fdd26d177eaaf8596087f3125
 AS build
 ARG VERSION="dev"
 
 # Set the working directory
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/github-mcp-server-1.12.0/docs/streamable-http.md 
new/github-mcp-server-1.12.1/docs/streamable-http.md
--- old/github-mcp-server-1.12.0/docs/streamable-http.md        2026-09-03 
15:56:57.000000000 +0200
+++ new/github-mcp-server-1.12.1/docs/streamable-http.md        2026-09-08 
20:58:41.000000000 +0200
@@ -72,13 +72,23 @@
   ],
   "scopes_supported": [
     "repo",
-    ...
+    "read:org",
+    "read:user",
+    "user:email",
+    "read:packages",
+    "write:packages",
+    "read:project",
+    "project",
+    "gist",
+    "notifications"
   ],
   ...
 }
 ```
 
 This allows OAuth clients to discover authentication requirements and endpoint 
information automatically.
+Scopes excluded from this default set, such as `delete_repo`, are requested 
only
+through a per-tool OAuth authorization challenge when needed.
 
 The HTTP server is the OAuth protected resource, not the authorization server. 
It
 therefore serves `/.well-known/oauth-protected-resource` but does not serve
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/github-mcp-server-1.12.0/pkg/github/copilot.go 
new/github-mcp-server-1.12.1/pkg/github/copilot.go
--- old/github-mcp-server-1.12.0/pkg/github/copilot.go  2026-09-03 
15:56:57.000000000 +0200
+++ new/github-mcp-server-1.12.1/pkg/github/copilot.go  2026-09-08 
20:58:41.000000000 +0200
@@ -214,6 +214,19 @@
                                return utils.NewToolResultError(err.Error()), 
nil, nil
                        }
 
+                       // owner, repo and issue_number are required, but 
WeakDecode zero-fills a
+                       // missing value, so a missing arg reached the query as 
a confusing
+                       // "Could not resolve to a Repository" error. Reject 
the zero values.
+                       if params.Owner == "" {
+                               return utils.NewToolResultError("missing 
required parameter: owner"), nil, nil
+                       }
+                       if params.Repo == "" {
+                               return utils.NewToolResultError("missing 
required parameter: repo"), nil, nil
+                       }
+                       if params.IssueNumber == 0 {
+                               return utils.NewToolResultError("missing 
required parameter: issue_number"), nil, nil
+                       }
+
                        client, err := deps.GetGQLClient(ctx)
                        if err != nil {
                                return nil, nil, fmt.Errorf("failed to get 
GitHub client: %w", err)
@@ -588,6 +601,19 @@
                                return utils.NewToolResultError(err.Error()), 
nil, nil
                        }
 
+                       // owner, repo and issue_number are required, but 
WeakDecode zero-fills a
+                       // missing value, so reject the zero values (as with 
rationale/confidence
+                       // below) before they reach the query as a confusing 
repository error.
+                       if params.Owner == "" {
+                               return utils.NewToolResultError("missing 
required parameter: owner"), nil, nil
+                       }
+                       if params.Repo == "" {
+                               return utils.NewToolResultError("missing 
required parameter: repo"), nil, nil
+                       }
+                       if params.IssueNumber == 0 {
+                               return utils.NewToolResultError("missing 
required parameter: issue_number"), nil, nil
+                       }
+
                        // Validate rationale length (rune count, matching the 
granular assignee tools).
                        rationale := strings.TrimSpace(params.Rationale)
                        if rationale == "" {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/github-mcp-server-1.12.0/pkg/github/copilot_test.go 
new/github-mcp-server-1.12.1/pkg/github/copilot_test.go
--- old/github-mcp-server-1.12.0/pkg/github/copilot_test.go     2026-09-03 
15:56:57.000000000 +0200
+++ new/github-mcp-server-1.12.1/pkg/github/copilot_test.go     2026-09-08 
20:58:41.000000000 +0200
@@ -60,6 +60,36 @@
                expectedToolErrMsg string
        }{
                {
+                       name: "missing owner is rejected",
+                       requestArgs: map[string]any{
+                               "repo":         "repo",
+                               "issue_number": float64(123),
+                       },
+                       mockedClient:       githubv4mock.NewMockedHTTPClient(),
+                       expectToolError:    true,
+                       expectedToolErrMsg: "missing required parameter: owner",
+               },
+               {
+                       name: "missing repo is rejected",
+                       requestArgs: map[string]any{
+                               "owner":        "owner",
+                               "issue_number": float64(123),
+                       },
+                       mockedClient:       githubv4mock.NewMockedHTTPClient(),
+                       expectToolError:    true,
+                       expectedToolErrMsg: "missing required parameter: repo",
+               },
+               {
+                       name: "missing issue_number is rejected",
+                       requestArgs: map[string]any{
+                               "owner": "owner",
+                               "repo":  "repo",
+                       },
+                       mockedClient:       githubv4mock.NewMockedHTTPClient(),
+                       expectToolError:    true,
+                       expectedToolErrMsg: "missing required parameter: 
issue_number",
+               },
+               {
                        name: "successful assignment when there are no existing 
assignees",
                        requestArgs: map[string]any{
                                "owner":        "owner",
@@ -1229,6 +1259,19 @@
                expectSuggestion   bool
        }{
                {
+                       name: "missing owner is rejected",
+                       requestArgs: map[string]any{
+                               "repo":          "repo",
+                               "issue_number":  float64(123),
+                               "rationale":     "Well-scoped task.",
+                               "confidence":    "HIGH",
+                               "is_suggestion": false,
+                       },
+                       mockedClient:       githubv4mock.NewMockedHTTPClient(),
+                       expectToolError:    true,
+                       expectedToolErrMsg: "missing required parameter: owner",
+               },
+               {
                        name: "direct assignment with rationale and confidence 
preserves existing assignees",
                        requestArgs: map[string]any{
                                "owner":         "owner",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/github-mcp-server-1.12.0/pkg/http/oauth/oauth.go 
new/github-mcp-server-1.12.1/pkg/http/oauth/oauth.go
--- old/github-mcp-server-1.12.0/pkg/http/oauth/oauth.go        2026-09-03 
15:56:57.000000000 +0200
+++ new/github-mcp-server-1.12.1/pkg/http/oauth/oauth.go        2026-09-08 
20:58:41.000000000 +0200
@@ -20,13 +20,12 @@
        OAuthProtectedResourcePrefix = "/.well-known/oauth-protected-resource"
 )
 
-// SupportedScopes lists every OAuth scope that an MCP tool may require. HTTP
-// protected-resource metadata advertises this full set so clients can step up
-// authorization for tools excluded from the default grant.
+// SupportedScopes lists every OAuth scope that an MCP tool may require.
 var SupportedScopes = scopes.SupportedOAuthScopes()
 
-// DefaultScopes are requested by stdio OAuth unless the operator explicitly
-// supplies --oauth-scopes. High-risk scopes such as delete_repo require 
opt-in.
+// DefaultScopes are advertised in protected-resource metadata and requested by
+// stdio OAuth unless the operator explicitly supplies --oauth-scopes. Other
+// scopes require opt-in through a per-tool authorization challenge.
 var DefaultScopes = scopes.DefaultOAuthScopes()
 
 // Config holds the OAuth configuration for the MCP server.
@@ -128,7 +127,7 @@
                        Resource:               resourceURL,
                        AuthorizationServers:   
[]string{authorizationServerURL},
                        ResourceName:           "GitHub MCP Server",
-                       ScopesSupported:        SupportedScopes,
+                       ScopesSupported:        DefaultScopes,
                        BearerMethodsSupported: []string{"header"},
                }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/github-mcp-server-1.12.0/pkg/http/oauth/oauth_test.go 
new/github-mcp-server-1.12.1/pkg/http/oauth/oauth_test.go
--- old/github-mcp-server-1.12.0/pkg/http/oauth/oauth_test.go   2026-09-03 
15:56:57.000000000 +0200
+++ new/github-mcp-server-1.12.1/pkg/http/oauth/oauth_test.go   2026-09-08 
20:58:41.000000000 +0200
@@ -436,7 +436,18 @@
                        host:               "api.example.com",
                        method:             http.MethodGet,
                        expectedStatusCode: http.StatusOK,
-                       expectedScopes:     SupportedScopes,
+expectedScopes: []string{
+                               "repo",
+                               "read:org",
+                               "read:user",
+                               "user:email",
+                               "read:packages",
+                               "write:packages",
+                               "read:project",
+                               "project",
+                               "gist",
+                               "notifications",
+                       },
                        validateResponse: func(t *testing.T, body 
map[string]any) {
                                t.Helper()
                                assert.Equal(t, "GitHub MCP Server", 
body["resource_name"])
@@ -573,7 +584,12 @@
                                if tc.expectedScopes != nil {
                                        scopes, ok := 
body["scopes_supported"].([]any)
                                        require.True(t, ok)
-                                       assert.Len(t, scopes, 
len(tc.expectedScopes))
+                                       actualScopes := make([]string, 
len(scopes))
+                                       for i, scope := range scopes {
+                                               actualScopes[i], ok = 
scope.(string)
+                                               require.True(t, ok)
+                                       }
+                                       assert.Equal(t, tc.expectedScopes, 
actualScopes)
                                }
                        }
                })
@@ -671,10 +687,20 @@
        assert.Equal(t, expectedScopes, SupportedScopes)
 }
 
-func TestDefaultScopesRequiresExplicitDeleteRepoOptIn(t *testing.T) {
+func TestDefaultScopesRequireExplicitOptIn(t *testing.T) {
        assert.Subset(t, SupportedScopes, DefaultScopes)
        assert.Contains(t, SupportedScopes, "delete_repo")
        assert.NotContains(t, DefaultScopes, "delete_repo")
+       assert.Contains(t, SupportedScopes, "workflow")
+       assert.NotContains(t, DefaultScopes, "workflow")
+       assert.Contains(t, SupportedScopes, "codespace")
+       assert.NotContains(t, DefaultScopes, "codespace")
+       assert.Contains(t, SupportedScopes, "admin:org")
+       assert.NotContains(t, DefaultScopes, "admin:org")
+       assert.Contains(t, SupportedScopes, "read:enterprise")
+       assert.NotContains(t, DefaultScopes, "read:enterprise")
+       assert.Contains(t, SupportedScopes, "admin:enterprise")
+       assert.NotContains(t, DefaultScopes, "admin:enterprise")
        assert.Contains(t, DefaultScopes, "repo")
 }
 

Reply via email to