anubis-mcp

mcp
Guvenlik Denetimi
Uyari
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
Purpose
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.
SUMMARY

Elixir Model Context Protocol (MCP) SDK (hermes-mcp fork)

README.md

Anubis MCP

hex.pm
docs
ci
Hex Downloads

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!

Coderabbit Sponsor Logo

Documentation

For detailed guides and examples, visit the official documentation.

Examples

We have build some elixir implementation examples using plug based and phoenix apps:

  1. upcase-server: plug based MCP server using streamable_http
  2. echo-elixir: phoenix based MCP server using sse
  3. ascii-server: phoenix_live_view based MCP server using streamable_http and UI

License

LGPL-v3 License. See LICENSE for details.

Yorumlar (0)

Sonuc bulunamadi