Directus MCP Hello World扩展
添加自定义项的演示扩展 hello_world MCP工具到Directus。
先决条件
此扩展需要 directus-extension-mcp-customization 首先安装并启用扩展。
此扩展功能是什么
此扩展演示了如何通过以下方式向Directus添加自定义MCP工具:
- 添加a
hello_world工具到MCP工具列表 - 在调用时处理工具的执行
这 hello_world 工具接受 name 参数,并返回个性化问候。
安装
通过npm安装:
npm install directus-extension-mcp-hello-world或手动:
npm install
npm run build然后重新启动Directus实例。
用法
安装完毕并重新启动Directus实例后 hello_world 工具将通过MCP端点提供 /mcp.
MCP请求示例:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "hello_world",
"arguments": {
"name": "Alice"
}
}
}答复:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "Hello, Alice! Welcome to the Directus MCP custom tools demo."
}
]
}
}运作原理
此扩展使用Directus的隔离事件发射器系统连接到MCP自定义扩展:
mcp.tools.list过滤器:将工具定义添加到可用工具中hello_world.mcp.tools.call过滤器:处理调用工具时的实际执行
重要提示:隔离事件发射器
出于安全原因,MCP功能使用与核心Directus事件系统分离的隔离事件发射器。这意味着你 必须 使用 emitter.onFilter() 直接而不是 filter() 回拨:
import { defineHook } from "@directus/extensions-sdk";
export default defineHook((_, { emitter }) => {
// ✅ Correct: Use emitter.onFilter()
emitter.onFilter("mcp.tools.list", (tools) => {
return [...tools, myTool];
});
// ❌ Wrong: Don't use filter() callback
// filter("mcp.tools.list", (tools) => { ... });
});请参阅 directus-extension-mcp-customization 有关集成如何工作的更多详细信息,请参阅README。
相关扩展
directus-extension-mcp-customization-自定义MCP工具的核心框架(必需)directus-extension-mcp-comments-向Directus MCP添加用于管理评论的工具directus-extension-mcp-presets-为Directus MCP添加管理预设/书签的工具
