Inline issue/comment attachments in body (#183)
The Gitea API returns an `assets` array on issue and comment responses, but the SDK structs drop it — so attachments are invisible to MCP agents.
Append each attachment as a `[name](url)` markdown link at the end of the body, mirroring how GitHub embeds attachments inline (which `github-mcp-server` preserves as-is).
**Coverage:**
- `issue_read get` — issue body attachments
- `issue_read get_comments` — issue and PR conversation comment attachments (same endpoint)
- `pull_request_read get` — PR description attachments (Gitea's `/pulls/` endpoint omits `assets`, so a follow-up best-effort call to `/issues/{n}/assets` surfaces them; PRs are issues internally)
PR review summaries and line-comment reviews don't support attachments per the Gitea API spec, so nothing to do there.
Closes https://gitea.com/gitea/gitea-mcp/issues/182
---
This PR was written with the help of Claude Opus 4.7
Reviewed-on: https://gitea.com/gitea/gitea-mcp/pulls/183
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: silverwind <me@silverwind.io>
Co-committed-by: silverwind <me@silverwind.io>
This commit is contained in:
@@ -1,9 +1,30 @@
|
||||
package pull
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
gitea_sdk "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
||||
func bodyWithAttachments(body string, atts []*gitea_sdk.Attachment) string {
|
||||
links := make([]string, 0, len(atts))
|
||||
for _, a := range atts {
|
||||
if a == nil || a.DownloadURL == "" {
|
||||
continue
|
||||
}
|
||||
links = append(links, fmt.Sprintf("[%s](%s)", a.Name, a.DownloadURL))
|
||||
}
|
||||
if len(links) == 0 {
|
||||
return body
|
||||
}
|
||||
joined := strings.Join(links, "\n")
|
||||
if body == "" {
|
||||
return joined
|
||||
}
|
||||
return body + "\n\n" + joined
|
||||
}
|
||||
|
||||
func userLogin(u *gitea_sdk.User) string {
|
||||
if u == nil {
|
||||
return ""
|
||||
|
||||
Reference in New Issue
Block a user