大数跨境

PHP MCP Server:AI时代的“USB-C”接口,你准备好了吗?

PHP MCP Server:AI时代的“USB-C”接口,你准备好了吗? 索引目录
2025-05-07
1
导读:在AI技术飞速发展的今天,如何让AI助手与外部系统无缝连接,成为了开发者们面临的一大挑战。

在AI技术飞速发展的今天,如何让AI助手与外部系统无缝连接,成为了开发者们面临的一大挑战。今天,我们要介绍的是一个能够解决这一问题的神器——PHP MCP Server。它不仅是一个PHP库,更是AI领域的“USB-C”接口,帮助开发者轻松构建符合MCP标准的服务器。

什么是MCP?

Model Context Protocol(MCP),最初由Anthropic开发,是一种开放标准,旨在规范AI助手与外部数据源、API及其他系统的连接方式。你可以把它想象成AI领域的“USB-C”接口,提供了一种统一、一致的上下文提供方式。

PHP MCP Server的核心优势

1. 基于属性的定义

使用简单的PHP 8属性(如#[McpTool]#[McpResource]#[McpPrompt]等),你可以轻松定义MCP元素(工具、资源、提示、模板)。无需复杂的配置,只需几行代码,就能将现有PHP应用程序的特定方法作为MCP工具、资源或提示公开。

2. 自动元数据推断

通过方法名称、参数名称、PHP类型提示和文档块,PHP MCP Server能够自动生成MCP定义,最大限度地减少样板代码。这意味着你可以专注于业务逻辑,而不必担心繁琐的配置。

3. 符合PSR标准

PHP MCP Server与标准PHP接口无缝集成,支持PSR-3(日志记录)、PSR-11(依赖注入)和PSR-16(缓存)。你可以使用自己喜欢的日志记录器、依赖注入容器和缓存实现,灵活配置,满足不同需求。

4. 多种传输方式

支持stdio(用于命令行客户端)和http+sse(HTTP + Server-Sent Events)传输方式。无论你是开发命令行工具还是Web应用,PHP MCP Server都能轻松应对。

5. 框架无关

PHP MCP Server设计为在普通PHP项目中或集成到任何PHP框架中都能同样良好地工作。无论你使用的是Laravel、Symfony还是其他框架,都能轻松上手。

快速上手:构建一个简单的MCP服务器

1. 安装

通过Composer安装PHP MCP Server:

BASH

composer require php-mcp/server

2. 创建MCP元素类

创建一个文件,例如src/MyMcpStuff.php


<?php

namespace App;

use PhpMcp\Server\Attributes\McpTool;

class MyMcpStuff
{
/**
* 一个用于将两个数字相加的简单工具。
*
* @param int $a 第一个数字。
* @param int $b 第二个数字。
* @return int 两个数字的和。
*/
#[McpTool(name: 'adder')]
public function addNumbers(int $a, int $b): int
{
return $a + $b;
}
}

3. 创建服务器脚本

在项目根目录中创建一个脚本,例如mcp-server.php


<?php

declare(strict_types=1);

use PhpMcp\Server\Server;

// 确保包含项目的自动加载器
require_once __DIR__ . '/vendor/autoload.php';

$server = Server::make()
->withBasePath(__DIR__) // 开始扫描属性的目录
->withScanDirectories(['src']) // 要扫描的特定子目录
->discover(); // 查找所有#[Mcp*]属性

// 使用stdio传输运行服务器
$exitCode = $server->run('stdio');

exit($exitCode);

4. 配置MCP客户端

配置MCP客户端(如Cursor、Claude Desktop等)以使用stdio传输进行连接。例如,在Cursor的.cursor/mcp.json中:

JSON

{
"mcpServers": {
"my-php-server": {
"command": "php",
"args": [
"/path/to/your/project/mcp-server.php"
]
}
}
}

现在,当连接客户端时,它应该能够发现adder工具。

核心概念

1. #[McpTool]

将一个方法标记为MCP工具。工具代表客户端可以调用的操作或函数,通常带有参数。

2. #[McpResource]

将一个方法标记为代表特定的、静态的MCP资源实例。资源代表由URI标识的内容或数据片段。

3. #[McpResourceTemplate]

将一个方法标记为可以基于模板URI生成资源实例的方法。这对于URI包含可变部分(如用户ID或文档ID)的资源很有用。

4. #[McpPrompt]

将一个方法标记为MCP提示生成器。提示是预定义的模板或函数,可根据输入参数生成对话消息。

详细配置

1. 日志记录

你可以使用自己的PSR-3日志记录器(例如Monolog)来记录服务器日志:


$logger = new MyPsrLoggerImplementation(...);
$server = Server::make()->withLogger($logger);

2. 缓存

你可以使用自己的PSR-16缓存实现(例如Symfony Cache、Laravel Cache)来缓存发现的元素和传输状态:


$cache = new MyPsrCacheImplementation(...);
$server = Server::make()->withCache($cache);

3. 依赖注入

你可以使用自己的PSR-11依赖注入容器(例如Laravel、Symfony、PHP-DI)来解析应用程序类及其依赖项:


$container = new MyPsrContainerImplementation(...);
$server = Server::make()->withContainer($container);

4. 配置存储库

你可以实现PhpMcp\Server\Contracts\ConfigurationRepositoryInterface接口,提供自定义配置存储库:


$config = new MyConfigurationRepositoryImplementation(...);
$server = Server::make()->withConfig($config);

结语

PHP MCP Server为开发者提供了一个强大而灵活的工具,帮助他们在AI时代轻松构建符合MCP标准的服务器。无论你是新手还是经验丰富的开发者,PHP MCP Server都能让你快速上手,专注于创新和业务逻辑。



【声明】内容源于网络
0
0
索引目录
索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
内容 444
粉丝 0
索引目录 索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
总阅读544
粉丝0
内容444