文本生成webui的MCP支持扩展
此扩展允许文本生成webui模型通过模型上下文协议(MCP)使用外部工具。
安装
- 安装MCP Python SDK:
pip install mcp- 将此扩展复制到文本生成webui扩展目录:
cp -r mcp_support /path/to/text-generation-webui/extensions/- 在中配置MCP服务器
servers.json
- 启动文本生成webui时启用扩展:
python server.py --extensions mcp_support配置
编辑 extensions/mcp_support/servers.json 要配置MCP服务器,请执行以下操作:
{
"servers": {
"website-fetcher": {
"command": "python",
"args": ["extensions/mcp_support/example_server.py", "--transport", "stdio"],
"env": {},
"enabled": true
}
}
}配置选项
command:要运行的可执行文件(例如,“python”、“node”、“uv”)args:服务器的命令行参数env:要传递给服务器的环境变量(可选)enabled:是否在扩展加载时启动此服务器
测试示例服务器
该扩展包括一个获取网站的简单示例服务器。
- 在中启用它
servers.json:
{
"servers": {
"website-fetcher": {
"command": "python",
"args": ["extensions/mcp_support/example_server.py", "--transport", "stdio"],
"env": {},
"enabled": true
}
}
}- 在启用扩展的情况下启动文本生成webui
- 检查日志以了解:
[MCP] Starting server 'website-fetcher'...
[MCP] Server 'website-fetcher' started successfully with 1 tools: fetch- 使用具有工具调用功能的模型,并要求它获取网站:
Please fetch the content from https://example.com创建自己的MCP服务器
要创建自己的MCP服务器,请使用示例服务器作为模板:
from typing import Any
import anyio
import mcp.types as types
from mcp.server.lowlevel import Server
from mcp.server.stdio import stdio_server
app = Server("my-server-name")
@app.call_tool()
async def my_tool(name: str, arguments: dict[str, Any]) -> list[types.ContentBlock]:
if name == "my_tool_name":
result = do_something(arguments)
return [types.TextContent(type="text", text=result)]
raise ValueError(f"Unknown tool: {name}")
@app.list_tools()
async def list_tools() -> list[types.Tool]:
return [
types.Tool(
name="my_tool_name",
description="Description of what the tool does",
inputSchema={
"type": "object",
"required": ["param1"],
"properties": {
"param1": {
"type": "string",
"description": "Parameter description",
}
},
},
)
]
async def main():
async with stdio_server() as streams:
await app.run(streams[0], streams[1], app.create_initialization_options())
anyio.run(main)建筑
┌─────────────────────────┐
│ text-generation-webui │
│ + mcp_support extension│
└────────┬────────────────┘
│ stdio
│ (stdin/stdout)
┌────────▼────────────────┐
│ MCP Server Process │
│ (Python/Node/etc) │
│ │
│ - list_tools() │
│ - call_tool() │
└─────────────────────────┘调试
在扩展UI中启用调试日志记录或在代码中设置它:
params["debug_logging"] = True调试日志将显示:
- 服务器启动和连接状态
- 工具发现和注册
- 工具调用检测和执行
- 原始MCP协议消息
故障排除
“未安装MCP包”
运行: pip install mcp
“启动服务器失败”
- 检查服务器命令和参数是否正确
- 验证服务器脚本是否存在以及是否可执行
- 检查日志中的特定错误消息
- 启用调试日志记录以获取更多详细信息
“找不到工具”
- 验证服务器是否已成功启动
- 检查工具是否已注册(在日志中查找“已注册工具”)
- 确保服务器的
list_tools()正在返回预期的工具
参考文献
许可证
MIT。
