mirror of
https://gitea.com/gitea/gitea-mcp.git
synced 2026-03-25 14:25:13 +00:00
Add get_commit, get_repository_tree, and search_issues tools (#162)
Add three new read-only tools inspired by the GitHub MCP server: - `get_commit`: Get details of a specific commit by SHA, branch, or tag - `get_repository_tree`: Get the file tree of a repository with optional recursive traversal, pagination, and ref support - `search_issues`: Search issues and pull requests across all accessible repositories with filters for state, type, labels, and owner --------- Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Reviewed-on: https://gitea.com/gitea/gitea-mcp/pulls/162 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:
54
operation/search/slim_test.go
Normal file
54
operation/search/slim_test.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package search
|
||||
|
||||
import (
|
||||
"slices"
|
||||
"testing"
|
||||
|
||||
gitea_sdk "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
||||
func TestSlimIssues(t *testing.T) {
|
||||
issues := []*gitea_sdk.Issue{
|
||||
{
|
||||
Index: 1,
|
||||
Title: "Bug report",
|
||||
State: gitea_sdk.StateOpen,
|
||||
HTMLURL: "https://gitea.com/org/repo/issues/1",
|
||||
Poster: &gitea_sdk.User{UserName: "alice"},
|
||||
Labels: []*gitea_sdk.Label{{Name: "bug"}},
|
||||
Repository: &gitea_sdk.RepositoryMeta{FullName: "org/repo"},
|
||||
PullRequest: nil,
|
||||
},
|
||||
{
|
||||
Index: 2,
|
||||
Title: "Add feature",
|
||||
State: gitea_sdk.StateOpen,
|
||||
Poster: &gitea_sdk.User{UserName: "bob"},
|
||||
Repository: &gitea_sdk.RepositoryMeta{FullName: "org/repo"},
|
||||
PullRequest: &gitea_sdk.PullRequestMeta{},
|
||||
},
|
||||
}
|
||||
|
||||
result := slimIssues(issues)
|
||||
if len(result) != 2 {
|
||||
t.Fatalf("expected 2 issues, got %d", len(result))
|
||||
}
|
||||
if result[0]["repository"] != "org/repo" {
|
||||
t.Errorf("expected repository org/repo, got %v", result[0]["repository"])
|
||||
}
|
||||
if result[0]["labels"].([]string)[0] != "bug" {
|
||||
t.Errorf("expected label bug, got %v", result[0]["labels"])
|
||||
}
|
||||
if _, ok := result[0]["is_pull"]; ok {
|
||||
t.Error("issue should not have is_pull")
|
||||
}
|
||||
if result[1]["is_pull"] != true {
|
||||
t.Error("PR should have is_pull=true")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSearchIssuesToolRequired(t *testing.T) {
|
||||
if !slices.Contains(SearchIssuesTool.InputSchema.Required, "query") {
|
||||
t.Error("search_issues should require query")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user