mcp-sdk 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5bfccbc3dbbb652bb24f57517c8b28aa4d517d3d7635df0db7611fdad12c3e63
4
- data.tar.gz: 747f6bad3ba4342cfc531b07df8e705accebc62a8cdded803086840aecd88b1e
3
+ metadata.gz: 5bff3f908a7b547a1bb322da2d703e7d01d587cb39a52bf319dbd2b54ffd6e65
4
+ data.tar.gz: e172b78334e1dab2b4cfc429fecd5c1bd71c9bc8f357f3ff4dff0273d43f7193
5
5
  SHA512:
6
- metadata.gz: 4d8c69bdd6f0ef59abd6d6db7e5d53fd5d6348c9ce82aaef590cc1438671c0f8bfd7fea129b116bbb6decde0591904cdbce211e7170b2274095f20fb34601002
7
- data.tar.gz: 24547b56808d1cc94652d00c66d7d2671a0cf54b31ace47ed1edd346118113974e32bbddd04289c6a3a4f220f1daa0ff37e14e748e81ad037a45531f5c7530db
6
+ metadata.gz: f46cf467934fd424c5ca7491d19f8d02b63099dcb44e091a3a06143060b2ee2a0aa515d7d307893a0b947455417d1024c34d879c0ad4e2084f19dbf87513bdef
7
+ data.tar.gz: 04d4427dad286c3c3392dc2e41d26bb5a99423468d5a7618d04217f7370c8036e4dbcad45d31cdc0e57755347d5991ee278c9716782db74b13bb070a982f74bd
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Add new inflections here
4
+ ActiveSupport::Inflector.inflections do |inflect|
5
+ inflect.plural /^(my|your|his|her|its|our|their)\s+(?:(person|people))$/i, '\1\2s'
6
+ inflect.uncountable('species')
7
+ inflect.acronym('API')
8
+ end
@@ -0,0 +1,10 @@
1
+ # In your gem's lib/mcp/railtie.rb
2
+ module MCP
3
+ class Railtie < Rails::Railtie
4
+ initializer 'mcp.inflections' do
5
+ ActiveSupport::Inflector.inflections(:en) do |inflect|
6
+ inflect.acronym 'MCP'
7
+ end
8
+ end
9
+ end
10
+ end
@@ -1,6 +1,6 @@
1
1
  require 'json'
2
2
 
3
- module Mcp
3
+ module MCP
4
4
  module Server
5
5
  class Http
6
6
  def initialize
@@ -12,13 +12,15 @@ module Mcp
12
12
  path = req.path_info
13
13
 
14
14
  case path
15
- when "/sse"
15
+ when "/sse", "/", ""
16
16
  sse(env)
17
+ else
18
+ [404, {"content-type" => "application/json"}, [{"error": "Not Found"}.to_json]]
17
19
  end
18
20
  end
19
21
 
20
22
  private
21
-
23
+
22
24
  def sse(env)
23
25
  body = env['rack.input'].read
24
26
 
@@ -1,8 +1,8 @@
1
- module Mcp
1
+ module MCP
2
2
  module Server
3
3
  class RequestHandler
4
4
  def handle_request(request)
5
- handler = Mcp::Server.request_handlers[request["method"]]
5
+ handler = MCP::Server.request_handlers[request["method"]]
6
6
  result = handler ? handler.call(request["params"]) : handle_default(request)
7
7
 
8
8
  response = {"jsonrpc": "2.0", "result": result}
@@ -15,16 +15,16 @@ module Mcp
15
15
  case request["method"]
16
16
  when "tools/list"
17
17
  {
18
- "tools": Mcp::Server.tools.map { |k, v| v.show },
18
+ "tools": MCP::Server.tools.map { |k, v| v.show },
19
19
  "nextCursor": "next-page-cursor" # TODO: pagination
20
20
  }
21
21
  when "tools/call"
22
22
  tool_name = request["params"]["name"]
23
- tool = Mcp::Server.tools[tool_name.to_sym]
23
+ tool = MCP::Server.tools[tool_name.to_sym]
24
24
  tool.call(request["params"]["arguments"])
25
25
  when "resources/templates/list"
26
26
  {
27
- "resourceTemplates": Mcp::Server.resource_templates.map { |k, v| v.show }
27
+ "resourceTemplates": MCP::Server.resource_templates.map { |k, v| v.show }
28
28
  }
29
29
  else
30
30
  # BUG
@@ -1,4 +1,4 @@
1
- module Mcp
1
+ module MCP
2
2
  module Server
3
3
  class ResourceTemplate
4
4
  attr_reader :uri_template, :name, :description, :mime_type, :handler
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "json"
4
4
 
5
- module Mcp
5
+ module MCP
6
6
  module Server
7
7
  module Stdio
8
8
  class Reader
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'json'
4
4
 
5
- module Mcp
5
+ module MCP
6
6
  module Server
7
7
  module Stdio
8
8
  class Writer
@@ -1,4 +1,4 @@
1
- module Mcp
1
+ module MCP
2
2
  module Server
3
3
  class Tool
4
4
  attr_accessor :name, :description, :parameters
data/lib/mcp/server.rb CHANGED
@@ -1,4 +1,4 @@
1
- module Mcp
1
+ module MCP
2
2
  module Server
3
3
  autoload :Configuration, "mcp/server/configuration"
4
4
  autoload :Http, "mcp/server/http"
@@ -8,8 +8,17 @@ module Mcp
8
8
  self.instance_eval(&block) if block_given?
9
9
  end
10
10
 
11
- def tools
12
- @tools ||= {}
11
+ def tools(tool_list = nil)
12
+ if tool_list.nil?
13
+ @tools ||= {}
14
+ elsif tool_list.is_a?(Array)
15
+ @tools ||= {}
16
+ tool_list.each do |tool|
17
+ @tools[tool.name] = tool
18
+ end
19
+ else
20
+ raise ArgumentError, "Expected an array of tools"
21
+ end
13
22
  end
14
23
 
15
24
  def resource_templates
data/lib/mcp-sdk.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'mcp/mcp'
1
+ require 'mcp/railtie' if defined?(Rails)
2
2
  require 'mcp/server'
3
3
  require 'mcp/server/http'
4
4
  require 'mcp/server/request_handler'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mcp-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Donovan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-01 00:00:00.000000000 Z
11
+ date: 2025-04-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Implements the Model Context Protocol as a Ruby gem
14
14
  email: jsphdnvn@gmail.com
@@ -17,7 +17,8 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - lib/mcp-sdk.rb
20
- - lib/mcp/mcp.rb
20
+ - lib/mcp/inflections.rb
21
+ - lib/mcp/railtie.rb
21
22
  - lib/mcp/server.rb
22
23
  - lib/mcp/server/http.rb
23
24
  - lib/mcp/server/request_handler.rb
data/lib/mcp/mcp.rb DELETED
@@ -1,3 +0,0 @@
1
- module Mcp
2
- VERSION = "0.0.1"
3
- end