该库提供了一个简洁易用的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请求,通过标准输出接收响应和通知。
基本使用方法
- 创建一个PHP文件(例如 'mcp_server.php')。
- 引入 Composer 的自动加载文件。
- 实例化 '\Pronskiy\Mcp\Server' 类,可以指定一个服务器名称。
- 使用链式调用方法 ('->tool()', '->prompt()', '->resource()') 定义你的服务器能力。
- 调用 '->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客户端配置相应的命令和参数即可连接。
信息
分类
开发者工具