Commit f8b553a
Changed files (4)
.elelem/plugins/gitlab.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+Elelem::Plugins.register(:gitlab) do |toolbox|
+ toolbox.after("gitlab_search") do |_args, result|
+ $stdout.puts result.inspect
+ end
+end
.elelem/mcp.json
@@ -0,0 +1,14 @@
+{
+ "mcpServers": {
+ "gitlab": {
+ "type": "http",
+ "url": "https://gitlab.com/api/v4/mcp"
+ },
+ "playwright": {
+ "command": "npx",
+ "args": [
+ "@playwright/mcp@latest"
+ ]
+ }
+ }
+}
lib/elelem/mcp.rb
@@ -5,8 +5,13 @@ require_relative "mcp/oauth"
module Elelem
class MCP
- def initialize(config_path = ".mcp.json")
- @config = File.exist?(config_path) ? JSON.parse(IO.read(config_path)) : {}
+ CONFIG_PATHS = [
+ "~/.elelem/mcp.json",
+ ".elelem/mcp.json"
+ ].freeze
+
+ def initialize(configurations = CONFIG_PATHS)
+ @config = load_config(configurations)
@servers = {}
end
@@ -32,6 +37,17 @@ module Elelem
private
+ def load_config(configurations)
+ configurations.each_with_object({}) do |path, merged|
+ file = File.expand_path(path)
+ next unless File.exist?(file)
+
+ config = JSON.parse(IO.read(file))
+ servers = config.fetch("mcpServers", {})
+ merged["mcpServers"] = (merged["mcpServers"] || {}).merge(servers)
+ end
+ end
+
def server(name)
@servers[name] ||= build_server(@config.dig("mcpServers", name))
end
.gitignore
@@ -13,7 +13,6 @@
*.log
target/
*.gem
-.mcp.json
# rspec failure tracking
.rspec_status