Webman MCP (协议 2026-07-28 )
v0.1.4
版本
2026-07-30
版本更新时间
19
安装
3
star
Webman MCP
适用于 Webman 和 PHP 8.2+ 的无状态 MCP Server SDK。
- MCP 协议:
2026-07-28 - 支持方法:
server/discover、tools/list、tools/call - 传输方式:无状态 HTTP POST
- 认证与授权:默认拒绝访问
协议详情请参阅官方 MCP 2026-07-28 发布说明。
安装
在 Webman 2.1+ 项目中执行:
composer require tinywan/webman-mcp
安装时会自动将配置发布到 config/plugin/tinywan/webman-mcp。
快速开始
下面创建一个 Calculator MCP Server,并提供计算两数之和的 calculate 工具。
1. 生成文件
php webman make:mcp-server Calculator
php webman make:mcp-tool Calculator
生成以下文件:
app/mcp/CalculatorServer.php
app/mcp/CalculatorTool.php
2. 实现 Tool
将 app/mcp/CalculatorTool.php 修改为:
<?php
declare(strict_types=1);
namespace app\mcp;
use Tinywan\Mcp\Contracts\ToolInterface;
use Tinywan\Mcp\Runtime\ExecutionContext;
use Tinywan\Mcp\Tool\Content\TextContent;
use Tinywan\Mcp\Tool\ToolCall;
use Tinywan\Mcp\Tool\ToolDefinition;
use Tinywan\Mcp\Tool\ToolResult;
final class CalculatorTool implements ToolInterface
{
public function definition(): ToolDefinition
{
return new ToolDefinition(
'calculate',
'计算两个数字之和。',
[
'type' => 'object',
'properties' => [
'left' => ['type' => 'number'],
'right' => ['type' => 'number'],
],
'required' => ['left', 'right'],
'additionalProperties' => false,
],
[
'type' => 'object',
'properties' => ['value' => ['type' => 'number']],
'required' => ['value'],
'additionalProperties' => false,
],
);
}
public function call(ToolCall $call, ExecutionContext $context): ToolResult
{
$value = (float) $call->arguments['left'] + (float) $call->arguments['right'];
return ToolResult::success(
[new TextContent((string) $value)],
['value' => $value],
);
}
}
SDK 会根据 JSON Schema 校验输入参数和结构化输出。
3. 注册 Tool
将 app/mcp/CalculatorServer.php 修改为:
<?php
declare(strict_types=1);
namespace app\mcp;
use Tinywan\Mcp\Registry\RegisteredTool;
use Tinywan\Mcp\Registry\ServerDefinition;
use Tinywan\Mcp\Registry\ServerIdentity;
use Tinywan\Mcp\Security\AllowAllAuthorizer;
use Tinywan\Mcp\Security\AllowAnonymousAuthenticator;
final class CalculatorServer
{
public static function definition(): ServerDefinition
{
$tool = new CalculatorTool();
return new ServerDefinition(
'calculator',
'/mcp/calculator',
new ServerIdentity('Calculator', '1.0.0'),
[new RegisteredTool($tool->definition(), CalculatorTool::class)],
new AllowAnonymousAuthenticator(),
new AllowAllAuthorizer(),
);
}
}
然后修改 config/plugin/tinywan/webman-mcp/servers.php:
<?php
declare(strict_types=1);
use app\mcp\CalculatorServer;
return [
'servers' => [CalculatorServer::definition()],
];
上面的本地示例显式允许匿名访问。生产环境应实现自己的 AuthenticatorInterface 和
AuthorizerInterface,不要直接允许匿名访问。
4. 检查并启动
php webman mcp:inspect
php webman mcp:list
php start.php start
调用 Tool,端口请根据实际环境调整:
curl -i http://127.0.0.1:8787/mcp/calculator \
-X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2026-07-28' \
-H 'Mcp-Method: tools/call' \
-H 'Mcp-Name: calculate' \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"tools/call",
"params":{
"_meta":{
"io.modelcontextprotocol/protocolVersion":"2026-07-28",
"io.modelcontextprotocol/clientCapabilities":{}
},
"name":"calculate",
"arguments":{"left":6,"right":7}
}
}'
响应中的 structuredContent.value 应为 13。
命令
请在 Webman 项目根目录执行:
| 命令 | 说明 |
|---|---|
php webman make:mcp-server <name> |
生成 Server 文件 |
php webman make:mcp-tool <name> |
生成 Tool 文件 |
php webman mcp:list |
列出已配置的 Server 和 Tool |
php webman mcp:inspect |
检查配置和 Schema |
php webman mcp:install |
发布缺失的配置文件 |
mcp:install 不会覆盖已有文件。如果命令注册配置本身缺失,该命令将不可用。
文档
效果图(可选)
