Skip to content

NoMethodError when using "title" in MCP Tool #112

@1c7

Description

@1c7

simple_server.rb

Here is correct ruby code

#!/usr/bin/env ruby

require 'mcp'

class ExampleTool < MCP::Tool
  description "啊Aas simple example tool that echoes back its arguments"
  input_schema(
    properties: {
      message: { type: "string" },
    },
    required: ["message"]
  )

  class << self
    def call(message:, server_context:)
      MCP::Tool::Response.new([{
        type: "text",
        text: "Hello from example tool! Message: #{message}",
      }])
    end
  end
end


welcome_resource = MCP::Resource.new(
  uri: "hello://welcome",
  name: "welcome",
  description: "Simple Welcome",
  mime_type: "text/plain"
)


server = MCP::Server.new(
  name: "simple_hello_server",
  version: "1.0.0",
  tools: [ExampleTool],
  resources: [welcome_resource]
)


server.resources_read_handler do |params|
  case params[:uri]
  when "hello://welcome"
    [{
      uri: params[:uri],
      mimeType: "text/plain",
      text: "欢迎使用简化版MCP服务器!\n\n功能:\n- 问候工具: 多语言问候\n- 欢迎资源: 欢迎信息"
    }]
  else
    [{
      uri: params[:uri],
      mimeType: "text/plain", 
      text: "资源未找到"
    }]
  end
end


transport_type = ARGV[0] || "stdio"

case transport_type.downcase
when "http"
  require 'mcp/server/transports/http_transport'
  
  host = ARGV[1] || "localhost"
  port = (ARGV[2] || "3000").to_i
  
  transport = MCP::Server::Transports::HttpTransport.new(
    server,
    host: host,
    port: port
  )
  transport.open
  
when "stdio"
  require 'mcp/server/transports/stdio_transport'
  
  transport = MCP::Server::Transports::StdioTransport.new(server)
  transport.open
  
else
  puts "错误: 不支持的传输类型 '#{transport_type}'"
  puts "用法: ruby simple_server.rb [stdio|http] [host] [port]"
  puts "示例:"
  puts "  ruby simple_server.rb stdio"
  puts "  ruby simple_server.rb http localhost 3000"
  exit 1
end

But, If I add "title" to class ExampleTool < MCP::Tool would cause error

Image Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions