@@ -58,7 +58,11 @@ func demoElicitationHandler(s *server.MCPServer) server.ToolHandlerFunc {
5858return nil , fmt .Errorf ("unexpected response format" )
5959}
6060
61- projectName := data ["projectName" ].(string )
61+ projectName , ok := data ["projectName" ].(string )
62+ if ! ok || projectName == "" {
63+ return nil , fmt .Errorf ("invalid or missing 'projectName' in elicitation response" )
64+ }
65+
6266framework := "none"
6367if fw , ok := data ["framework" ].(string ); ok {
6468framework = fw
@@ -123,8 +127,7 @@ func main() {
123127mcp .WithString ("data" , mcp .Required (), mcp .Description ("Data to process" )),
124128),
125129func (ctx context.Context , request mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
126- data := request .GetArguments ()["data" ].(string )
127-
130+ data := request .GetString ("data" , "" )
128131// Only request elicitation if data seems sensitive
129132if len (data ) > 100 {
130133elicitationRequest := mcp.ElicitationRequest {
@@ -160,7 +163,11 @@ func main() {
160163}, nil
161164}
162165
163- responseData := result .Response .Value .(map [string ]interface {})
166+ responseData , ok := result .Response .Value .(map [string ]interface {})
167+ if ! ok {
168+ responseData = make (map [string ]interface {})
169+ }
170+
164171if proceed , ok := responseData ["proceed" ].(bool ); ! ok || ! proceed {
165172reason := "No reason provided"
166173if r , ok := responseData ["reason" ].(string ); ok && r != "" {
0 commit comments