ProcessWire MCP服务器——最小支架
此存储库提供了一个最小的脚手架,用于使用php-MCP/server生态系统运行ProcessWire的模型上下文协议(MCP)服务器。它旨在作为一个对开发人员友好的起点,以便您可以快速迭代工具和传输。
需求
快速启动
- 安装依赖项
composer install- 运行可用工具的发现
php server.php --discover- 使用stdin/stdout传输启动服务器(适用于本地代理集成)
php server.php --transport=stdio在一行中发送JSON请求(示例):
{"action":"serverInfo","params":{}}- 启动一个简单的HTTP传输(需要
react/http通过composer安装)
php server.php --transport=http --host=127.0.0.1 --port=8080然后浏览http://127.0.0.1:8080/要查看工具列表,还是致电/{toolName}?param=运行示例工具的值。
使用VS代码(方便开发人员)
此项目可以从Visual Studio Code轻松开发、运行和调试。以下是您可以进入的推荐步骤和示例配置 .vscode/ 在这个项目中。
- 推荐的扩展
- PHP调试(felixfbecker.PHP Debug)——使用Xdebug附加/启动调试会话
- PHP智能(bmewburn.vscode智能客户端)——代码智能
- Composer(ikappas.vscode Composer)--辅助命令
- PHPUnit(emallin.PHPUnit)——测试运行器集成
- 安装依赖项
在VS Code中打开项目并运行终端→ 然后新建终端:
composer install- 启动/调试服务器
如果已配置Xdebug,则可以将以下调试配置添加到 .vscode/launch.json 并使用VS Code调试面板在调试器下启动服务器。
示例 .vscode/launch.json 配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "PHP: Run server (stdio transport)",
"type": "php",
"request": "launch",
"program": "${workspaceFolder}/server.php",
"args": ["--transport=stdio"],
"cwd": "${workspaceFolder}",
"runtimeExecutable": "php"
},
{
"name": "PHP: Run server (http transport)",
"type": "php",
"request": "launch",
"program": "${workspaceFolder}/server.php",
"args": ["--transport=http","--host=127.0.0.1","--port=8080"],
"cwd": "${workspaceFolder}",
"runtimeExecutable": "php"
}
]
}注意:调试启动将使用系统PHP二进制文件启动脚本。确保PHP可以在PATH中访问,并且启用了Xdebug xdebug.mode=debug.
- 使用VS代码任务
您可以从命令面板或终端添加任务以运行常见命令(安装、运行测试)。
示例 .vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "composer install",
"type": "shell",
"command": "composer install",
"problemMatcher": []
},
{
"label": "phpunit",
"type": "shell",
"command": "vendor/bin/phpunit --colors=always",
"problemMatcher": []
},
{
"label": "discover tools",
"type": "shell",
"command": "php server.php --discover",
"problemMatcher": []
}
]
}- 运行/测试
- 使用VS Code调试面板启动服务器配置,并在中添加断点
src/调试处理程序/工具调用。 - 使用“phpunit”任务或phpunit扩展从编辑器运行单元测试。
就是这样——使用这些小助手,您可以在VS代码中快速迭代,并运行MCP服务器或使用编辑器集成进行测试。
集成测试设置
通过将ProcessWire站点文件放置在以下位置,可以对真实的ProcessWire站点运行集成测试 tests/fixtures/processwire 并确保 PROCESSWIRE_ROOT 已设置或站点引导可用。
如果您需要自动化集成流程,可以添加或提供所需的脚本和帮助程序(例如本地web安装程序或测试运行器)。如果出现以下情况,集成测试将自动跳过 PROCESSWIRE_ROOT 未设置或找不到预期的站点引导。 可通过Composer安装
此存储库配置为可通过Composer作为库包安装。有三种常见的使用方法:
- 摘自Packagist(出版后推荐):
composer require your-organization/processwire-mcp-server- 来自VCS存储库(用于开发或PR):
将VCS存储库条目添加到项目的 composer.json 然后使用分支名称要求该包:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/your-organization/processwire-mcp-server"
}
]
}composer require your-organization/processwire-mcp-server:dev-main- 使用本地路径存储库(非常方便本地开发):
{
"repositories": [
{
"type": "path",
"url": "../processwire-mcp",
"options": { "symlink": true }
}
]
}composer require your-organization/processwire-mcp-server:dev-main --prefer-source直接从GitHub存储库请求(无Packagist)
如果你想直接从GitHub使用该包,而不发布到Packagist,请在你的消费项目中添加一个VCS存储库条目 composer.json 那么需要一个分支或标签。例子:
- 将VCS存储库添加到项目的
composer.json:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/choirool/processwire-mcp"
}
]
}- 需要来自repo的包(这里我们使用master分支):
composer require choirool/processwire-mcp:dev-master --prefer-source笔记:
- 使用
--prefer-source如果你想让composer克隆存储库(对开发和补丁很有用)。省略它以在可用时安装分发存档。 - 您还可以引用特定的标签或提交(
choirool/processwire-mcp:1.0.0或choirool/processwire-mcp:dev-master#commit-hash).
笔记:
- 替换
your-organization使用您的GitHub组织或供应商名称。示例homepage,support和authors在composer.json也应该更新以匹配您的项目。 - 在Packagist上发布后,消费者可以直接要求包装
composer require your-organization/processwire-mcp-server.
快速设置(在作曲家要求后)
一旦项目中需要该包,助手命令就会通过以下方式公开 vendor/bin/pw-mcp. 使用这些来构建编辑器帮助文件,并运行或发现打包的MCP服务器:
# create a simple editor helper file in the current project
vendor/bin/pw-mcp install
# run the server using stdio transport
vendor/bin/pw-mcp run --transport=stdio
# discover available tools (printed to stdout)
vendor/bin/pw-mcp discover还安装了Composer脚本(需要此软件包后,您的项目中即可使用):
composer setup # run vendor/bin/pw-mcp install
composer start # run vendor/bin/pw-mcp run --transport=stdio
composer discover # run vendor/bin/pw-mcp discover安装程序选项
这 install helper支持一些方便标记,可以将编辑器代码段和示例配置写入您的项目中:
--vscode--写.mcp.json和助手.vscode/launch.json+.vscode/tasks.json配置为运行vendor/bin/pw-mcp.--phpstorm--写a.phpstorm-mcp.jsonJetBrains编辑器的示例文件,指向vendor/bin/pw-mcp.--all--编写VS Code和PhpStorm示例。--force--运行安装程序时覆盖任何现有文件。
示例:
# create editor helper + VS Code integration files
vendor/bin/pw-mcp install --vscode
# write both vscode and phpstorm samples, overwrite existing files
vendor/bin/pw-mcp install --all --force向Packagist发布
- 创建一个GitHub存储库(或其他公共VCS)并将此项目推送到那里。
- 创建Packagist帐户并提交存储库URL。
- Packagist索引仓库后,您可以要求使用
composer require your-organization/processwire-mcp-server.
如果您不希望公开发布包,则使用VCS或路径存储库(如上所述)是团队和CI管道的常见替代方案。
测试
composer test安全说明
下一步行动
已实施的工具组(示例):
- $page工具:get_current_page、get_page_parent、get_page_children、get_page_template、get_page_fields、update_page_field
- $pages工具:get_page_by_id、get_page_by-path、find_pages、create_page、update_page_fields、delete_page、duplicate_page、move_page
- $user工具:get_current_user、list_users、create_user、update_user_fields、change_user_password、delete_user、add_role_to_user、remove_role_from_user
还实施了工具组(示例):
- $输入工具:get_query_param、get_post_param、get_cookie_param、get_url_segment、get_page_number
- $sanctizer工具:sanctize_text、sanctize_int、sanctice_float、sanctive_email、sanitize_url、sanitive_boolean、sanitized_date
- $session工具:get_session_variable、set_session_varable、remove_session_vatable、login_user、logout_user、is_user_logged_in、redirect_to
