add title field to prompt argument

`PromptArgument extends BaseMetadata`, which includes both name and
title
 - 51e093b8eb/schema/2025-06-18/schema.ts (L686-L698)
 - 51e093b8eb/schema/2025-06-18/schema.ts (L294-l309)
This commit is contained in:
Topher Bullock 2025-10-06 09:35:42 -04:00
commit 701f6faab6
3 changed files with 19 additions and 6 deletions

View file

@ -624,6 +624,7 @@ class MyPrompt < MCP::Prompt
arguments [
MCP::Prompt::Argument.new(
name: "message",
title: "Message Title",
description: "Input message",
required: true
)
@ -661,6 +662,7 @@ prompt = MCP::Prompt.define(
arguments: [
MCP::Prompt::Argument.new(
name: "message",
title: "Message Title",
description: "Input message",
required: true
)
@ -692,6 +694,7 @@ server.define_prompt(
arguments: [
Prompt::Argument.new(
name: "message",
title: "Message Title",
description: "Input message",
required: true
)
@ -718,7 +721,7 @@ e.g. around authentication state or user preferences.
### Key Components
- `MCP::Prompt::Argument` - Defines input parameters for the prompt template
- `MCP::Prompt::Argument` - Defines input parameters for the prompt template with name, title, description, and required flag
- `MCP::Prompt::Message` - Represents a message in the conversation with a role and content
- `MCP::Prompt::Result` - The output of a prompt template containing description and messages
- `MCP::Content::Text` - Text content for messages

View file

@ -3,17 +3,22 @@
module MCP
class Prompt
class Argument
attr_reader :name, :description, :required, :arguments
attr_reader :name, :title, :description, :required
def initialize(name:, description: nil, required: false)
def initialize(name:, title: nil, description: nil, required: false)
@name = name
@title = title
@description = description
@required = required
@arguments = arguments
end
def to_h
{ name:, description:, required: }.compact
{
name: name,
title: title,
description: description,
required: required,
}.compact
end
end
end

View file

@ -113,7 +113,12 @@ module MCP
title: "Mock Prompt",
description: "a mock prompt for testing",
arguments: [
Prompt::Argument.new(name: "test_argument", description: "Test argument", required: true),
Prompt::Argument.new(
name: "test_argument",
title: "Test argument title",
description: "This is a test argument description",
required: true,
),
],
) do |args, server_context:|
content = Content::Text.new(args["test_argument"] + " user: #{server_context[:user_id]}")