Token导航 LogoToken导航

MCP Server · 开发工具

Silverstripe MCP

一个实时验证AI助手生成的Silverstripe 6 PHP代码的服务,用于捕获从Silverstripe 5到6的常见迁移问题。

未说明官方级别未说明来源级核验工具 1
PHPClaude开发工具

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
sandervanscheepen
提供方
sandervanscheepen

工具数量

1

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

4

仓库热度

收录来源

1 个

MCP World

选型结论

Silverstripe MCP 属于开发工具类 MCP Server,公开资料标注 1 个工具,通过传输方式未标注接入,适配 Claude,没有现成的安装命令;接入前先确认权限范围。

分类

开发工具

传输方式

未说明

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 1 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

Silverstripe MCP服务器

A. 模型上下文协议 当AI助手生成Silverstripe 6 PHP代码时,提供实时验证反馈的服务器。在从Silverstripe 5到6的常见迁移问题到达您的代码库之前捕获它们。

文档: 建筑 | 代理指令设置

问题

当在Silverstripe 6项目中使用Claude Code等AI编码助手时,它们通常会生成具有过时模式的代码:

// AI generates this (SS5 style):
use SilverStripe\ORM\ArrayList;
use SilverStripe\View\ArrayData;

class MyTask extends BuildTask {
    public function run(HTTPRequest $request) {
        echo "Processing...";
    }
}

此MCP服务器会立即发现这些问题,使AI能够自我纠正:

// After validation, AI generates this (SS6 style):
use SilverStripe\Model\List\ArrayList;
use SilverStripe\Model\ArrayData;

class MyTask extends BuildTask {
    protected static string $commandName = 'my-task';

    protected function execute(InputInterface $input, PolyOutput $output): int {
        $output->writeln('Processing...');
        return Command::SUCCESS;
    }
}

运作原理

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  AI generates   │────▶│  MCP validates  │────▶│  AI fixes and   │
│  PHP code       │     │  against SS6    │     │  re-validates   │
└─────────────────┘     └─────────────────┘     └─────────────────┘
                               │
                               ▼
                        ┌─────────────────┐
                        │  PHP Analyzer   │
                        │  (AST-based)    │
                        └─────────────────┘
                               │
                   ┌───────────┴───────────┐
                   ▼                       ▼
            ┌─────────────┐         ┌─────────────┐
            │  Namespace  │         │  BuildTask  │
            │  Validator  │         │  Validator  │
            └─────────────┘         └─────────────┘

服务器公开了一个 ss-validator 该工具:

  1. 将PHP代码解析为抽象语法树(AST)
  2. 对代码运行基于插件的验证器
  3. 返回行号问题和建议修复
  4. AI迭代,直到没有问题为止

快速开始

安装

git clone https://github.com/sandervanscheepen/silverstripe-mcp
cd silverstripe-mcp

# Install dependencies
npm install
cd php && composer install && cd ..

# Build
npm run build

然后添加到您的MCP客户端(例如,Claude Code):

claude mcp add silverstripe-mcp -- node /path/to/silverstripe-mcp/dist/index.js

或者添加到您的MCP客户端配置文件中:

{
  "mcpServers": {
    "silverstripe": {
      "command": "node",
      "args": ["/path/to/silverstripe-mcp/dist/index.js"]
    }
  }
}

代理指令设置

为了充分利用此MCP服务器,请在AI代理的项目指令文件中添加指令(例如。, CLAUDE.md, .cursorrules, .github/copilot-instructions.md)告诉它使用 ss-validator 工具上所有生成的PHP代码。看 推荐代理说明 对于完整、最小和特定于项目的模板,您可以将其复制到项目中。

内置验证器

命名空间验证器

检测过时的Silverstripe 5导入,并建议其Silverstripe 6等效物:

SS5命名空间SS6命名空间
SilverStripe\ORM\ArrayListSilverStripe\Model\List\ArrayList
SilverStripe\ORM\PaginatedListSilverStripe\Model\List\PaginatedList
SilverStripe\ORM\MapSilverStripe\Model\List\Map
SilverStripe\ORM\GroupedListSilverStripe\Model\List\GroupedList
SilverStripe\View\ArrayDataSilverStripe\Model\ArrayData
SilverStripe\View\ViewableDataSilverStripe\Model\ModelData
SilverStripe\ORM\ValidationResultSilverStripe\Core\Validation\ValidationResult
SilverStripe\ORM\ValidationExceptionSilverStripe\Core\Validation\ValidationException

构建任务验证器

检测需要迁移到PolyCommand的旧BuildTask模式:

问题检测建议
弃用的方法签名run(HTTPRequest $request)execute(InputInterface $input, PolyOutput $output): int
缺少命令名否 $commandName 财产protected static string $commandName = 'my-task';
通过回声输出echo "..."$output->writeln('...')
通过打印输出print "..."$output->writeln('...')

FormField值验证器

检测以下内容的使用情况 FormField::Value() 在SS6中分为三种方法:

// Detects this:
$value = $field->Value();

// Suggests using one of:
$value = $field->dataValue();       // Raw data value
$value = $field->presentedValue();  // Value for display
$value = $field->processedValue();  // Value after form processing

已删除方法验证器

检测对Silverstripe 6中删除的方法的调用:

删除方法建议
Controller::has_curr()使用 Controller::curr() 用try/catch
DataObject::getCMSValidator()使用 getCMSCompositeValidator() 相反
Requirements::themedCSS()使用 Requirements::css() 使用ThemeResourceLoader
Requirements::themedJavascript()使用 Requirements::javascript() 使用ThemeResourceLoader
Object::useCustomClass()改用喷油器配置

不推荐配置API(deprecated-config)

检测弃用的使用情况 Config::inst()->get() 图案:

// Detects this:
$value = Config::inst()->get('SilverStripe\CMS\Model\SiteTree', 'allowed_children');

// Suggests this:
$value = SiteTree::config()->get('allowed_children');

上下文感知验证器

以下验证器根据代码上下文自动启用,在分析不需要它们的代码时将开销降至最低:

延长钩可见性(extension-hook-visibility)

在以下情况下自动启用: 类扩展 Extension, DataExtension,或 SiteTreeExtension

SS6改变了许多延长钩方法 protected.检测扩展类中的公共钩子:

class MyExtension extends DataExtension {
    // Detects: should be protected
    public function onBeforeWrite() { }
    public function updateCMSFields($fields) { }
}

可配置前缀: onBefore, onAfter, update, augment (通过添加更多 additionalPrefixes).

元素命名空间(elemental-namespace)

在以下情况下自动启用: 任何导入都以开头 DNADesign\Elemental

对于使用 dnadesign/silverstripe-elemental。检测Elemental 6中的命名空间更改:

SS5命名空间SS6命名空间
DNADesign\Elemental\TopPage\DataExtensionDNADesign\Elemental\Extensions\TopPageElementExtension
DNADesign\Elemental\TopPage\FluentExtensionDNADesign\Elemental\Extensions\TopPageFluentElementExtension
DNADesign\Elemental\TopPage\SiteTreeExtensionDNADesign\Elemental\Extensions\TopPageSiteTreeExtension
DNADesign\Elemental\Controllers\ElementSiteTreeFilterSearchDNADesign\Elemental\ORM\Search\ElementalSiteTreeSearchContext

还可以检测已删除的类(GraphQL、ElementalLeft和MainExtension等)。

强制所有插件

要强制启用所有验证器,无论上下文如何:

通过配置(silverstripe-mcp.json):

{
  "enableAllPlugins": true
}

通过工具论证:

{
  "code": "=8.3)
1. **自动检测**:常见位置(Laragon、XAMPP、Homebrew、系统路径)
1. **系统PHP**:回落到 `php` 命令(如果版本>=8.3)

如果您的系统PHP低于8.3,请在配置中指定路径:

{ "phpBinary": "C:/laragon/bin/php/php-8.3.22-Win32-vs16-x64/php.exe" }


或设置 `PHP_BINARY` MCP客户端配置中的环境变量:

{ "mcpServers": { "silverstripe": { "command": "node", "args": ["/path/to/silverstripe-mcp/dist/index.js"], "env": { "PHP_BINARY": "/usr/local/bin/php8.3" } } } }


## 编写自定义插件

创建一个PHP类来实现 `ValidatorPluginInterface`:

name->toString();

if ($methodName === 'deprecatedMethod') { $this->context->addIssue(new Issue( type: 'deprecated_method', message: 'deprecatedMethod() is deprecated in SS6', line: $node->getLine(), suggestion: 'Use newMethod() instead', docsUrl: 'https://docs.silverstripe.org/...' )); } } return null; } }; } }

// Return the class name for auto-loading return DeprecatedMethodPlugin::class;


在您的配置中注册:

{ "customPlugins": [ "./plugins/DeprecatedMethodPlugin.php" ], "plugins": { "deprecated-method-validator": { "enabled": true } } }


## 测试

该项目包括针对PHP和TypeScript的全面测试套件:

Run PHP tests (PHPUnit)

cd php && composer test

Run TypeScript tests (Vitest)

npm test

Run all tests

npm run test:all

Watch mode for development

npm run test:watch


## 项目结构

silverstripe-mcp/ ├── src/ # TypeScript MCP server │ ├── index.ts # Entry point, stdio transport │ ├── tools/ │ │ └── ss-validator.ts # Main validation tool │ └── lib/ │ └── php-bridge.ts # PHP subprocess communication │ ├── php/ # PHP analyzer │ ├── bin/ │ │ └── analyze # CLI entry point │ ├── src/ │ │ ├── AnalyzerRunner.php # Plugin orchestration │ │ ├── AnalysisContext.php # Shared analysis state │ │ ├── Issue.php # Issue data structure │ │ ├── Contracts/ │ │ │ └── ValidatorPluginInterface.php │ │ ├── Plugins/ # Validator plugins │ │ │ ├── NamespaceValidatorPlugin.php (core) │ │ │ ├── BuildTaskValidatorPlugin.php (core) │ │ │ ├── FormFieldValuePlugin.php (core) │ │ │ ├── RemovedMethodPlugin.php (core) │ │ │ ├── HookRenamePlugin.php (core) │ │ │ ├── DeprecatedConfigPlugin.php (core) │ │ │ ├── ExtensionHookVisibilityPlugin.php (auto: Extension classes) │ │ │ └── ElementalNamespacePlugin.php (auto: Elemental imports) │ │ └── Config/ │ │ ├── namespace-mappings.php │ │ ├── removed-methods.php │ │ ├── hook-renames.php │ │ └── elemental-mappings.php │ └── tests/ # PHPUnit tests │ ├── tests/ # Vitest tests │ ├── php-bridge.test.ts │ ├── ss-validator.test.ts │ └── fixtures/ │ ├── docs/ │ ├── architecture.md # Technical architecture │ └── recommended-agent-instructions.md # Setup for AI agents ├── silverstripe-mcp.example.json # Example configuration ├── CLAUDE.md # Development instructions └── README.md


## 发展

Build and watch for changes

npm run dev

Test PHP analyzer directly

cd php && php bin/analyze '{"code": "<?php use SilverStripe\\ORM\\ArrayList;"}'

Example output:

{ "issues": [{ "type": "deprecated_import", "message": "'SilverStripe\\ORM\\ArrayList' has moved to 'SilverStripe\\Model\\List\\ArrayList' in Silverstripe 6", "line": 1, "suggestion": "use SilverStripe\\Model\\List\\ArrayList;", "docsUrl": "https://docs.silverstripe.org/en/6/changelogs/6.0.0/#renamed-classes" }], "suggestions": [], "rerun": true }


看 [贡献.md](./CONTRIBUTING.md) 详细的开发说明。

## 需求

- **Node.js** 18.0或更高
- **PHP** 8.3或更高
- **作曲家** 用于PHP依赖管理

## 贡献

欢迎投稿!看 [贡献.md](./CONTRIBUTING.md) 了解开发设置、架构细节和测试指南。

## 学分

- 灵感来自 [Svelte MCP服务器](https://github.com/sveltejs/mcp) 它为Svelte 5提供了类似的功能
- 内置于 [nikic/php解析器](https://github.com/nikic/PHP-Parser) 用于稳健的AST分析
- 使用 [模型上下文协议](https://modelcontextprotocol.io/) 规格

## 许可证

MIT许可证-请参阅 [许可证](./LICENSE) 了解详情。

工具与能力

工具数量

1

资源数量

0

提示词数量

0

能力标签

PHP本地部署代码验证SilverstripeAI辅助编程迁移工具

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

让助手直接读代码

把仓库、提交记录和 issue 交给模型检索,补全和重构时不用来回复制文件。

在对话里跑命令

触发构建、测试和脚本,执行结果直接回到上下文,省去切终端。

接进开发流程

把 PR、CI 状态和代码审查接进助手,减少在几个工具之间跳。

选择建议

值得选的地方

  • 只提供 1 个工具,职责集中,接入后不容易误操作。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在开发工具场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Silverstripe MCP

MCP World · 本页

1未说明未标注1 个2026-05-17
Git 838e2ec1

MCP World

12stdio有2 个2026-05-17
Markitdown MCP 2c653a5f

MCP World

1stdio有1 个2026-05-17
Context7 MCP C671e75a

MCP World

0stdio有1 个2026-05-17
Context7 831acf40

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Silverstripe MCP 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

Silverstripe MCP 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Silverstripe MCP 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Silverstripe MCP 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

Silverstripe MCP 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP