Skip to content

fix: mcp element search#210

Merged
o-ga09 merged 1 commit intomainfrom
fix-mcp-element-search
Apr 7, 2026
Merged

fix: mcp element search#210
o-ga09 merged 1 commit intomainfrom
fix-mcp-element-search

Conversation

@o-ga09
Copy link
Copy Markdown
Owner

@o-ga09 o-ga09 commented Apr 7, 2026

close #

実装内容

動作確認

エビデンス

テスト結果

Copilot AI review requested due to automatic review settings April 7, 2026 14:38
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

Code Metrics Report

Coverage Code to Test Ratio Test Execution Time
30.2% 1:0.4 1m27s

Code coverage of files in pull request scope (20.1%)

Files Coverage
internal/agent/tools.go 20.1%

Reported by octocov

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

概要

エージェント向けの get_monsters ツールに、属性(usage_element)/弱点属性(weakness_element)での絞り込みパラメータを追加し、要素検索を可能にする変更です(MCP/Agent 経由の検索体験を改善)。

実装内容

Changes:

  • get_monsters のツール説明文を、属性/弱点属性フィルタ対応の旨を追記
  • GetMonstersInputusage_element / weakness_element を追加
  • RequestParamUsageElement / WeaknessElement を詰めて検索処理に伝播

getMonstersT, err := functiontool.New(functiontool.Config{
Name: "get_monsters",
Description: "モンスターの一覧を取得します。名前やIDでフィルタリングでき、ページネーションもサポートしています。",
Description: "モンスターの一覧を取得します。名前・ID・属性(usage_element)・弱点属性(weakness_element)でフィルタリングでき、ページネーションもサポートしています。属性値の例: 火, 水, 雷, 氷, 龍",
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

get_monsters の説明文で属性値の例が「火, 水, 雷, 氷, 龍」になっていますが、DB/検索側では UsageElement は "Fire"/"Water"/"Dragon" など英語値で一致検索しているようです(internal/database/mysql/monsterQueryService_test.go:56-73)。usage_element と weakness_element で想定する値の体系(英語/日本語)を揃えるか、少なくとも説明文の例を実装に合わせて誤解が出ないようにしてください。

Suggested change
Description: "モンスターの一覧を取得します。名前・ID・属性(usage_element)・弱点属性(weakness_element)でフィルタリングでき、ページネーションもサポートしています。属性値の例: 火, 水, 雷, 氷, 龍",
Description: "モンスターの一覧を取得します。名前・ID・属性(usage_element)・弱点属性(weakness_element)でフィルタリングでき、ページネーションもサポートしています。usage_element と weakness_element の属性値の例: Fire, Water, Thunder, Ice, Dragon",

Copilot uses AI. Check for mistakes.
Comment on lines 195 to +210
sort := args.Sort
if sort == "" {
sort = "asc"
}

// offset is the number of records to skip (not page number)
calculatedOffset := offset

param := request.RequestParam{
MonsterIds: args.MonsterIDs,
MonsterName: args.Name,
Sort: sort,
Limit: limit,
Offset: calculatedOffset,
MonsterIds: args.MonsterIDs,
MonsterName: args.Name,
UsageElement: args.UsageElement,
WeaknessElement: args.WeaknessElement,
Sort: sort,
Limit: limit,
Offset: calculatedOffset,
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sort の受け付け値がこのツール側では "asc"/"desc" 前提ですが、検索実装(internal/database/mysql/monsterQueryService.go:174-178 / monsterQueryService_test.go:64-69)だと Sort=="1" のとき DESC、それ以外は ASC になっており、args.Sort="desc" を渡しても降順になりません。getMonsters 内で "desc"→"1" / "asc"→"2" のようにマッピングするか、下流側を "asc"/"desc" を解釈する実装に揃えてください。

Copilot uses AI. Check for mistakes.
Comment on lines 145 to +153
// Input/Output types for tools
type GetMonstersInput struct {
MonsterIDs string `json:"monster_ids,omitempty"`
Name string `json:"name,omitempty"`
Sort string `json:"sort,omitempty"`
Offset int `json:"offset,omitempty"`
Limit int `json:"limit,omitempty"`
MonsterIDs string `json:"monster_ids,omitempty"`
Name string `json:"name,omitempty"`
UsageElement string `json:"usage_element,omitempty"`
WeaknessElement string `json:"weakness_element,omitempty"`
Sort string `json:"sort,omitempty"`
Offset int `json:"offset,omitempty"`
Limit int `json:"limit,omitempty"`
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

usage_element / weakness_element のフィルタ引数を新規追加していますが、このツール層に対するテスト(internal/agent/tools_test.go)は現状ツール一覧の存在確認のみで、追加フィルタが RequestParam に正しく反映されることを検証していません。AGENTS.md のテスト規約に合わせ、モック(moq 生成など)を使って getMonsters が UsageElement/WeaknessElement を含む param を渡すことをテーブルドリブンで追加すると回帰を防げます。

Copilot generated this review using guidance from repository custom instructions.
@o-ga09 o-ga09 merged commit 541d5bf into main Apr 7, 2026
10 checks passed
@o-ga09 o-ga09 deleted the fix-mcp-element-search branch April 7, 2026 14:48
@github-actions github-actions bot mentioned this pull request Apr 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants