Commit ed15711
Changed files (5)
spec
elelem
lib/elelem/mcp/client.rb
@@ -49,7 +49,7 @@ module Elelem
file = File.expand_path(path)
next unless File.exist?(file)
- config = JSON.parse(IO.read(file))
+ config = JSON.parse(File.read(file))
servers = config.fetch("mcpServers", {})
merged["mcpServers"] = (merged["mcpServers"] || {}).merge(servers)
end
@@ -92,10 +92,10 @@ module Elelem
def handshake!
request("initialize", {
- protocolVersion: "2025-06-18",
- capabilities: {},
- clientInfo: { name: "elelem", version: Elelem::MCP::VERSION }
- })
+ protocolVersion: "2025-06-18",
+ capabilities: {},
+ clientInfo: { name: "elelem", version: Elelem::MCP::VERSION }
+ })
notify("notifications/initialized")
end
end
@@ -105,7 +105,9 @@ module Elelem
def initialize(command:, args: [], env: {})
resolved_env = env.transform_values do |v|
- v.gsub(/\$\{(\w+)\}/) { ENV[$1] || raise("Missing environment variable: #{$1}") }
+ v.gsub(/\$\{(\w+)\}/) do
+ ENV[::Regexp.last_match(1)] || raise("Missing environment variable: #{::Regexp.last_match(1)}")
+ end
end
@stdin, @stdout, @stderr, @wait = Open3.popen3(resolved_env, command, *args)
@id = 0
@@ -172,7 +174,7 @@ module Elelem
def resolve_headers(headers)
headers.transform_values do |v|
v.gsub(/\$\{(\w+)\}/) do
- ENV[$1] || raise("Missing environment variable: #{$1}")
+ ENV[::Regexp.last_match(1)] || raise("Missing environment variable: #{::Regexp.last_match(1)}")
end
end
end
lib/elelem/mcp/oauth.rb
@@ -3,8 +3,8 @@
module Elelem
module MCP
class OAuth
- CALLBACK_PORT = 18273
- REDIRECT_URI = "http://127.0.0.1:#{CALLBACK_PORT}/callback"
+ CALLBACK_PORT = 18_273
+ REDIRECT_URI = "http://127.0.0.1:#{CALLBACK_PORT}/callback".freeze
def initialize(resource_url, http: HttpAdapter.new)
@resource_url = resource_url
@@ -138,11 +138,9 @@ module Elelem
end
def open_browser(url)
- commands = ["xdg-open", "open", "start"]
- commands.each do |cmd|
- return if system(cmd, url, out: File::NULL, err: File::NULL)
- end
- warn "Open this URL in your browser: #{url}"
+ commands = %w[xdg-open open start]
+ opened = commands.any? { |cmd| system(cmd, url, out: File::NULL, err: File::NULL) }
+ warn "Open this URL in your browser: #{url}" unless opened
end
def wait_for_callback(expected_state)
lib/elelem/mcp.rb
@@ -33,7 +33,7 @@ Elelem.configure do |config|
&tool[:fn]
)
end
- rescue => e
+ rescue StandardError => e
warn "MCP failed: #{e.message}"
end
end
spec/elelem/mcp/oauth_spec.rb
@@ -15,9 +15,9 @@ RSpec.describe Elelem::MCP::OAuth do
context "with valid cached token" do
it "returns cached access_token" do
allow(storage).to receive(:load).with(resource_url).and_return({
- access_token: "cached_token",
- expires_at: Time.now.to_i + 3600
- })
+ access_token: "cached_token",
+ expires_at: Time.now.to_i + 3600
+ })
expect(subject.token).to eq("cached_token")
end
@@ -34,14 +34,14 @@ RSpec.describe Elelem::MCP::OAuth do
it "refreshes using refresh_token" do
allow(storage).to receive(:load).with(resource_url).and_return({
- access_token: "old_token",
- refresh_token: "refresh_abc",
- expires_at: Time.now.to_i - 100
- })
+ access_token: "old_token",
+ refresh_token: "refresh_abc",
+ expires_at: Time.now.to_i - 100
+ })
allow(storage).to receive(:load_client).with(resource_url).and_return({
- client_id: "elelem-123"
- })
+ client_id: "elelem-123"
+ })
resource_response = double(body: { "authorization_servers" => ["https://auth.example.com"] }.to_json)
auth_response = double(body: auth_metadata.to_json)
spec/elelem/mcp/token_storage_spec.rb
@@ -7,7 +7,11 @@ RSpec.describe Elelem::MCP::TokenStorage do
let(:token_dir) { File.expand_path("~/.config/elelem/tokens") }
after do
- Dir.glob(File.join(token_dir, "*.json")).each { |f| File.delete(f) rescue nil }
+ Dir.glob(File.join(token_dir, "*.json")).each do |f|
+ File.delete(f)
+ rescue StandardError
+ nil
+ end
end
describe "#save and #load" do