anubis-mcp
Health Gecti
- License — License: NOASSERTION
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 111 GitHub stars
Code Uyari
- fs module — File system access in priv/dev/ascii/assets/tailwind.config.js
Permissions Gecti
- Permissions — No dangerous permissions requested
This tool is a comprehensive Software Development Kit (SDK) for the Model Context Protocol (MCP). It allows developers to build robust MCP clients and servers using Elixir.
Security Assessment
The overall risk is rated as Low. As an SDK, its primary purpose involves facilitating network requests, meaning it will naturally handle and route data between AI models and external tools. The codebase does not request inherently dangerous permissions, nor does it appear to execute hidden shell commands or contain hardcoded secrets. The scanner flagged a file system access warning, but upon investigation, this is safely isolated within a Tailwind CSS configuration file used for development assets, posing no threat to production environments.
Quality Assessment
The project demonstrates strong health and maintenance metrics. It received a push very recently (zero days ago) and has garnered 111 GitHub stars, indicating a solid and growing level of community trust. The only notable drawback is that the repository license is marked as "NOASSERTION." While this suggests a minor administrative oversight by the creator rather than a malicious intent, it may technically restrict usage for enterprise applications with strict legal requirements. The inclusion of automated CI and published Hex documentation further points to a high-quality, professional package.
Verdict
Safe to use, though enterprise users should be aware of the unasserted software license.
Elixir Model Context Protocol (MCP) SDK (hermes-mcp fork)
Anubis MCP
A high-performance Model Context Protocol (MCP) implementation in Elixir.
Overview
Anubis MCP is a comprehensive Elixir SDK for the Model Context Protocol, providing complete client and server implementations with Elixir's exceptional concurrency model and fault tolerance.
Installation
def deps do
[
{:anubis_mcp, "~> 1.0.0"} # x-release-please-version
]
end
Quick Start
Server
# Define a tool as a Component (compile-time registration)
defmodule MyApp.Echo do
@moduledoc "Echoes everything the user says to the LLM"
use Anubis.Server.Component, type: :tool
alias Anubis.Server.Response
schema do
field :text, :string, required: true, max_length: 150, description: "the text to be echoed"
end
@impl true
def execute(%{text: text}, frame) do
{:reply, Response.text(Response.tool(), text), frame}
end
end
defmodule MyApp.MCPServer do
use Anubis.Server,
name: "My Server",
version: "1.0.0",
capabilities: [:tools]
# Static component registration — dispatches to MyApp.Echo.execute/2
component MyApp.Echo
@impl true
def init(_client_info, frame) do
# You can also register tools dynamically at runtime via the Frame:
# frame = register_tool(frame, "dynamic_tool", description: "...", input_schema: %{...})
{:ok, frame}
end
end
# Add to your application supervisor
children = [
{MyApp.MCPServer, transport: :streamable_http}
]
# Add to your Phoenix router (if using HTTP)
forward "/mcp", Anubis.Server.Transport.StreamableHTTP.Plug, server: MyApp.MCPServer
# Or if using only Plug router
forward "/mcp", to: Anubis.Server.Transport.StreamableHTTP.Plug, init_opts: [server: MyApp.MCPServer]
Now you can achieve your MCP server on http://localhost:<port>/mcp
Client
# Add to your application supervisor
children = [
{Anubis.Client,
name: MyApp.MCPClient,
transport: {:streamable_http, base_url: "http://localhost:4000"},
client_info: %{"name" => "MyApp", "version" => "1.0.0"},
protocol_version: "2025-06-18"}
]
# Use the client
{:ok, result} = Anubis.Client.call_tool(MyApp.MCPClient, "echo", %{text: "this will be echoed!"})
Why Anubis?
Named after Anubis, the Egyptian god of the underworld and guide to the afterlife, this library helps navigate the boundaries between Large Language Models and external tools. Much like how Anubis guided souls through transitions, this SDK guides data through the liminal space between AI and external systems.
The name also carries personal significance - after my journey through the corporate underworld ended unexpectedly, this project was reborn from the ashes of its predecessor, ready to guide developers through their own MCP adventures. Sometimes you need a deity of transitions to help you... transition. 🏳️⚧️
Sponsors
Thanks to our amazing sponsors for supporting this project!
Documentation
For detailed guides and examples, visit the official documentation.
Examples
We have build some elixir implementation examples using plug based and phoenix apps:
- upcase-server:
plugbased MCP server using streamable_http - echo-elixir:
phoenixbased MCP server using sse - ascii-server:
phoenix_live_viewbased MCP server using streamable_http and UI
License
LGPL-v3 License. See LICENSE for details.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi