此插件将模型上下文协议(MCP)与ElizaOS集成,允许代理连接到多个MCP服务器并使用其资源、提示和工具。
MCP(模型上下文协议) 是一个开放协议,它使大型语言模型应用程序能够无缝地与外部数据源和工具进行集成。它提供了一种标准化的方法来连接大型语言模型与其所需的上下文。
此插件允许您的ElizaOS代理同时访问多个MCP服务器,每个服务器提供不同的功能:
在您的ElizaOS项目中安装插件:
npm install @fleek-platform/eliza-plugin-mcp
pnpm install @fleek-platform/eliza-plugin-mcp
yarn add @ffleek-platform/eliza-plugin-mcp
bun add @fleek-platform/eliza-plugin-mcp
{
"name": "您的角色",
"plugins": ["@fleek-platform/eliza-plugin-mcp"],
"settings": {
"mcp": {
"servers": {
"github": {
"type": "stdio",
"name": "代码服务器",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
}
}
}
}
}
MCP支持两种类型的服务器:"stdio" 和 "sse"。每种类型都有自己的配置选项。
| 选项 | 类型 | 描述 |
|---|---|---|
type | 字符串 | MCP服务器的类型:"stdio" 或 "sse" |
name | 字符串 | 服务器的显示名称 |
timeout | 数字 | 工具调用的超时时间(默认:60秒) |
disabled | 布尔值 | 是否禁用该服务器 |
| 选项 | 类型 | 描述 |
|---|---|---|
command | 字符串 | 运行MCP服务器的命令 |
args | 字符串数组 | 服务器的命令行参数 |
env | 对象 | 要传递给服务器的环境变量 |
cwd | 字符串 | 可选 运行服务器的工作目录 |
| 选项 | 类型 | 描述 |
|---|---|---|
url | 字符串 | SSE端点的URL |
一旦配置完成,插件会自动将MCP服务器的功能暴露给您的代理:
插件包括三个提供者,它们将MCP功能添加到代理的上下文中:
MCP_SERVERS:列出可用的服务器及其工具、资源和提示以下图表说明了MCP插件的工具选择和执行流程:
graph TD
%% 开始点 - 用户请求
start[用户请求] --> action[CALL_TOOL 操作]
%% MCP 服务器验证
action --> check{MCP 服务器可用?}
check -->|否| fail[返回无可用工具]
%% 工具选择流程
check -->|是| state[获取MCP提供者数据]
state --> prompt[创建工具选择提示]
%% 第一次模型使用 - 工具选择
prompt --> model1[使用语言模型进行工具选择]
model1 --> parse[解析选择]
parse --> retry{有效选择?}
%% 第二次模型使用 - 重试选择
retry -->|否| feedback[生成反馈]
feedback --> model2[使用语言模型进行重试]
model2 --> parse
%% 工具选择结果
retry -->|是| toolAvailable{工具可用?}
toolAvailable -->|否| fallback[备用响应]
%% 工具执行流程
toolAvailable -->|是| callTool[调用MCP工具]
callTool --> processResult[处理工具结果]
%% 创建记忆
processResult --> createMemory[创建记忆记录]
createMemory --> reasoningPrompt[创建推理提示]
%% 第三次模型使用 - 响应生成
reasoningPrompt --> model3[使用语言模型进行响应]
model3 --> respondToUser[发送响应给用户]
%% 样式
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服务器的完整示例配置:
{
"name": "开发者助手",
"plugins": ["@elizaos/plugin-mcp", "其他插件"],
"settings": {
"mcp": {
"servers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<您的令牌>"
}
},
"puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
},
"google-maps": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-google-maps"],
"env": {
"GOOGLE_MAPS_API_KEY": "<您的API密钥>"
}
}
},
"maxRetries": 2
}
}
}
请注意,MCP服务器可以执行任意代码,因此仅连接您信任的服务器。
如果您遇到MCP插件的问题:
感谢您考虑为我们的项目做出贡献!
git checkout -b feature-branch-name。我们使用常规提交作为我们的提交信息:
test: 💍 添加缺失的测试feat: 🎸 新功能fix: 🐛 修复错误chore: 🤖 构建过程或辅助工具更改docs: ✏️ 文档更改refactor: 💡 不是修复错误也不是添加功能的代码更改style: 💄 标记、空格、格式化、缺少分号等...此插件发布在与ElizaOS相同的许可证下。