Skip to content

Commit 46e18dd

Browse files
committed
coderabit fix
1 parent 8bc9f9c commit 46e18dd

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

client/elicitation_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,23 @@ func TestClient_Initialize_WithElicitationHandler(t *testing.T) {
144144
t.Fatalf("expected initialize method, got %s", request.Method)
145145
}
146146

147+
// Verify that elicitation capability is included in the request
148+
paramsBytes, err := json.Marshal(request.Params)
149+
if err != nil {
150+
t.Fatalf("failed to marshal params: %v", err)
151+
}
152+
153+
var initParams struct {
154+
Capabilities mcp.ClientCapabilities `json:"capabilities"`
155+
}
156+
if err := json.Unmarshal(paramsBytes, &initParams); err != nil {
157+
t.Fatalf("failed to unmarshal params: %v", err)
158+
}
159+
160+
if initParams.Capabilities.Elicitation == nil {
161+
t.Error("expected elicitation capability to be declared")
162+
}
163+
147164
// Return successful initialization response
148165
result := mcp.InitializeResult{
149166
ProtocolVersion: mcp.LATEST_PROTOCOL_VERSION,

examples/elicitation/main.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,10 @@ func demoElicitationHandler(s *server.MCPServer) server.ToolHandlerFunc {
5858
return nil, fmt.Errorf("unexpected response format")
5959
}
6060

61-
projectName := data["projectName"].(string)
61+
projectName := "default-project"
62+
if name, ok := data["projectName"].(string); ok {
63+
projectName = name
64+
}
6265
framework := "none"
6366
if fw, ok := data["framework"].(string); ok {
6467
framework = fw
@@ -123,8 +126,7 @@ func main() {
123126
mcp.WithString("data", mcp.Required(), mcp.Description("Data to process")),
124127
),
125128
func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
126-
data := request.GetArguments()["data"].(string)
127-
129+
data := request.GetString("data", "")
128130
// Only request elicitation if data seems sensitive
129131
if len(data) > 100 {
130132
elicitationRequest := mcp.ElicitationRequest{
@@ -160,7 +162,11 @@ func main() {
160162
}, nil
161163
}
162164

163-
responseData := result.Response.Value.(map[string]interface{})
165+
responseData, ok := result.Response.Value.(map[string]interface{})
166+
if !ok {
167+
responseData = make(map[string]interface{})
168+
}
169+
164170
if proceed, ok := responseData["proceed"].(bool); !ok || !proceed {
165171
reason := "No reason provided"
166172
if r, ok := responseData["reason"].(string); ok && r != "" {

0 commit comments

Comments
 (0)