-
Notifications
You must be signed in to change notification settings - Fork 57
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
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


Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working