Packages

Standardized skill bundling and MCP server for Elixir hex packages

Current section

Files

Jump to
elixir_mcp lib mix tasks claude_skills.server.ex
Raw

lib/mix/tasks/claude_skills.server.ex

defmodule Mix.Tasks.ClaudeSkills.Server do
@shortdoc "Starts the MCP server for skill discovery and installation"
@moduledoc """
Starts an MCP server that exposes skills from hex dependencies to any MCP client.
$ mix claude_skills.server # stdio transport (default)
$ mix claude_skills.server --http 4242 # HTTP transport on port 4242
## Claude Code integration
Add to your Claude Code MCP config:
{
"mcpServers": {
"elixir-skills": {
"command": "mix",
"args": ["claude_skills.server"],
"cwd": "/path/to/your/project"
}
}
}
"""
use Mix.Task
@impl Mix.Task
def run(args) do
Mix.Task.run("app.start")
{opts, _, _} = OptionParser.parse(args, strict: [http: :integer])
transport =
case opts[:http] do
nil -> :stdio
port -> {:streamable_http, port: port}
end
{:ok, _pid} = ElixirMcp.Server.start(transport)
case transport do
:stdio ->
Process.sleep(:infinity)
{:streamable_http, port: port} ->
Mix.shell().info("MCP server running on http://localhost:#{port}")
Process.sleep(:infinity)
end
end
end