MCP集成插件

该插件将模型上下文协议(MCP)与ElizaOS集成,使代理能够连接多个MCP服务器并利用其资源、提示和工具。

  • by fleek-platform
  • TypeScript
  • 本地部署
  • 48 星标
  • 更新于
在 GitHub 查看 fleek-platform/eliza-plugin-mcp

使用说明

ElizaOS的MCP插件

此插件将模型上下文协议(MCP)与ElizaOS集成在一起,允许代理连接到多个MCP服务器并使用其资源、提示和工具。

🔍 什么是MCP?

这 模型上下文协议 (MCP)是一种开放协议,可实现LLM应用程序与外部数据源和工具之间的无缝集成。它提供了一种标准化的方法,将LLM与它们所需的上下文连接起来。

此插件允许您的ElizaOS代理同时访问多个MCP服务器,每个服务器提供不同的功能:

  • 资源:供代理参考的上下文和数据
  • 鼓励:模板消息和工作流
  • 工具:代理要执行的函数

📦 安装

在ElizaOS项目中安装插件:

  • npm
npm install @fleek-platform/eliza-plugin-mcp
  • pnpm
pnpm install @fleek-platform/eliza-plugin-mcp
  • 纱线
yarn add @fleek-platform/eliza-plugin-mcp
  • 小圆面包
bun add @fleek-platform/eliza-plugin-mcp

🚀 用法

  1. 将插件添加到您的角色配置中:
{
  "name": "Your Character",
  "plugins": ["@fleek-platform/eliza-plugin-mcp"],
  "settings": {
    "mcp": {
      "servers": {
        "github": {
          "type": "stdio",
          "name": "Code Server",
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-github"]
        }
      }
    }
  }
}

⚙️ 配置选项

MCP支持两种类型的服务器:“stdio”和“sse”。每种类型都有自己的配置选项。

常用选项

选项 类型 描述
type string MCP服务器的类型:“stdio”或“sse”
name string 服务器的显示名称
timeout number 工具调用超时(秒)(默认值:60)
disabled boolean 服务器是否已禁用

stdio服务器选项

选项 类型 描述
command string 运行MCP服务器的命令
args string[] 服务器的命令行参数
env object 要传递给服务器的环境变量
cwd 字符串 可选的 运行服务器的工作目录

sse服务器选项

选项 类型 描述
url string SSE端点的URL

🛠️ 使用MCP功能

配置后,插件会自动向您的代理公开MCP服务器的功能:

上下文提供程序

该插件包括三个提供程序,它们将MCP功能添加到代理的上下文中:

  1. MCP_SERVERS:列出可用服务器及其工具、资源和提示

🔄 插件流

下图说明了MCP插件的工具选择和执行流程:

graph TD
    %% Starting point - User request
    start[User Request] --> action[CALL_TOOL Action]

    %% MCP Server Validation
    action --> check{MCP Servers Available?}
    check -->|No| fail[Return No Tools Available]
    
    %% Tool Selection Flow
    check -->|Yes| state[Get MCP Provider Data]
    state --> prompt[Create Tool Selection Prompt]
    
    %% First Model Use - Tool Selection
    prompt --> model1[Use Language Model for Tool Selection]
    model1 --> parse[Parse Selection]
    parse --> retry{Valid Selection?}
    
    %% Second Model Use - Retry Selection
    retry -->|No| feedback[Generate Feedback]
    feedback --> model2[Use Language Model for Retry]
    model2 --> parse
    
    %% Tool Selection Result
    retry -->|Yes| toolAvailable{Tool Available?}
    toolAvailable -->|No| fallback[Fallback Response]
    
    %% Tool Execution Flow
    toolAvailable -->|Yes| callTool[Call MCP Tool]
    callTool --> processResult[Process Tool Result]
    
    %% Memory Creation
    processResult --> createMemory[Create Memory Record]
    createMemory --> reasoningPrompt[Create Reasoning Prompt]
    
    %% Third Model Use - Response Generation
    reasoningPrompt --> model3[Use Language Model for Response]
    model3 --> respondToUser[Send Response to User]
    
    %% Styling
    classDef model fill:#f9f,stroke:#333,stroke-width:2px;
    classDef decision fill:#bbf,stroke:#333,stroke-width:2px;
    classDef output fill:#bfb,stroke:#333,stroke-width:2px;
    
    class model1,model2,model3 model;
    class check,retry,toolAvailable decision;
    class respondToUser,fallback output;

📋 示例:设置多个MCP服务器

以下是两种类型的多个MCP服务器的完整示例配置:

{
  "name": "Developer Assistant",
  "plugins": ["@elizaos/plugin-mcp", "other-plugins"],
  "settings": {
    "mcp": {
      "servers": {
        "github": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-github"],
          "env": {
            "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
          }
        },
        "puppeteer": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-puppeteer"]
        },
        "google-maps": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-google-maps"],
          "env": {
            "GOOGLE_MAPS_API_KEY": "<YOUR_API_KEY>"
          }
        }
      },
      "maxRetries": 2
    }
  }
}

🔒 安全考虑

请注意,MCP服务器可以执行任意代码,因此只能连接到您信任的服务器。

🔍 故障排除

如果您遇到MCP插件的问题:

  1. 检查您的MCP服务器是否已正确配置并正在运行
  2. 确保在ElizaOS环境中可以访问这些命令
  3. 查看日志中的连接错误
  4. 验证插件是否已正确加载到角色配置中

👥 贡献

感谢您考虑为我们的项目做出贡献!

如何做出贡献

  1. 分叉存储库。
  2. 创建新分支: git checkout -b feature-branch-name.
  3. 进行更改。
  4. 使用常规提交来提交您的更改。
  5. 推到你的叉子上,提交一个拉取请求。

提交指导方针

我们使用 常规承诺 对于我们的提交消息:

  • test: 💍 添加缺失的测试
  • feat: 🎸 新功能
  • fix: 🐛 缺陷修复
  • chore: 🤖 构建过程或辅助工具更改
  • docs: ✏️ 仅文档更改
  • refactor: 💡 既不修复错误也不添加功能的代码更改
  • style: 💄 标记、空格、格式、缺少分号。..

📄 许可证

此插件在与ElizaOS相同的许可证下发布。