该库提供了一个简洁易用的PHP接口,帮助开发者构建符合Model Context Protocol (MCP)规范的服务器。MCP服务器充当大型语言模型(LLM)与外部世界之间的桥梁,允许LLM通过结构化协议访问资源和调用工具。

项目简介

'pronskiy/mcp' 是一个PHP库,它基于底层MCP SDK,提供了更高级别的抽象和链式调用风格,简化了MCP服务器的开发流程。

主要功能点

  • 工具 (Tools) 定义与执行: 轻松注册可在LLM请求中被调用的PHP函数或方法,库会自动处理参数映射和结果转换。
  • 资源 (Resources) 暴露与访问: 定义可供LLM读取的各种资源(如文件内容、API数据等),并指定其URI和MIME类型。
  • Prompt 模板 (Prompts) 定义与渲染: 创建可定制的Prompt模板,接受参数,并根据LLM请求动态生成完整的Prompt内容。
  • 自动化: 利用PHP的反射机制,自动从PHP函数签名生成MCP所需的工具输入Schema和Prompt参数定义。
  • 简化的运行接口: 提供简单的'run()'方法启动服务器,处理JSON-RPC通信。

安装步骤

使用Composer进行安装:

composer require pronskiy/mcp

服务器配置 (供MCP客户端参考)

MCP客户端需要知道如何启动MCP服务器进程并与其通信。对于使用此PHP库构建的服务器,典型的启动方式是通过命令行执行一个PHP脚本。MCP客户端需要以下配置信息:

  • 服务器名称 (serverName): 在PHP代码中创建'\Pronskiy\Mcp\Server'实例时指定的名称,例如在'new \Pronskiy\Mcp\Server('my-server')'中,名称就是'my-server'。
  • 命令 (command): 启动PHP解释器的命令,通常是 'php'。
  • 参数 (args): 传递给'command'的参数列表。这通常是一个包含你的MCP服务器脚本路径的数组,例如 '["/path/to/your/mcp_server_script.php"]'。

配置示例说明 (非实际代码):

{
  "name": "用户给这个连接起的名称",
  "serverName": "你的MCP服务器脚本中指定的服务器名称",
  "command": "php",
  "args": ["路径/到/你的/服务器启动脚本.php"],
  "transport": "stdio" 
}

注意: 'transport' 通常是 'stdio' (标准输入输出),因为这是命令行方式启动服务器时的默认通信方式。MCP客户端通过进程的标准输入向服务器发送JSON-RPC请求,通过标准输出接收响应和通知。

基本使用方法

  1. 创建一个PHP文件(例如 'mcp_server.php')。
  2. 引入 Composer 的自动加载文件。
  3. 实例化 '\Pronskiy\Mcp\Server' 类,可以指定一个服务器名称。
  4. 使用链式调用方法 ('->tool()', '->prompt()', '->resource()') 定义你的服务器能力。
  5. 调用 '->run()' 方法启动服务器。

示例:

<?php

require 'vendor/autoload.php'; // 替换为你的实际路径

$server = new \Pronskiy\Mcp\Server('my-cool-server');

// 定义一个工具
$server->tool(
    'greet',
    '根据姓名打招呼',
    function(string $name) {
        return "Hello, " . htmlspecialchars($name);
    }
);

// 定义一个资源 (例如文件内容)
$server->resource(
    uri: 'file:///info.txt',
    name: '服务器信息',
    mimeType: 'text/plain',
    callback: fn() => "这是一个简单的MCP服务器。"
);

// 定义一个Prompt
$server->prompt(
    'summarize_text',
    '请求大模型总结一段文本',
    function(string $text) {
        // 返回大模型需要处理的Prompt内容
        return "请总结以下文本:\n\n" . $text;
    }
);

// 运行服务器
$server->run();

?>

然后,你可以在命令行中通过 'php mcp_server.php' 来启动这个服务器。MCP客户端配置相应的命令和参数即可连接。

信息

分类

开发者工具