diff --git a/README.md b/README.md index f1726ad7..6076fc72 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,7 @@ class ApplicationController < ActionController::Base def index server = MCP::Server.new( name: "my_server", + title: "Example Server Display Name", # WARNING: This is a `Draft` and is not supported in the `Version 2025-06-18 (latest)` specification. version: "1.0.0", instructions: "Use the tools of this server as a last resort", tools: [SomeTool, AnotherTool], diff --git a/lib/mcp/server.rb b/lib/mcp/server.rb index 11538211..f62ee03b 100644 --- a/lib/mcp/server.rb +++ b/lib/mcp/server.rb @@ -31,10 +31,11 @@ def initialize(method_name) include Instrumentation - attr_accessor :name, :version, :instructions, :tools, :prompts, :resources, :server_context, :configuration, :capabilities, :transport + attr_accessor :name, :title, :version, :instructions, :tools, :prompts, :resources, :server_context, :configuration, :capabilities, :transport def initialize( name: "model_context_protocol", + title: nil, version: DEFAULT_VERSION, instructions: nil, tools: [], @@ -47,6 +48,7 @@ def initialize( transport: nil ) @name = name + @title = title @version = version @instructions = instructions @tools = tools.to_h { |t| [t.name_value, t] } @@ -218,6 +220,7 @@ def default_capabilities def server_info @server_info ||= { name:, + title:, version:, } end diff --git a/test/mcp/server_test.rb b/test/mcp/server_test.rb index db370be8..a8527bc0 100644 --- a/test/mcp/server_test.rb +++ b/test/mcp/server_test.rb @@ -69,6 +69,7 @@ class ServerTest < ActiveSupport::TestCase @server = Server.new( name: @server_name, + title: "Example Server Display Name", version: "1.2.3", instructions: "Optional instructions for the client", tools: [@tool, @tool_that_raises], @@ -140,6 +141,7 @@ class ServerTest < ActiveSupport::TestCase }, serverInfo: { name: @server_name, + title: "Example Server Display Name", version: "1.2.3", }, instructions: "Optional instructions for the client", @@ -769,6 +771,18 @@ def call(message:, server_context: nil) assert_equal Configuration::DEFAULT_PROTOCOL_VERSION, response[:result][:protocolVersion] end + test "server uses default title when not configured" do + server = Server.new(name: "test_server") + request = { + jsonrpc: "2.0", + method: "initialize", + id: 1, + } + + response = server.handle(request) + assert_nil response[:result][:serverInfo][:title] + end + test "server uses default version when not configured" do server = Server.new(name: "test_server") request = {