使用说明
PHP MCP客户端
用于模型上下文协议(MCP)的灵活PHP客户端,支持CLI和具有多服务器配置的web界面。
特性
- 双接口:CLI和基于web的客户端
- 多服务器支持:在多个MCP服务器之间进行配置和切换
- 柔性连接:支持进程(STDIO)和网络套接字连接
- 配置驱动:用于管理多个服务器的JSON配置文件
- 交互式:具有工具发现功能的完全交互模式
- 现代Web用户界面:具有服务器选择器的漂亮、响应迅速的web界面
安装
- 克隆或下载到您的目录:
cd C:\mcpclient
- 复制示例配置:
copy mcpconfig.json.example mcpconfig.json
- 编辑
mcpconfig.json配置您的服务器
配置
编辑 mcpconfig.json 要定义您的MCP服务器:
{
"default_server": "dating-local",
"client_info": {
"name": "php-mcp-client",
"version": "1.0.0"
},
"protocol_version": "2024-11-05",
"response_timeout": 10,
"servers": {
"dating-local": {
"name": "Dating MCP Server (Local)",
"description": "Local dating questionnaire server",
"connection_type": "process",
"process": {
"additional_arguments": "c:\\dating\\mcp-server\\index.php",
"command_line": "php"
}
},
"dating-remote": {
"name": "Dating MCP Server (Remote)",
"description": "Remote dating server via socket",
"connection_type": "socket",
"socket": {
"host": "localhost",
"port": 3000,
"timeout": 30
}
}
}
}
配置选项
- 默认服务器:默认使用的服务器
- 客户端信息:客户信息
- 协议版本:MCP协议版本(默认:“2024-11-05”)
- response_timeout:等待服务器响应的秒数
- 服务器:包含服务器配置的对象
服务器配置
每个服务器 servers 对象具有:
- 名字:服务器的显示名称
- 描述:服务器功能的描述
- connection_type:“进程”或“套接字”
- 过程:基于流程的连接配置
- 附加论据:MCP服务器PHP文件的路径
- command_line:PHP可执行文件(默认:“PHP”)
- 插座:基于套接字的连接配置
- 主机:服务器主机名或IP
- 端口:服务器端口
- 超时:连接超时(秒)
用法
CLI客户端
连接到默认服务器
php mcp-client.php
列出可用服务器
php mcp-client.php servers
连接到特定服务器
php mcp-client.php dating-remote
CLI命令:
连接后,使用以下命令:
list-显示可用工具info-显示服务器信息call <tool>-调用特定工具(带参数提示)quick-快速菜单,用于选择和调用工具quit-退出
web客户端
- 启动web服务器:
cd public_html
php -S localhost:8080
-
在浏览器中打开:http://localhost:8080
-
使用服务器选择器下拉菜单在配置的服务器之间切换
web界面提供:
- 服务器选择 顶部栏中的下拉菜单
- 可视化工具浏览器
- 带有验证功能的交互式表单
- 实时结果显示
- 连接状态指示器
- 切换服务器时自动重新连接
建筑
文件结构
C:\mcpclient\
├── mcpconfig.json.example # Example configuration
├── mcpconfig.json # Your configuration (gitignored)
├── .gitignore # Git ignore file
├── config.php # Configuration loader (MCPConfig class)
├── MCPClient.php # Core MCP client library
├── mcp-client.php # CLI interface
├── README.md # This file
└── public_html\
├── index.php # Web interface
└── api.php # REST API endpoint
MCPClient.php
支持两种连接类型的核心库:
- 处理模式:生成PHP进程并通过STDIN/STDOUT进行通信
- 插座模式:连接到TCP套接字服务器
- JSON-RPC 2.0协议的实现
- 工具发现和执行
config.php(MCPConfig类)
配置管理器:
- 加载并验证
mcpconfig.json - 按名称提供服务器配置
- 列出可用服务器
- 处理默认值和回退
mcp-client.php
交互式CLI界面:
- 列出可用服务器
- 连接到所选服务器
- 交互式命令循环
- 工具参数提示
public_html/
- 索引php:现代单页网页界面
- api.php:支持多个服务器的REST API
连接类型
处理模式
将MCP服务器作为子进程生成,并通过STDIN/STDOUT进行通信。
最适合:
- 地方发展
- 测试
- 单用户场景
例子:
{
"connection_type": "process",
"process": {
"additional_arguments": "c:\\mcp-server\\index.php",
"command_line": "php"
}
}
插座模式
连接到在网络套接字上运行的MCP服务器。
最适合:
- 生产部署
- 远程服务器
- 多用户场景
- Docker容器(mcp网关运行--端口3001--传输stdio)
例子:
{
"connection_type": "socket",
"socket": {
"host": "mcp.example.com",
"port": 3000,
"timeout": 30
}
}
API使用
您还可以在PHP代码中直接使用MCPClient库:
require_once 'MCPClient.php';
require_once 'config.php';
// Load configuration
$mcpConfig = new MCPConfig();
$config = $mcpConfig->getServerConfig('dating-local');
// Create and connect client
$client = new MCPClient($config);
$client->connect();
$client->initialize();
// List available tools
$tools = $client->listTools();
print_r($tools);
// Call a tool
$result = $client->callTool('get_questions', []);
print_r($result);
// Clean up
$client->disconnect();
Git使用
配置文件 mcpconfig.json 保护敏感信息是正当的。共享此项目时:
- 始终承诺
mcpconfig.json.example - 永不承诺
mcpconfig.json - 用户应复制示例并配置自己的服务器
需求
- PHP 7.4或更高版本
- 对于进程模式:PHP CLI二进制文件可在PATH中访问
- 对于套接字模式:MCP服务器的网络访问
故障排除
“找不到配置文件”
复制 mcpconfig.json.example 到 mcpconfig.json 并配置您的服务器。
“找不到服务器”
跑 php mcp-client.php servers 查看可用服务器,或检查您的 mcpconfig.json.
连接超时
- 处理模式:检查additional_argues是否正确以及文件是否存在
- 插座模式:验证服务器是否正在运行,并且可以在指定的主机端口上访问
Web界面未加载服务器
确保 public_html/api.php 可以访问 ../mcpconfig.json 以及MCPConfig类。
