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🚀 用法
- 将插件添加到您的角色配置中:
{
"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功能添加到代理的上下文中:
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": ""
}
},
"puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
},
"google-maps": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-google-maps"],
"env": {
"GOOGLE_MAPS_API_KEY": ""
}
}
},
"maxRetries": 2
}
}
}🔒 安全考虑
请注意,MCP服务器可以执行任意代码,因此只能连接到您信任的服务器。
🔍 故障排除
如果您遇到MCP插件的问题:
- 检查您的MCP服务器是否已正确配置并正在运行
- 确保在ElizaOS环境中可以访问这些命令
- 查看日志中的连接错误
- 验证插件是否已正确加载到角色配置中
👥 贡献
感谢您考虑为我们的项目做出贡献!
如何做出贡献
- 分叉存储库。
- 创建新分支:
git checkout -b feature-branch-name. - 进行更改。
- 使用常规提交来提交您的更改。
- 推到你的叉子上,提交一个拉取请求。
提交指导方针
我们使用 常规承诺 对于我们的提交消息:
test: 💍 添加缺失的测试feat: 🎸 新功能fix: 🐛 缺陷修复chore: 🤖 构建过程或辅助工具更改docs: ✏️ 仅文档更改refactor: 💡 既不修复错误也不添加功能的代码更改style: 💄 标记、空格、格式、缺少分号。..
📄 许可证
此插件在与ElizaOS相同的许可证下发布。

