generated from VLADIMIR/template
fix
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// Package mcp_service собирает MCP-сервер (Model Context Protocol) для
|
||||
// Пакет mcp_service собирает MCP-сервер (Model Context Protocol) для
|
||||
// игры «Вечерний детектив»: инструменты MCP вызывают игровые сервисы
|
||||
// напрямую (через интерфейс GamePlayer), без HTTP-прослойки. MCP-сервер
|
||||
// монтируется в основной процесс как HTTP-эндпоинт /mcp (streamable HTTP)
|
||||
@@ -49,13 +49,10 @@ type MCPService struct {
|
||||
answers AnswerSubmitter
|
||||
}
|
||||
|
||||
// NewMCPService создаёт сервис поверх игровых сервисов.
|
||||
func NewMCPService(game GamePlayer, answers AnswerSubmitter) *MCPService {
|
||||
return &MCPService{game: game, answers: answers}
|
||||
}
|
||||
|
||||
// Server собирает и возвращает MCP-сервер с зарегистрированными
|
||||
// инструментами.
|
||||
func (s *MCPService) Server() *server.MCPServer {
|
||||
srv := server.NewMCPServer(
|
||||
"evening-detective-mcp",
|
||||
@@ -124,7 +121,6 @@ func (s *MCPService) Server() *server.MCPServer {
|
||||
return srv
|
||||
}
|
||||
|
||||
// connectArgs — результат разбора ссылки на игру.
|
||||
type connectArgs struct {
|
||||
teamID int64
|
||||
password string
|
||||
@@ -168,21 +164,17 @@ func parseConnectURL(rawURL string) (connectArgs, error) {
|
||||
return connectArgs{teamID: teamID, password: password}, nil
|
||||
}
|
||||
|
||||
// gameResponse — компактное описание игры для ответа инструментов
|
||||
// (game_model.Game JSON-тегов не имеет).
|
||||
type gameResponse struct {
|
||||
ID int `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Status string `json:"status"`
|
||||
}
|
||||
|
||||
// storyResponse — JSON-ответ инструментов: история команды + инфо об игре.
|
||||
type storyResponse struct {
|
||||
Story *storytelling.Story `json:"story"`
|
||||
Game *gameResponse `json:"game"`
|
||||
}
|
||||
|
||||
// storyJSON сериализует историю команды и игру в JSON.
|
||||
func storyJSON(story *storytelling.Story, game *game_model.Game) (string, error) {
|
||||
resp := storyResponse{
|
||||
Story: story,
|
||||
@@ -284,7 +276,6 @@ func (s *MCPService) handleMakeMove(ctx context.Context, req mcp.CallToolRequest
|
||||
return mcp.NewToolResultText(jsonBody), nil
|
||||
}
|
||||
|
||||
// submitAnswersArgs — разобранные аргументы инструмента submit_answers.
|
||||
type submitAnswersArgs struct {
|
||||
teamID int64
|
||||
password string
|
||||
|
||||
@@ -82,7 +82,7 @@ func defaultGame() *game_model.Game {
|
||||
}
|
||||
}
|
||||
|
||||
// mcpFixture поднимает in-process MCP-клиент над сервисом с моком
|
||||
// mcpFixture поднимает встроенный MCP-клиент над сервисом с моком
|
||||
// GamePlayer. Каждый кейс создаёт СВЕЖИЙ сервис.
|
||||
type mcpFixture struct {
|
||||
client *client.Client
|
||||
|
||||
Reference in New Issue
Block a user