Token导航 LogoToken导航TokenDH.com
Elixir SDK logo
运维云端未说明官方级别未说明来源级核验

Elixir SDK

MCP Server

用于构建模型上下文协议(MCP)服务器和客户端的Elixir SDK,支持工具、资源和提示的标准化交互。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
类型安全协议实现ClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Pranavj17

提供方

Pranavj17

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

用于模型上下文协议(MCP)的Elixir SDK

![Hex.pm](https://hex.pm/packages/mcp_sdk) ![Documentation](https://hexdocs.pm/mcp_sdk)

用于构建的官方Elixir SDK 模型上下文协议 (MCP)服务器和客户端。

什么是MCP?

模型上下文协议(MCP)是一个开放协议,它规范了应用程序如何向大型语言模型(LLM)提供上下文。它能够:

  • 工具:LLM可以执行的函数
  • 资源:LLM可以访问的数据
  • 提示:LLM交互的可重用模板

特性

  • 完全遵守协议:实施MCP规范版本 2024-11-05
  • JSON-RPC 2.0:完成JSON-RPC消息处理
  • 类型安全:所有功能的模式验证
  • 多个传输:stdio(本地)和HTTP/SSE(远程)
  • 成语灵丹妙药:基于GenServer,支持监督
  • 轻松注册:用于工具、资源和提示的简单API

安装

添加 mcp_sdk 到中的依赖项列表 mix.exs:

def deps do
  [
    {:mcp_sdk, "~> 0.1.0"}
  ]
end

快速开始

1.定义MCP服务器

defmodule MyApp.MCPServer do
  use MCP.Server

  def init(_opts) do
    {:ok, %{}}
  end

  def handle_init(state) do
    server = self()

    # Register a tool
    MCP.Server.register_tool(
      server,
      "add",
      "Adds two numbers",
      %{a: :number, b: :number},
      fn %{a: a, b: b} -> a + b end
    )

    # Register a resource
    MCP.Server.register_resource(
      server,
      "config://version",
      "Version",
      "Application version",
      "text/plain",
      fn _params -> "1.0.0" end
    )

    # Register a prompt
    MCP.Server.register_prompt(
      server,
      "explain",
      "Generates an explanation prompt",
      [%{name: "topic", description: "Topic to explain", required: true}],
      fn %{topic: topic} -> "Explain #{topic} in simple terms" end
    )

    {:ok, state}
  end
end

2.启动服务器

# Start the MCP server
{:ok, server_pid} = MyApp.MCPServer.start_link(name: "my-server", version: "1.0.0")

# Start stdio transport (for local/desktop use)
{:ok, _transport_pid} = MCP.Transport.Stdio.start_link(server: server_pid)

3.与克劳德桌面一起使用

添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "my-server": {
      "command": "/path/to/your/elixir/app"
    }
  }
}

核心概念

工具

工具是AI可以执行的功能:

MCP.Server.register_tool(
  server,
  "multiply",
  "Multiplies two numbers",
  %{a: :number, b: :number},
  fn %{a: a, b: b} ->
    %{
      result: a * b,
      message: "#{a} × #{b} = #{a * b}"
    }
  end
)

资源

资源通过基于URI的路由提供数据访问:

# Static resource
MCP.Server.register_resource(
  server,
  "config://database",
  "Database Config",
  "Database configuration",
  "application/json",
  fn _params ->
    Jason.encode!(%{host: "localhost", port: 5432})
  end
)

# Dynamic resource with parameters
MCP.Server.register_resource(
  server,
  "user://{user_id}/profile",
  "User Profile",
  "User profile data",
  "application/json",
  fn %{user_id: user_id} ->
    Jason.encode!(%{id: user_id, name: "User #{user_id}"})
  end
)

提示

提示是LLM交互的可重用模板:

MCP.Server.register_prompt(
  server,
  "code_review",
  "Generates a code review prompt",
  [
    %{name: "language", description: "Programming language", required: true},
    %{name: "code", description: "Code to review", required: true}
  ],
  fn %{language: language, code: code} ->
    """
    Please review this #{language} code:

#{code}


    Focus on:
    - Code quality
    - Best practices
    - Potential bugs
    """
  end
)

运输

标准运输(当地)

对于桌面应用程序和本地集成:

MCP.Transport.Stdio.start_link(server: server_pid)

HTTP传输(远程)

对于使用Phoenix或Plug的基于web的部署:

defmodule MyAppWeb.MCPController do
  use MyAppWeb, :controller

  def mcp_endpoint(conn, _params) do
    MCP.Transport.HTTP.handle_request(conn, MyApp.MCPServer)
  end
end

架构定义

SDK提供了一个简单的模式DSL:

# Simple type mapping
%{
  name: :string,
  age: :integer,
  email: :string
}

# Advanced schemas with constraints
%{
  name: MCP.Schema.string(description: "User name", min_length: 1, max_length: 100),
  age: MCP.Schema.integer(description: "User age", minimum: 0, maximum: 150),
  tags: MCP.Schema.array(items: MCP.Schema.string())
}

例子

完整服务器示例

examples/calculator_server.ex 一个完整的工作示例。

与Phoenix整合

示例/phoenix集成.ex 凤凰整合。

建筑

lib/mcp/
├── server.ex              # Main server behavior
├── schema.ex              # Schema definition and validation
├── protocol/
│   └── message.ex         # JSON-RPC message handling
├── capabilities/
│   ├── tool.ex            # Tool capability
│   ├── resource.ex        # Resource capability
│   └── prompt.ex          # Prompt capability
└── transport/
    ├── stdio.ex           # Stdio transport
    └── http.ex            # HTTP/SSE transport

协议版本

此SDK实现了MCP协议版本: 2024-11-05

与其他SDK的比较

功能Elixir SDKPython SDKTypeScript SDK
协议版本2024-11-052024年11月0520241年11月5日
工具
资源
提示
标准运输
HTTP传输
类型安全✅ 类型规格✅ Pydantic✅ 佐德
API风格注册装饰师注册

贡献

欢迎投稿!请随时提交拉取请求。

许可证

MIT许可证-请参阅 许可证 了解详情。

链接

致谢

根据以下内容构建 模型上下文协议规范 通过Anthropic。

目录标签

目录标签

类型安全协议实现ClaudeElixir本地部署LLM交互Elixir开发JSON-RPC

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP