使用说明
Rhymix的MCP服务器
英语
概述
MCP服务器 是可以应用于Rhymix CMS的模型上下文协议(MCP)服务器模块。该模块为AI客户端访问Rhymix的数据和功能提供了一个标准化的接口。
此模块是一个移植 php-mcp/服务器 用于Rhymix。
对于MCP工具、提示和插件开发,您应该参考上面的存储库。
[!重要] 本模块要求在安装过程中对服务器和Rhymix有深入的了解。
更改服务器设置时,您必须知道自己在做什么,并相应地继续操作。
什么是模型上下文协议(MCP)?
MCP是一种开放标准协议,旨在允许AI助手安全地连接到外部工具和数据源。这允许AI客户端利用各种应用程序和服务的功能。
主要特点
- ✨ 标准化MCP协议 支持
- 🔧 可扩展工具系统 -用户可以开发自己的MCP工具
- 🔍 自动目录扫描 -自动扫描来自单独模块的MCP插件
安装要求
- PHP 8.2或更高版本
- Rhymix 2.1或更高版本
- 需要Linux Shell访问权限
安装方法
- 将模块复制到
modules/mcpserverRhymix的目录。 - 在中配置设置 高级 > 已安装的模块 > MCP服务器.
配置选项
服务器设置
- 服务器名称:MCP服务器标识符
- 服务器版本:版本信息
- 主机:服务器将绑定到的IP地址(默认值:127.0.0.1)
- 端口:服务器将使用的端口(默认值:8080)
- MCP路径:MCP端点路径(默认值:/MCP)
通信设置
- 启用SSE:是否使用服务器发送事件
- 无状态模式:是否启用无状态模式
日志记录设置
- 日志输出:启用控制台日志输出
- 日志级别:选择要输出的日志级别(调试、信息、警告、错误等)
正在运行MCP服务器
此模块需要运行与Rhymix分开的服务器。
参见 模块>配置手册 运行脚本并在nginx等服务器程序中进行必要的反向代理配置更改。
开发自定义MCP工具
基本结构
自定义MCP工具在 modules/(any module)/mcp/ 目录。所有MCP工具类必须继承自 \Rhymix\Modules\Mcpserver\Models\MCPServerInterface.
示例:计算器工具(ExampleCalculatorElements.php)
<?php
namespace Rhymix\Modules\Mcpserver\Mcp;
use Rhymix\Modules\Mcpserver\Models\MCPServerInterface;
use PhpMcp\Server\Attributes\McpTool;
use PhpMcp\Server\Attributes\Schema;
/**
* Example MCP tool providing calculator functionality
*/
class ExampleCalculatorElements extends MCPServerInterface
{
/**
* Adds two numbers.
*
* @param int $a First number
* @param int $b Second number
* @return int Sum of two numbers
*/
#[McpTool(name: 'add_numbers')]
public function add(int $a, int $b): int
{
return $a + $b;
}
/**
* Calculates power with validation.
*/
#[McpTool(name: 'calculate_power')]
public function power(
#[Schema(type: 'number', minimum: 0, maximum: 1000)]
float $base,
#[Schema(type: 'integer', minimum: 0, maximum: 10)]
int $exponent
): float {
return pow($base, $exponent);
}
}
创建新的MCP工具类
-
创建文件:在中创建一个新的PHP文件(YourCustomTool.PHP)
modules/example/mcp/目录。 -
基本班级结构:
<?php
namespace Rhymix\Modules\Example\Mcp;
use Rhymix\Modules\Mcpserver\Models\MCPServerInterface;
use PhpMcp\Server\Attributes\McpTool;
use PhpMcp\Server\Attributes\Schema;
/**
* Custom MCP Tool
*/
class YourCustomTool extends MCPServerInterface
{
/**
* Example tool method
*/
#[McpTool(name: 'your_tool_name')]
public function yourMethod($param1, $param2)
{
// Implement business logic here
return "Result";
}
}
Rhymix数据库访问示例
<?php
namespace Rhymix\Modules\Example\Mcp;
use Rhymix\Modules\Mcpserver\Models\MCPServerInterface;
use PhpMcp\Server\Attributes\McpTool;
class RhymixDatabaseTool extends MCPServerInterface
{
/**
* Retrieves member information.
*/
#[McpTool(name: 'get_member_info')]
public function getMemberInfo(int $member_srl): array
{
// Execute Rhymix database query
$output = executeQuery('member.getMemberInfoByMemberSrl', ['member_srl' => $member_srl]);
if (!$output->toBool()) {
throw new \Exception('Cannot get member info: ' . $output->getMessage());
}
$member = $output->data;
return [
'member_srl' => $member->member_srl,
'user_id' => $member->user_id,
'nick_name' => $member->nick_name,
'email_address' => $member->email_address
];
}
/**
* Retrieves document list.
*/
#[McpTool(name: 'get_document_list')]
public function getDocumentList(int $module_srl, int $page = 1): array
{
$args = new \stdClass();
$args->module_srl = $module_srl;
$args->page = $page;
$args->list_count = 10;
$output = executeQueryArray('document.getDocumentList', $args);
if (!$output->toBool()) {
throw new \Exception('Cannot get document list: ' . $output->getMessage());
}
return [
'total_count' => $output->total_count,
'documents' => $output->data
];
}
}
架构验证
在MCP工具中,您可以使用 Schema 属性:
#[McpTool(name: 'validated_tool')]
public function validatedMethod(
#[Schema(type: 'string', minLength: 1, maxLength: 100)]
string $text,
#[Schema(type: 'integer', minimum: 1, maximum: 999)]
int $number,
#[Schema(type: 'number', minimum: 0.0, maximum: 100.0)]
float $percentage
): array {
return [
'text' => $text,
'number' => $number,
'percentage' => $percentage
];
}
有关更多信息,请参阅 php-mcp/服务器.
调试
日志检查
MCP服务器根据配置输出详细日志。通过日志,您可以查看:
- 客户端连接/断开
- 工具调用和响应
- 错误和异常信息
连接测试
使用管理页面上的“本地连接测试”功能验证MCP服务器是否正常工作。
注意事项
- 在安全关键环境中使用具有适当防火墙设置的MCP服务器。
- 建议在生产环境中禁用DEBUG日志级别。
- 在自定义工具中使用数据库时,执行适当的权限检查。
许可证
此模块根据GPL v2许可证分发。
开发者
- 船票 (waterticket@potatosoft.kr)
- 网站:https://potatosoft.kr
- 模块生成器:https://www.poesis.dev/
技术支持
如果您遇到问题或需要帮助:
- 在 Rhymix官方社区
- 注册GitHub问题(如适用)
韩语
概述
MCP服务器是可应用于Rhymix CMS的Model Context Protocol(MCP)服务器模块。通过该模块,AI客户端可以访问Remix的数据和功能,提供标准化的界面。
这个模块 php-mcp/服务器移植程序,以便在混搭中使用。
MCP工具、提示和插件开发应参考上述存储库进行开发。
[!重要] 本模块要求您在安装过程中对服务器和混合机有深入的了解。
更改服务器设置时,必须了解自己在做什么并继续。
模型上下文协议(MCP)란?
MCP是一种开放式标准协议,旨在让AI助手安全地连接到外部工具和数据源。这使AI客户端可以利用各种应用程序和服务的功能。
主要功能
- ✨ 标准化MCP协议 支持
- 🔧 可扩展的工具系统 -用户可以自行开发MCP工具
- 🔍 自动目录扫描 -自动扫描,以便在单独的模块中使用MCP插件
安装要求
- PHP 8.2或更高版本
- Rhymix 2.1或更高版本
- 必须能够使用Linux Shell
安装方法
- 将模块
modules/mcpserver复制到目录。 - 高级 > 安装的模块 > MCP服务器 在中配置设置。
设置选项
服务器设置
- 服务器名称:MCP服务器的标识名
- 服务器版本:版本信息
- 主机:服务器要绑定的IP地址(默认值:127.0.0.1)
- 端口:服务器要使用的端口(默认为8080)
- MCP路径:MCP端点路径(默认:/mcp)
通信设置
- 启用SSE:是否使用Server-Sent Events
- Stateless模式:是否启用无状态模式
日志记录设置
- 日志输出:启用控制台日志输出
- 日志级别:选择要输出的日志级别(DEBUG、INFO、WARNING、ERROR等)
运行MCP服务器
此模块必须独立于Remix运行服务器。
模块>设置手册运行脚本,需要更改服务器程序(如nginx)的反向代理设置。
开发自定义MCP工具
基本结构
定制MCP工具 modules/(임의의 모듈)/mcp/ 在目录中创建。所有MCP工具类 \Rhymix\Modules\Mcpserver\Models\MCPServerInterface必须继承。
示例:计算器工具(Example CalculatorElements.php)
<?php
namespace Rhymix\Modules\Mcpserver\Mcp;
use Rhymix\Modules\Mcpserver\Models\MCPServerInterface;
use PhpMcp\Server\Attributes\McpTool;
use PhpMcp\Server\Attributes\Schema;
/**
* 계산기 기능을 제공하는 MCP 툴 예제
*/
class ExampleCalculatorElements extends MCPServerInterface
{
/**
* 두 수를 더합니다.
*
* @param int $a 첫 번째 숫자
* @param int $b 두 번째 숫자
* @return int 두 숫자의 합
*/
#[McpTool(name: 'add_numbers')]
public function add(int $a, int $b): int
{
return $a + $b;
}
/**
* 거듭제곱을 계산합니다 (유효성 검사 포함).
*/
#[McpTool(name: 'calculate_power')]
public function power(
#[Schema(type: 'number', minimum: 0, maximum: 1000)]
float $base,
#[Schema(type: 'integer', minimum: 0, maximum: 10)]
int $exponent
): float {
return pow($base, $exponent);
}
}
创建新的MCP工具类
-
创建文件:
modules/example/mcp/在目录中创建新的PHP文件(YourCustomTool.php)。 -
基类结构:
<?php
namespace Rhymix\Modules\Example\Mcp;
use Rhymix\Modules\Mcpserver\Models\MCPServerInterface;
use PhpMcp\Server\Attributes\McpTool;
use PhpMcp\Server\Attributes\Schema;
/**
* 사용자 정의 MCP 툴
*/
class YourCustomTool extends MCPServerInterface
{
/**
* 툴 메서드 예제
*/
#[McpTool(name: 'your_tool_name')]
public function yourMethod($param1, $param2)
{
// 여기에 비즈니스 로직 구현
return "결과";
}
}
混合数据库访问示例
<?php
namespace Rhymix\Modules\Example\Mcp;
use Rhymix\Modules\Mcpserver\Models\MCPServerInterface;
use PhpMcp\Server\Attributes\McpTool;
class RhymixDatabaseTool extends MCPServerInterface
{
/**
* 회원 정보를 조회합니다.
*/
#[McpTool(name: 'get_member_info')]
public function getMemberInfo(int $member_srl): array
{
// 라이믹스 데이터베이스 쿼리 실행
$output = executeQuery('member.getMemberInfoByMemberSrl', ['member_srl' => $member_srl]);
if (!$output->toBool()) {
throw new \Exception('회원 정보를 가져올 수 없습니다: ' . $output->getMessage());
}
$member = $output->data;
return [
'member_srl' => $member->member_srl,
'user_id' => $member->user_id,
'nick_name' => $member->nick_name,
'email_address' => $member->email_address
];
}
/**
* 게시물 목록을 조회합니다.
*/
#[McpTool(name: 'get_document_list')]
public function getDocumentList(int $module_srl, int $page = 1): array
{
$args = new \stdClass();
$args->module_srl = $module_srl;
$args->page = $page;
$args->list_count = 10;
$output = executeQueryArray('document.getDocumentList', $args);
if (!$output->toBool()) {
throw new \Exception('게시물 목록을 가져올 수 없습니다: ' . $output->getMessage());
}
return [
'total_count' => $output->total_count,
'documents' => $output->data
];
}
}
验证方案
MCP工具包括: Schema 可以使用“属性”设置输入参数的验证:
#[McpTool(name: 'validated_tool')]
public function validatedMethod(
#[Schema(type: 'string', minLength: 1, maxLength: 100)]
string $text,
#[Schema(type: 'integer', minimum: 1, maximum: 999)]
int $number,
#[Schema(type: 'number', minimum: 0.0, maximum: 100.0)]
float $percentage
): array {
return [
'text' => $text,
'number' => $number,
'percentage' => $percentage
];
}
如果您想要更多信息 php-mcp/服务器请参考。
调试
检查日志
MCP服务器根据设置输出详细日志。通过日志可以查看以下信息:
- 连接/断开客户端
- 调用和响应工具
- 错误和异常信息
测试连接
在管理员页面上,可以使用“测试本地连接”功能检查MCP服务器是否正常工作。
注意事项
- 在安全性要求较高的环境中,请使用MCP服务器并设置适当的防火墙。
- 建议在生产环境中禁用DEBUG日志级别。
- 在自定义工具中使用数据库时执行适当的权限检查。
许可证
该模块在GPL v2许可下分发。
开发者
- 船票 (waterticket@potatosoft.kr)
- 网站:https://potatosoft.kr
- 模块生成器:https://www.poesis.dev/
技术支持
如果遇到问题或需要帮助:
- LIMIX官方社区在中提问
- GitHub问题注册(如果适用)
