PHP MCP客户端

一个支持CLI和Web界面的灵活PHP客户端,用于Model Context Protocol (MCP)的多服务器配置。

  • by awehttam
  • PHP
  • 本地部署
  • 更新于
在 GitHub 查看 awehttam/mcpclient

使用说明

PHP MCP客户端

用于模型上下文协议(MCP)的灵活PHP客户端,支持CLI和具有多服务器配置的web界面。

特性

  • 双接口:CLI和基于web的客户端
  • 多服务器支持:在多个MCP服务器之间进行配置和切换
  • 柔性连接:支持进程(STDIO)和网络套接字连接
  • 配置驱动:用于管理多个服务器的JSON配置文件
  • 交互式:具有工具发现功能的完全交互模式
  • 现代Web用户界面:具有服务器选择器的漂亮、响应迅速的web界面

安装

  1. 克隆或下载到您的目录:
cd C:\mcpclient
  1. 复制示例配置:
copy mcpconfig.json.example mcpconfig.json
  1. 编辑 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客户端

  1. 启动web服务器:
cd public_html
php -S localhost:8080
  1. 在浏览器中打开:http://localhost:8080

  2. 使用服务器选择器下拉菜单在配置的服务器之间切换

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 保护敏感信息是正当的。共享此项目时:

  1. 始终承诺 mcpconfig.json.example
  2. 永不承诺 mcpconfig.json
  3. 用户应复制示例并配置自己的服务器

需求

  • 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类。