php的mcp服务通过实现`resourcesreadhandler`接口并提供只读资源列表来提供只读资源。具体做法是注册一个处理器,该处理器在`listresources`方法中返回包含资源uri和元数据的数组,并在`readresource`方法中根据uri读取并返回静态或动态内容,确保不执行任何写入操作。

如何定义只读资源的元数据?
定义只读资源的元数据需要在`listResources`回调中返回包含`uri`、`name`和`description`的资源对象。这些元数据用于客户端发现可用资源,其中`uri`必须唯一且符合MCP规范,`name`是人类可读的名称,`description`提供简要说明。

$resources = [
new Resource('file:///config.json', 'Config File', 'Application configuration'),
new Resource('file:///status.txt', 'Status', 'Current system status')
];
如何实现只读资源的内容读取?
实现只读资源的内容读取需要在`readResource`回调中根据传入的URI返回对应的文本或JSON内容。该方法不应修改任何状态,仅从内存、文件或数据库读取数据并封装为`TextDocumentContent`或`BlobDocumentContent`返回。

function readResource(string $uri): DocumentContent {
if ($uri === 'file:///config.json') {
return new TextDocumentContent(file_get_contents('/etc/app/config.json'));
}
throw new Exception('Resource not found');
}
只读资源在并发请求下是否安全?
只读资源在并发请求下是安全的,因为`readResource`方法仅执行读取操作,不涉及锁机制或状态变更。只要底层数据源(如文件)支持并发读取,多个客户端同时请求同一资源不会导致数据竞争或损坏。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











