Token导航 LogoToken导航TokenDH.com
Webman MCP logo
AI代理未说明官方来源来源级核验

Webman MCP

MCP Server

这是一个Webman框架与官方MCP PHP SDK深度集成的插件,可快速创建MCP服务器并提供多种开发工具。

工具数

20

提示词数

0

GitHub Stars

9

资源数

0
PHP服务器工具AI开发CursorCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

luoyue712

提供方

luoyue712

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

webman-mcp

这是一个Webman框架与官方MCP PHP SDK深度集成的插件,并在SDK基础上进行了扩展,可快速创建MCP服务器。

此插件依赖于官方的MCP PHP SDK,以下文档仅展示插件与sdk的差异。

特性

  • 一键启动,安装后即可启动,同时支持配置复杂的功能。
  • 一个项目支持多个MCP服务器,并按服务器名称隔离配置。
  • 与Webman框架深度集成,HTTP支持路由模式和自定义进程模式。
  • 自动注册MCP服务到主流IDE(VSCode、Cursor、通义灵码等)。
  • 支持 STDIO、Streamable HTTP 高性能传输。
  • 支持协程与非协程,从而提高了在sse场景下高性能传输。
  • 内置常用20+个MCP开发工具,提升开发效率。

安装

composer require luoyue/webman-mcp

环境要求

  • PHP >= 8.1
  • webman^2.1
  • webman/cache^2.1

可选依赖

  • webman/redis
  • webman/event(用于MCP生命周期钩子)
  • Swoole/Swow/Fiber协程(提升SSE性能)
  • monolog/monolog(用于记录服务器日志)

注解

注解名称描述
McpTool标记一个PHP方法为MCP工具,使其可以被AI调用执行特定功能
McpPrompt标记一个PHP方法为MCP提示生成器,用于生成对话提示消息
McpResource标记一个PHP方法为MCP资源处理器,用于处理特定资源URI的请求
McpResourceTemplate标记一个PHP方法为MCP资源模板,用于定义资源URI模板
CompletionProvider为参数提供自动完成功能,指定可能的值或提供者类
Schema定义方法或参数的JSON Schema,用于参数验证和类型检查

启动方式

# 启动 MCP STDIO 服务器, mcp为服务器名称,配置文件中定义
php webman mcp:server mcp

# 启动 MCP HTTP 服务器(分为两种,一种是嵌入到路由中,另一种是自定义进程)
php webman start

快速开始

1. 使用命令行工具创建模板代码(也可直接使用插件自带的配置)

# 创建文件后可根据模板代码实现逻辑
php webman mcp:make template

实际上并不太需要此命令创建代码,因为使用方法已足够简单,只需在方法中声明注解即可。

2. 配置客户端连接配置

打开app.php,修改auto_register_client配置为您常用的客户端。

 true,
    // 自动注册MCP服务到ide中
    'auto_register_client' => McpClientRegisterEnum::CURSOR_IDE,
];

什么?没有您的客户端?我们非常欢迎您提交相关PR。

3. 测试您的服务器

# 使用 MCP Inspector 测试(需要node与npx)
php webman mcp:inspector mcp

内置工具

命令行工具

工具参数描述
mcp:serverservice启动MCP服务器
mcp:listMCP服务列表
mcp:maketype生成MCP配置或模板代码
mcp:inspectorservice启动MCP Inspector调试工具

示例:

## 查看定义的mcp服务列表以及配置信息
php webman mcp:list

MCP开发工具

类别名称描述
toolsequential_thinking让ai进入深度思考
toolsystem_info获取webman框架信息,php版本信息,系统信息,是否使用协程
toolget_config获取config配置信息
toolget_env获取env环境变量信息
toollist_process获取进程列表
toollist_routes获取路由列表
toolmatch_routes匹配url对应的路由信息
toollist_dependence获取项目依赖列表
toollist_extensions获取当前环境已加载的php扩展
toolget_extension_funcs获取扩展已加载的函数
toollist_events获取事件列表
tooleval_code执行php代码
toolbuild_phar将项目代码打包为phar文件
toolbuild_bin将项目代码打包为linux二进制可执行文件
tooldatabase_connections获取数据库连接配置信息列表
tooldatabase_execute_sql执行原始sql脚本
toolredis_connections获取数据库redis配置信息列表
toolredis_execute_raw执行原始Redis命令
toolredis_execute_lua执行Redis Lua脚本
toolredis_execute_lua_sha使用sha1执行Redis Lua脚本

日志记录

发送客户端日志

请参考官方文档

记录服务器错误日志

根据2025-11-25规范,STDIO传输允许将任何日志记录到stderr中且客户端可以捕获stderr并视为非致命错误,stdout则必须用于传输json-rpc消息。

日志模式STDIO传输Streamable HTTP传输
file
stdout
stderr

从以上表格中看出:

  • 在开发环境中使用stderr很方便的将日在控制台中且不影响运行。
  • 在生产环境中使用file记录日志可以将日志保存在磁盘中,方便后续维护。

配置monolog(必须是插件目录下的log.php):

 [
        'handlers' => [
            [
                'class' => Monolog\Handler\RotatingFileHandler::class,
                'constructor' => [
                    runtime_path() . '/logs/mcp.log',
                    7, //$maxFiles
                    Monolog\Logger::NOTICE,
                ],
                'formatter' => [
                    'class' => Monolog\Formatter\LineFormatter::class,
                    'constructor' => [null, 'Y-m-d H:i:s', true],
                ],
            ]
        ]
    ],
    // stderr日志记录
    'mcp_error_stderr' => [
        'handlers' => [
            [
                'class' => Monolog\Handler\StreamHandler::class,
                'constructor' => [
                    STDERR, // stderr流
                    Monolog\Logger::NOTICE, // 设置NOTICE可减少不必要的调试信息
                ],
                'formatter' => [
                    'class' => Monolog\Formatter\LineFormatter::class,
                    'constructor' => [null, 'Y-m-d H:i:s', true],
                ],
            ]
        ]
    ]
];

然后我们可以在mcp.php中配置以下逻辑:

return [
    'mcp' => [
        'logger' => config('app.debug', true) ? 'mcp_error_stderr' : 'mcp_file_log'
  ]
]

与webman的兼容问题

McpTool注解如何将Controller结合使用

由于webman控制器和mcp消息处理机制差异,无法完美兼容,需要稍加改动即可适配。具体代码如下:

 'ok',
            'params' => request()->all(),
        ];
        // controller将自动忽略此行代码
        $context?->getClientLogger()->info('example_tool', $result);
        return McpHelper::is_mcp_server_request() ? $result : response($result);
    }
}

STDIO传输的限制

  • 在linux/macos系统中此功能可能不受影响,在windows系统中,由于平台限制,无法将其设置为非阻塞。
  • 根据上面的问题,在webman中无法使用依赖workerman环境中的函数:定时器、定时任务、协程、http-client等。

相关讨论:Discussions #3

参考文档

学习资料:

外部资源:

许可证

本项目对于新贡献采用 Apache Apache 2.0 许可证,而现有代码采用 MIT 许可证 - 详情请见 LICENSE 文件。

目录标签

目录标签

PHP服务器工具AI开发Cursor本地部署Webman框架MCP集成PHP开发

支持客户端

Cursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

20

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP