feat: add get_single_issue_comment_by_index operation #77
5 .gitignore vendored
5
.gitignore vendored @@ -3,3 +3,8 @@ gitea-mcp | ||||
gitea-mcp.exe | ||||
*.log | ||||
tmp | ||||
| ||||
.direnv | ||||
.envrc | ||||
flake.lock | ||||
flake.nix | ||||
|
79 README.md
79
README.md @@ -173,45 +173,46 @@ list all my repositories | ||||
| ||||
The Gitea MCP Server supports the following tools: | ||||
| ||||
| Tool | Scope | Description | | ||||
| :--------------------------: | :----------: | :------------------------------------------------------: | | ||||
| get_my_user_info | User | Get the information of the authenticated user | | ||||
| get_user_orgs | User | Get organizations associated with the authenticated user | | ||||
| create_repo | Repository | Create a new repository | | ||||
| fork_repo | Repository | Fork a repository | | ||||
| list_my_repos | Repository | List all repositories owned by the authenticated user | | ||||
| create_branch | Branch | Create a new branch | | ||||
| delete_branch | Branch | Delete a branch | | ||||
| list_branches | Branch | List all branches in a repository | | ||||
| create_release | Release | Create a new release in a repository | | ||||
| delete_release | Release | Delete a release from a repository | | ||||
| get_release | Release | Get a release | | ||||
| get_latest_release | Release | Get the latest release in a repository | | ||||
| list_releases | Release | List all releases in a repository | | ||||
| create_tag | Tag | Create a new tag | | ||||
| delete_tag | Tag | Delete a tag | | ||||
| get_tag | Tag | Get a tag | | ||||
| list_tags | Tag | List all tags in a repository | | ||||
| list_repo_commits | Commit | List all commits in a repository | | ||||
| get_file_content | File | Get the content and metadata of a file | | ||||
| get_dir_content | File | Get a list of entries in a directory | | ||||
| create_file | File | Create a new file | | ||||
| update_file | File | Update an existing file | | ||||
| delete_file | File | Delete a file | | ||||
| get_issue_by_index | Issue | Get an issue by its index | | ||||
| list_repo_issues | Issue | List all issues in a repository | | ||||
| create_issue | Issue | Create a new issue | | ||||
| create_issue_comment | Issue | Create a comment on an issue | | ||||
| edit_issue | Issue | Edit a issue | | ||||
| edit_issue_comment | Issue | Edit a comment on an issue | | ||||
| get_issue_comments_by_index | Issue | Get comments of an issue by its index | | ||||
| get_pull_request_by_index | Pull Request | Get a pull request by its index | | ||||
| list_repo_pull_requests | Pull Request | List all pull requests in a repository | | ||||
| create_pull_request | Pull Request | Create a new pull request | | ||||
| search_users | User | Search for users | | ||||
| search_org_teams | Organization | Search for teams in an organization | | ||||
| search_repos | Repository | Search for repositories | | ||||
| get_gitea_mcp_server_version | Server | Get the version of the Gitea MCP Server | | ||||
| Tool | Scope | Description | | ||||
| :--------------------------------: | :----------: | :------------------------------------------------------: | | ||||
| get_my_user_info | User | Get the information of the authenticated user | | ||||
| get_user_orgs | User | Get organizations associated with the authenticated user | | ||||
| create_repo | Repository | Create a new repository | | ||||
| fork_repo | Repository | Fork a repository | | ||||
| list_my_repos | Repository | List all repositories owned by the authenticated user | | ||||
| create_branch | Branch | Create a new branch | | ||||
| delete_branch | Branch | Delete a branch | | ||||
| list_branches | Branch | List all branches in a repository | | ||||
| create_release | Release | Create a new release in a repository | | ||||
| delete_release | Release | Delete a release from a repository | | ||||
| get_release | Release | Get a release | | ||||
| get_latest_release | Release | Get the latest release in a repository | | ||||
| list_releases | Release | List all releases in a repository | | ||||
| create_tag | Tag | Create a new tag | | ||||
| delete_tag | Tag | Delete a tag | | ||||
| get_tag | Tag | Get a tag | | ||||
| list_tags | Tag | List all tags in a repository | | ||||
| list_repo_commits | Commit | List all commits in a repository | | ||||
| get_file_content | File | Get the content and metadata of a file | | ||||
| get_dir_content | File | Get a list of entries in a directory | | ||||
| create_file | File | Create a new file | | ||||
| update_file | File | Update an existing file | | ||||
| delete_file | File | Delete a file | | ||||
| get_issue_by_index | Issue | Get an issue by its index | | ||||
| list_repo_issues | Issue | List all issues in a repository | | ||||
| create_issue | Issue | Create a new issue | | ||||
| create_issue_comment | Issue | Create a comment on an issue | | ||||
| edit_issue | Issue | Edit a issue | | ||||
| edit_issue_comment | Issue | Edit a comment on an issue | | ||||
| get_issue_comments_by_index | Issue | Get comments of an issue by its index | | ||||
| get_single_issue_comment_by_index | Issue | Get a single issue comment by its ID | | ||||
| get_pull_request_by_index | Pull Request | Get a pull request by its index | | ||||
| list_repo_pull_requests | Pull Request | List all pull requests in a repository | | ||||
| create_pull_request | Pull Request | Create a new pull request | | ||||
| search_users | User | Search for users | | ||||
| search_org_teams | Organization | Search for teams in an organization | | ||||
| search_repos | Repository | Search for repositories | | ||||
| get_gitea_mcp_server_version | Server | Get the version of the Gitea MCP Server | | ||||
| ||||
## 🐛 Debugging | ||||
| ||||
|
@@ -173,45 +173,46 @@ cp gitea-mcp /usr/local/bin/ | ||||
| ||||
Gitea MCP 服务器支持以下工具: | ||||
| ||||
| 工具 | 范围 | 描述 | | ||||
| :--------------------------: | :------: | :--------------------------: | | ||||
| get_my_user_info | 用户 | 获取已认证用户的信息 | | ||||
| get_user_orgs | 用户 | 获取已认证用户关联的组织 | | ||||
| create_repo | 仓库 | 创建一个新仓库 | | ||||
| fork_repo | 仓库 | 复刻一个仓库 | | ||||
| list_my_repos | 仓库 | 列出已认证用户拥有的所有仓库 | | ||||
| create_branch | 分支 | 创建一个新分支 | | ||||
| delete_branch | 分支 | 删除一个分支 | | ||||
| list_branches | 分支 | 列出仓库中的所有分支 | | ||||
| create_release | 版本发布 | 创建一个新版本发布 | | ||||
| delete_release | 版本发布 | 删除一个版本发布 | | ||||
| get_release | 版本发布 | 获取一个版本发布 | | ||||
| get_latest_release | 版本发布 | 获取最新的版本发布 | | ||||
| list_releases | 版本发布 | 列出所有版本发布 | | ||||
| create_tag | 标签 | 创建一个新标签 | | ||||
| delete_tag | 标签 | 删除一个标签 | | ||||
| get_tag | 标签 | 获取一个标签 | | ||||
| list_tags | 标签 | 列出所有标签 | | ||||
| list_repo_commits | 提交 | 列出仓库中的所有提交 | | ||||
| get_file_content | 文件 | 获取文件的内容和元数据 | | ||||
| get_dir_content | 文件 | 获取目录的内容列表 | | ||||
| create_file | 文件 | 创建一个新文件 | | ||||
| update_file | 文件 | 更新现有文件 | | ||||
| delete_file | 文件 | 删除一个文件 | | ||||
| get_issue_by_index | 问题 | 根据索引获取问题 | | ||||
| list_repo_issues | 问题 | 列出仓库中的所有问题 | | ||||
| create_issue | 问题 | 创建一个新问题 | | ||||
| create_issue_comment | 问题 | 在问题上创建评论 | | ||||
| edit_issue | 问题 | 编辑一个问题 | | ||||
| edit_issue_comment | 问题 | 在问题上编辑评论 | | ||||
| get_issue_comments_by_index | 问题 | 根据索引获取问题的评论 | | ||||
| get_pull_request_by_index | 拉取请求 | 根据索引获取拉取请求 | | ||||
| list_repo_pull_requests | 拉取请求 | 列出仓库中的所有拉取请求 | | ||||
| create_pull_request | 拉取请求 | 创建一个新拉取请求 | | ||||
| search_users | 用户 | 搜索用户 | | ||||
| search_org_teams | 组织 | 搜索组织中的团队 | | ||||
| search_repos | 仓库 | 搜索仓库 | | ||||
| get_gitea_mcp_server_version | 服务器 | 获取 Gitea MCP 服务器的版本 | | ||||
| 工具 | 范围 | 描述 | | ||||
| :--------------------------------: | :------: | :----------------------------: | | ||||
| get_my_user_info | 用户 | 获取已认证用户的信息 | | ||||
| get_user_orgs | 用户 | 获取已认证用户关联的组织 | | ||||
| create_repo | 仓库 | 创建一个新仓库 | | ||||
| fork_repo | 仓库 | 复刻一个仓库 | | ||||
| list_my_repos | 仓库 | 列出已认证用户拥有的所有仓库 | | ||||
| create_branch | 分支 | 创建一个新分支 | | ||||
| delete_branch | 分支 | 删除一个分支 | | ||||
| list_branches | 分支 | 列出仓库中的所有分支 | | ||||
| create_release | 版本发布 | 创建一个新版本发布 | | ||||
| delete_release | 版本发布 | 删除一个版本发布 | | ||||
| get_release | 版本发布 | 获取一个版本发布 | | ||||
| get_latest_release | 版本发布 | 获取最新的版本发布 | | ||||
| list_releases | 版本发布 | 列出所有版本发布 | | ||||
| create_tag | 标签 | 创建一个新标签 | | ||||
| delete_tag | 标签 | 删除一个标签 | | ||||
| get_tag | 标签 | 获取一个标签 | | ||||
| list_tags | 标签 | 列出所有标签 | | ||||
| list_repo_commits | 提交 | 列出仓库中的所有提交 | | ||||
| get_file_content | 文件 | 获取文件的内容和元数据 | | ||||
| get_dir_content | 文件 | 获取目录的内容列表 | | ||||
| create_file | 文件 | 创建一个新文件 | | ||||
| update_file | 文件 | 更新现有文件 | | ||||
| delete_file | 文件 | 删除一个文件 | | ||||
| get_issue_by_index | 问题 | 根据索引获取问题 | | ||||
| list_repo_issues | 问题 | 列出仓库中的所有问题 | | ||||
| create_issue | 问题 | 创建一个新问题 | | ||||
| create_issue_comment | 问题 | 在问题上创建评论 | | ||||
| edit_issue | 问题 | 编辑一个问题 | | ||||
| edit_issue_comment | 问题 | 在问题上编辑评论 | | ||||
| get_issue_comments_by_index | 问题 | 根据索引获取问题的评论 | | ||||
| get_single_issue_comment_by_index | 问题 | 根据ID获取单个问题评论 | | ||||
| get_pull_request_by_index | 拉取请求 | 根据索引获取拉取请求 | | ||||
| list_repo_pull_requests | 拉取请求 | 列出仓库中的所有拉取请求 | | ||||
| create_pull_request | 拉取请求 | 创建一个新拉取请求 | | ||||
| search_users | 用户 | 搜索用户 | | ||||
| search_org_teams | 组织 | 搜索组织中的团队 | | ||||
| search_repos | 仓库 | 搜索仓库 | | ||||
| get_gitea_mcp_server_version | 服务器 | 获取 Gitea MCP 服务器的版本 | | ||||
| ||||
## 🐛 调试 | ||||
| ||||
|
@@ -173,45 +173,46 @@ cp gitea-mcp /usr/local/bin/ | ||||
| ||||
Gitea MCP 伺服器支持以下工具: | ||||
| ||||
| 工具 | 範圍 | 描述 | | ||||
| :--------------------------: | :------: | :--------------------------: | | ||||
| get_my_user_info | 用戶 | 獲取已認證用戶的信息 | | ||||
| get_user_orgs | 用戶 | 取得已認證用戶所屬組織 | | ||||
| create_repo | 倉庫 | 創建一個新倉庫 | | ||||
| fork_repo | 倉庫 | 復刻一個倉庫 | | ||||
| list_my_repos | 倉庫 | 列出已認證用戶擁有的所有倉庫 | | ||||
| create_branch | 分支 | 創建一個新分支 | | ||||
| delete_branch | 分支 | 刪除一個分支 | | ||||
| list_branches | 分支 | 列出倉庫中的所有分支 | | ||||
| create_release | 版本發布 | 創建一個新版本發布 | | ||||
| delete_release | 版本發布 | 刪除一個版本發布 | | ||||
| get_release | 版本發布 | 獲取一個版本發布 | | ||||
| get_latest_release | 版本發布 | 獲取最新的版本發布 | | ||||
| list_releases | 版本發布 | 列出所有版本發布 | | ||||
| create_tag | 標籤 | 創建一個新標籤 | | ||||
| delete_tag | 標籤 | 刪除一個標籤 | | ||||
| get_tag | 標籤 | 獲取一個標籤 | | ||||
| list_tags | 標籤 | 列出所有標籤 | | ||||
| list_repo_commits | 提交 | 列出倉庫中的所有提交 | | ||||
| get_file_content | 文件 | 獲取文件的內容和元數據 | | ||||
| get_dir_content | 文件 | 獲取目錄的內容列表 | | ||||
| create_file | 文件 | 創建一個新文件 | | ||||
| update_file | 文件 | 更新現有文件 | | ||||
| delete_file | 文件 | 刪除一個文件 | | ||||
| get_issue_by_index | 問題 | 根據索引獲取問題 | | ||||
| list_repo_issues | 問題 | 列出倉庫中的所有問題 | | ||||
| create_issue | 問題 | 創建一個新問題 | | ||||
| create_issue_comment | 問題 | 在問題上創建評論 | | ||||
| edit_issue | 問題 | 編輯一個問題 | | ||||
| edit_issue_comment | 問題 | 在問題上編輯評論 | | ||||
| get_issue_comments_by_index | 问题 | 根據索引獲取問題的評論 | | ||||
| get_pull_request_by_index | 拉取請求 | 根據索引獲取拉取請求 | | ||||
| list_repo_pull_requests | 拉取請求 | 列出倉庫中的所有拉取請求 | | ||||
| create_pull_request | 拉取請求 | 創建一個新拉取請求 | | ||||
| search_users | 用戶 | 搜索用戶 | | ||||
| search_org_teams | 組織 | 搜索組織中的團隊 | | ||||
| search_repos | 倉庫 | 搜索倉庫 | | ||||
| get_gitea_mcp_server_version | 伺服器 | 獲取 Gitea MCP 伺服器的版本 | | ||||
| 工具 | 範圍 | 描述 | | ||||
| :--------------------------------: | :------: | :----------------------------: | | ||||
| get_my_user_info | 用戶 | 獲取已認證用戶的信息 | | ||||
| get_user_orgs | 用戶 | 取得已認證用戶所屬組織 | | ||||
| create_repo | 倉庫 | 創建一個新倉庫 | | ||||
| fork_repo | 倉庫 | 復刻一個倉庫 | | ||||
| list_my_repos | 倉庫 | 列出已認證用戶擁有的所有倉庫 | | ||||
| create_branch | 分支 | 創建一個新分支 | | ||||
| delete_branch | 分支 | 刪除一個分支 | | ||||
| list_branches | 分支 | 列出倉庫中的所有分支 | | ||||
| create_release | 版本發布 | 創建一個新版本發布 | | ||||
| delete_release | 版本發布 | 刪除一個版本發布 | | ||||
| get_release | 版本發布 | 獲取一個版本發布 | | ||||
| get_latest_release | 版本發布 | 獲取最新的版本發布 | | ||||
| list_releases | 版本發布 | 列出所有版本發布 | | ||||
| create_tag | 標籤 | 創建一個新標籤 | | ||||
| delete_tag | 標籤 | 刪除一個標籤 | | ||||
| get_tag | 標籤 | 獲取一個標籤 | | ||||
| list_tags | 標籤 | 列出所有標籤 | | ||||
| list_repo_commits | 提交 | 列出倉庫中的所有提交 | | ||||
| get_file_content | 文件 | 獲取文件的內容和元數據 | | ||||
| get_dir_content | 文件 | 獲取目錄的內容列表 | | ||||
| create_file | 文件 | 創建一個新文件 | | ||||
| update_file | 文件 | 更新現有文件 | | ||||
| delete_file | 文件 | 刪除一個文件 | | ||||
| get_issue_by_index | 問題 | 根據索引獲取問題 | | ||||
| list_repo_issues | 問題 | 列出倉庫中的所有問題 | | ||||
| create_issue | 問題 | 創建一個新問題 | | ||||
| create_issue_comment | 問題 | 在問題上創建評論 | | ||||
| edit_issue | 問題 | 編輯一個問題 | | ||||
| edit_issue_comment | 問題 | 在問題上編輯評論 | | ||||
| get_issue_comments_by_index | 問題 | 根據索引獲取問題的評論 | | ||||
| get_single_issue_comment_by_index | 問題 | 根據ID獲取單個問題評論 | | ||||
| get_pull_request_by_index | 拉取請求 | 根據索引獲取拉取請求 | | ||||
| list_repo_pull_requests | 拉取請求 | 列出倉庫中的所有拉取請求 | | ||||
| create_pull_request | 拉取請求 | 創建一個新拉取請求 | | ||||
| search_users | 用戶 | 搜索用戶 | | ||||
| search_org_teams | 組織 | 搜索組織中的團隊 | | ||||
| search_repos | 倉庫 | 搜索倉庫 | | ||||
| get_gitea_mcp_server_version | 伺服器 | 獲取 Gitea MCP 伺服器的版本 | | ||||
| ||||
## 🐛 調試 | ||||
| ||||
|
@@ -25,6 +25,7 @@ const ( | ||||
EditIssueToolName = "edit_issue" | ||||
EditIssueCommentToolName = "edit_issue_comment" | ||||
GetIssueCommentsByIndexToolName = "get_issue_comments_by_index" | ||||
GetSingleIssueCommentByIndexToolName = "get_single_issue_comment_by_index" | ||||
) | ||||
| ||||
var ( | ||||
@@ -93,6 +94,14 @@ var ( | ||||
mcp.WithString("repo", mcp.Required(), mcp.Description("repository name")), | ||||
mcp.WithNumber("index", mcp.Required(), mcp.Description("repository issue index")), | ||||
) | ||||
| ||||
GetSingleIssueCommentByIndexTool = mcp.NewTool( | ||||
GetSingleIssueCommentByIndexToolName, | ||||
mcp.WithDescription("get single issue comment by index"), | ||||
mcp.WithString("owner", mcp.Required(), mcp.Description("repository owner")), | ||||
mcp.WithString("repo", mcp.Required(), mcp.Description("repository name")), | ||||
mcp.WithNumber("commentIndex", mcp.Required(), mcp.Description("comment index")), | ||||
) | ||||
) | ||||
| ||||
func init() { | ||||
@@ -124,6 +133,10 @@ func init() { | ||||
Tool: GetIssueCommentsByIndexTool, | ||||
Handler: GetIssueCommentsByIndexFn, | ||||
}) | ||||
Tool.RegisterRead(server.ServerTool{ | ||||
Tool: GetSingleIssueCommentByIndexTool, | ||||
Handler: GetSingleIssueCommentByIndexFn, | ||||
}) | ||||
} | ||||
| ||||
func GetIssueByIndexFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||
@@ -339,3 +352,25 @@ func GetIssueCommentsByIndexFn(ctx context.Context, req mcp.CallToolRequest) (*m | ||||
| ||||
return to.TextResult(issue) | ||||
} | ||||
| ||||
func GetSingleIssueCommentByIndexFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||
log.Debugf("Called GetSingleIssueCommentByIndexFn") | ||||
owner, ok := req.GetArguments()["owner"].(string) | ||||
if !ok { | ||||
return to.ErrorResult(fmt.Errorf("owner is required")) | ||||
} | ||||
repo, ok := req.GetArguments()["repo"].(string) | ||||
if !ok { | ||||
return to.ErrorResult(fmt.Errorf("repo is required")) | ||||
} | ||||
commentID, ok := req.GetArguments()["commentIndex"].(float64) | ||||
if !ok { | ||||
return to.ErrorResult(fmt.Errorf("commentIndex is required")) | ||||
} | ||||
comment, _, err := gitea.Client().GetIssueComment(owner, repo, int64(commentID)) | ||||
fdrake marked this conversation as resolved Outdated | ||||
if err != nil { | ||||
return to.ErrorResult(fmt.Errorf("get %v/%v/issues/comments/%v err: %v", owner, repo, int64(commentID), err)) | ||||
} | ||||
| ||||
return to.TextResult(comment) | ||||
} | ||||
|
Reference in New Issue
Block a user
The last param is the comment id not index. There is no index for comment.
Updated variable to correctly identify as an ID, not an index.