    ](https://www.php.net/releases/8.2/en.php) ](https://cakephp.org/) ](https://packagist.org/packages/josbeir/cakephp-synapse)
Synapse:CakePHP MCP服务器插件
通过模型上下文协议(MCP)公开CakePHP应用程序的功能。
目录
概述
Synapse是一个CakePHP插件,它实现了 模型上下文协议(MCP),允许AI助手和其他MCP客户端通过标准化的接口与CakePHP应用程序进行交互。
\[!警告\] 此插件使用 MCP-PHP-SDK 目前正在积极开发中。随着SDK的发展,功能和API可能会发生变化。
模型上下文协议是一种开放协议,可实现AI助手(如Claude)与应用程序的数据和功能之间的无缝集成。使用Synapse,您可以公开:
- 工具:AI助手可以调用的功能(例如数据库查询、路线检查)
- 资源:可读取的数据源
- 提示:常见任务的预配置模板
特性
- 🚀 快速集成:在CakePHP应用程序中以最少的设置启用MCP支持
- 🔍 基于属性的发现:使用PHP 8+属性和类扫描查找MCP工具、资源和提示
- 🛠️ 内置工具:包括用于系统信息、数据库模式探索、路由检查、代码执行等的工具
- 📚 高级文档搜索:全文搜索,模糊匹配和相关性排名,由SQLite FTS5提供支持(索引官方CakePHP markdown文档)
- 🧩 可定制和可扩展:使用属性和配置轻松定义自己的工具、资源和提示
- ⚡ 快速工作流:用于常见开发任务、代码审查、调试和功能构建的内置提示流
安装
需求
- PHP 8.2或更高版本
- CakePHP 5.2或更高版本
安装插件
通过Composer作为开发依赖项安装:
composer require --dev josbeir/cakephp-synapse\[!注意\] 此插件通常用作开发工具,允许AI助手在开发过程中与您的应用程序进行交互。它不应该安装在生产环境中。
bin/cake plugin load --only-cli --optional Synapse该插件将自动注册并在您的应用程序中发现MCP元素。
\[!提示\] 更新插件后,建议重新索引文档以确保所有功能正常工作: ``bash bin/cake synapse index -d # Destroy old index bin/cake synapse index # Re-index documentation ``快速开始
- 安装插件 (见上文)
- 配置启用MCP的客户端:
要连接Claude Code/桌面或其他MCP客户端(VSCode/Zed/…):
- 配置客户端以使用stdio传输
- 将其指向CakePHP bin目录:
bin/cake synapse server - 客户端将通过MCP协议与您的应用程序通信
大多数客户需要 命令 这将是你的蛋糕可执行文件 bin/cake 随后 参数: synapse server
{
"my-cakephp-app": {
"command": "bin/cake",
"args": ["synapse", "server"]
}
}或使用时运行 DDEV 例子
{
"my-cakephp-app": {
"command": "ddev",
"args": ["cake", "synapse", "server"],
}
}配置
Synapse有各种配置选项。参见 config/synapse.php 关于可用设置和自定义的详细信息,请参阅此插件。
内置工具
Synapse包括几个用于常见操作的内置工具和资源:
| 类别 | 名称 | 描述 |
|---|---|---|
| 系统 | system_info | 获取CakePHP版本、PHP版本、调试模式等。 |
| 系统 | config_read | 读取配置值 |
| 系统 | debug_status | 检查调试模式是否已启用 |
| 系统 | list_env_vars | 列出所有可用的环境变量 |
| 代码执行 | tinker | 使用完整的应用程序上下文执行任意PHP代码 |
| 数据库 | database_connections | 列出所有已配置的数据库连接 |
| 数据库 | database_schema | 获取表的详细架构信息(查看所有表,检查列、约束、索引,了解外键关系) |
| 路线 | list_routes | 列出所有经过筛选和排序的路线 |
| 路线 | get_route | 获取特定路线的详细信息 |
| 路线 | match_url | 查找与给定URL匹配的路由 |
| 路线 | detect_route_collisions | 查找潜在的路线冲突 |
| 文件 | search_docs | 使用相关性排名、模糊匹配和过滤搜索文档 |
| 文件 | get_doc | 按文档ID检索完整文档内容(格式: source::path) |
| 文件 | docs_stats | 查看索引统计数据和可用来源 |
| 文件 | docs://search/{query} | 搜索CakePHP文档并返回格式化结果 |
| 文件 | docs://content/{documentId} | 按文档ID检索完整文档内容(格式: source::path) |
| 命令 | list_commands | 列出所有可用的CakePHP控制台命令,包括可选的过滤和排序 |
| 命令 | get_command_info | 获取特定控制台命令的详细信息(选项、参数、帮助) |
\[!警告\] 这 tinker 该工具在您的应用程序中执行任意代码。负责任地使用,避免在未经明确批准的情况下修改数据。\[!提示\] 这tinker该工具可用于使用CakePHP的ORM查询数据库。修补上下文提供了对$this->fetchTable()便于数据库操作。
\[!注意\] 文件从官方网站索引 CakePHP markdown文档该索引是使用SQLite FTS5在本地构建的,用于快速、无依赖性的全文搜索。
内置提示
Synapse包括预定义的提示工作流,指导LLM完成常见的CakePHP开发任务。提示将多种工具(搜索文档、阅读文档、修补)组合成结构化的最佳实践工作流程。
可用提示
| 提示 | 描述 | 参数 |
|---|---|---|
documentation-expert | 通过示例获取CakePHP功能的全面指导 | topic (必填), depth (可选:基础/中级/高级) |
debug-helper | 针对错误和问题的系统调试工作流程 | error (必填), context (可选:控制器/型号/数据库/视图) |
feature-builder | 遵循惯例实现完整功能的指南 | feature (必填), component (可选:控制器/模型/行为/助手/中间件/命令/全栈) |
database-explorer | 探索数据库模式、关系和数据 | table (必填), show (可选:模式/数据/关系/all) |
code-reviewer | 根据CakePHP约定和最佳实践审查代码 | code (必填), focus (可选:约定/安全/性能/测试/全部) |
migration-guide | 帮助在CakePHP版本之间迁移代码 | fromVersion, toVersion (必填), area (可选:特定功能或通用) |
testing-assistant | 生成测试用例和测试指南 | subject (必填), testType (可选:单元/集成/夹具/全部) |
performance-analyzer | 分析和优化性能问题 | concern (必填), context (可选:代码片段或描述) |
orm-query-helper | 在指导下构建复杂的ORM查询 | queryGoal (必填), tables (可选:逗号分隔列表) |
tinker-workshop | 交互式PHP探索和测试指南 | goal (必填:探索/测试/调试), subject (可选) |
quality-assurance | CakePHP的编码指南和QA最佳实践 | context (可选:指南/集成/故障排除/全部), tools (可选:全部或逗号分隔列表) |
自动提示:
- 搜索相关文档
- 阅读详细指南
- 通过修补程序执行测试代码
- 根据最佳实践提供结构化、全面的答案
优点:
- 更快的工作流程 -常见任务变成一步操作
- 最佳实践 -提示编码CakePHP的专业知识和惯例
- 一致性 -常见问题的标准化处理方法
- 发现 -查看可用的工作流程,无需记住工具组合
配置提示
Prompts可以引用特定的CakePHP版本并使用各种质量工具。在中配置两者 config/synapse.php:
return [
'Synapse' => [
'prompts' => [
// Target CakePHP version for prompt responses (e.g. '5.x', '5.2', '4.5', '4.x')
'cakephp_version' => env('MCP_CAKEPHP_VERSION', '5.x'),
// Target PHP version for prompt responses (e.g. '8.2', '8.3', '8.x')
'php_version' => env('MCP_PHP_VERSION', PHP_VERSION),
// Quality tools configuration
'quality_tools' => [
'phpcs' => ['enabled' => true, 'standard' => 'cakephp'],
'phpstan' => ['enabled' => true, 'level' => 8],
'phpunit' => ['enabled' => true, 'coverage' => true],
'rector' => ['enabled' => false, 'set' => 'cakephp'],
'psalm' => ['enabled' => false, 'level' => 3],
],
],
],
];创建自定义工具、资源和提示
您可以使用PHP属性使用自己的工具、资源和提示来扩展Synapse。Synapse会自动在您的 src/ 使用MCP属性的目录。
工具 公开AI助手可以调用的函数。创建它们 #[McpTool]:
fetchTable('Users');
$user = $usersTable->get($id);
return [
'id' => $user->id,
'email' => $user->email,
'name' => $user->name,
];
}
}资源 暴露数据源。创建它们 #[McpResourceTemplate].
提示 指导LLM完成工作流程。创建它们 #[McpPrompt].
有关所有MCP功能、属性和实现模式的详细文档,请参阅 MCP PHP SDK文档.
CLI使用情况
使用CLI管理和搜索索引:
# Index all sources
bin/cake synapse index
# Index specific source
bin/cake synapse index --source cakephp-5x
# Force re-index and optimize
bin/cake synapse index --force --optimize
# Search documentation from CLI (interactive mode by default)
bin/cake synapse search "authentication"
# Search with options
bin/cake synapse search "database queries" --limit 5 --fuzzy --detailed
# Non-interactive mode for scripts/CI
bin/cake synapse search "authentication" --non-interactive
# Interactive features:
# - View result details and snippets
# - Navigate between results
# - View full document content
# - All from within the CLI运行服务器
\[!注意\] 在大多数情况下,你会 不 需要手动运行MCP服务器。当您将服务器配置为使用CakePHP应用程序时,服务器通常由您的IDE或启用MCP的客户端(如Claude Desktop、VSCode、Zed等)自动启动。客户端将使用适当的命令启动服务器(例如。, bin/cake synapse server)并为您处理连接。如果要手动运行MCP服务器进行测试或调试,可以使用以下CLI命令:
# Start with default settings (stdio transport)
bin/cake synapse server
# Start with verbose output
bin/cake synapse server --verbose
# Disable caching
bin/cake synapse server --no-cache
# Launch MCP Inspector for testing (requires Node.js/npx)
bin/cake synapse server --inspect
# View help
bin/cake synapse server --help命令选项
| 选项 | 简短 | 描述 |
|---|---|---|
--transport | -t | 运输类型(目前仅 stdio 支持) |
--no-cache | -n | 禁用此运行的发现缓存 |
--clear-cache | -c | 启动前清除发现缓存 |
--inspect | -i | 启动MCP Inspector以交互方式测试服务器(需要Node.js/npx) |
--verbose | -v | 启用详细输出(将日志记录到stderr) |
--quiet | -q | 抑制除错误外的所有输出 |
MCP检验员测试
这 --inspect 标志启动 MCP检查员,一个开发工具,提供基于web的UI来测试您的MCP服务器:
bin/cake synapse server --inspect这将:
- 启动MCP检查器(如果未安装,则通过npx自动下载)
- 以检查器模式启动服务器
- 打开具有交互式UI的web浏览器
- 允许您以交互方式测试工具、资源和提示
要求:
- 必须安装Node.js和npx
- 网络浏览器
检查员在开发过程中非常宝贵,因为:
- 测试工具功能
- 检查资源数据
- 调试服务器行为
- 验证工具模式和文档
运输选项
目前,Synapse支持:
- 标准 -标准输入/输出(默认,建议大多数MCP客户端使用)
未来的版本可能包括HTTP/SSE传输。
发现缓存
发现缓存通过缓存发现的MCP元素(工具、资源、提示)来提高服务器启动性能。
配置
Synapse使用CakePHP内置的PSR-16缓存系统。在中配置缓存 config/synapse.php
命令选项
# Disable caching for this run
bin/cake synapse server --no-cache
bin/cake synapse server -n
# Clear cache before starting
bin/cake synapse server --clear-cache
bin/cake synapse server -c
# Combine options
bin/cake synapse server --clear-cache --verbose测试
运行测试套件:
# Run all tests
composer test
# Run with coverage
composer test-coverage
# Run PHPStan analysis
composer phpstan
# Check code style
composer cs-check
# Fix code style
composer cs-fix贡献
欢迎投稿!请遵循以下指南:
- 代码规范:遵循CakePHP编码标准
- 测试:添加新功能的测试
- PHPStan的:确保8级合规
- 文档:更新README以获取新功能
开发设置
# Clone the repository
git clone https://github.com/josbeir/cakephp-synapse.git
cd synapse
# Install dependencies
composer install
# Run tests
composer test
# Run static analysis
composer phpstan许可证
此插件是根据 MIT许可证.
鸣谢
- 内置于 蛋糕PHP
- 实现 模型上下文协议
- 使用 MCP-PHP-SDK
\[!注意\] MCP PHP SDK正在积极开发中,API可能会发生变化。
