Commit 9cde046

mo khan <mo@mokhan.ca>
2026-09-06 13:58:01
refactor: reorganize gems
1 parent 0f35cec
Changed files (3)
lib/elelem/mcp/plugin.rb → lib/elelem/mcp/plugins/provider.rb
@@ -1,14 +1,15 @@
 # frozen_string_literal: true
 
-require "elelem"
-require_relative "../mcp"
+require "elelem/plugins"
+require_relative "../../mcp"
 
 Elelem::Plugins.register(:mcp) do |agent|
-  mcp = Elelem::MCP::Client.new
-  at_exit { mcp.close }
+  mcp = Elelem::MCP::Client.memoized
 
   Thread.new do
     mcp.tools.each do |name, tool|
+      next if agent.toolbox.tools.key?(name)
+
       agent.toolbox.add(
         name,
         description: tool[:description],
lib/elelem/mcp/client.rb
@@ -1,6 +1,6 @@
 # frozen_string_literal: true
 
-require "elelem/version"
+require_relative "version"
 require "json"
 require "net/http"
 require "open3"
@@ -15,6 +15,10 @@ module Elelem
         ".agents/mcp.json"
       ].freeze
 
+      def self.memoized
+        @memoized ||= new.tap { |client| at_exit { client.close } }
+      end
+
       def initialize(configurations = CONFIG_PATHS)
         @config = load_config(configurations)
         @servers = {}
@@ -92,7 +96,7 @@ module Elelem
         request("initialize", {
           protocolVersion: "2025-06-18",
           capabilities: {},
-          clientInfo: { name: "elelem", version: Elelem::VERSION }
+          clientInfo: { name: "elelem", version: Elelem::MCP::VERSION }
         })
         notify("notifications/initialized")
       end
elelem-mcp.gemspec
@@ -18,18 +18,11 @@ Gem::Specification.new do |spec|
   spec.metadata["homepage_uri"] = spec.homepage
   spec.metadata["source_code_uri"] = "https://git.mokhan.ca/xlgmokha/elelem.git"
 
-  spec.files = [
-    "LICENSE.txt",
-    "lib/elelem/mcp.rb",
-    "lib/elelem/mcp/version.rb",
-    "lib/elelem/mcp/client.rb",
-    "lib/elelem/mcp/token_storage.rb",
-    "lib/elelem/mcp/plugin.rb",
-  ]
+  spec.files = ["LICENSE.txt", "lib/elelem/mcp.rb"] + Dir["lib/elelem/mcp/**/*.{rb}"]
   spec.require_paths = ["lib"]
 
   spec.add_dependency "digest", "~> 3.2"
-  spec.add_dependency "elelem", "~> 0.1"
+  spec.add_dependency "elelem-plugins", "~> 0.1"
   spec.add_dependency "fileutils", "~> 1.8"
   spec.add_dependency "json", "~> 2.21"
   spec.add_dependency "net-http", "~> 0.9"