这是一个基于Model Context Protocol (MCP) 的服务器,提供对PatternFly React开发规则和文档的访问,使用Node.js和TypeScript构建。
Model Context Protocol (MCP) 是一个开放标准,使AI助手能够安全地访问外部数据源和工具。此服务器提供了一种标准化的方法,以向兼容MCP的客户端暴露PatternFly文档和开发规则。
npm install
npm run build
npm run start:dev
npx @patternfly/patternfly-mcp
或者在项目中本地安装并运行:
npm install @patternfly/patternfly-mcp
npx @patternfly/patternfly-mcp
这些是最相关的NPM脚本,来自package.json:
build:构建TypeScript项目(清理dist,进行类型检查,打包)build:clean:删除distbuild:watch:监视模式下构建start:运行已构建的服务器(node dist/index.js)start:dev:监视模式下运行(开发)test:运行linting、类型检查和src/中的单元测试test:dev:Jest监视模式下的单元测试test:integration:构建并运行tests/中的集成测试test:integration-dev:集成测试的监视模式test:lint:运行ESLint(代码质量检查)test:lint-fix:运行ESLint自动修复test:types:仅进行TypeScript类型检查(不生成)MCP服务器通过stdio通信,并通过以下工具提供对PatternFly文档的访问。这两个工具接受名为urlList的参数,该参数必须是一个字符串数组。每个字符串可以是:
返回内容格式:
urlList中的每一项,服务器加载其内容,在内容前加上类似# 来自<解析路径或URL>的文档的标题,并使用分隔符\n\n---\n\n连接多个条目。用于获取高层次索引内容(例如,包含相关链接的本地README.md文件,或在docs-host模式下的llms.txt文件)。从这些内容中,你可以选择特定的URL传递给fetchDocs。
参数:
urlList:string[](必需)响应(tools/call):
在通过usePatternFlyDocs识别出它们之后,用于获取一个或多个特定的文档页面(例如,具体的设计指南或可访问性页面)。
参数:
urlList:string[](必需)响应(tools/call):
如果你使用--docs-host标志运行服务器,传入urlList中的本地路径将相对于仓库根目录下的llms-files文件夹解析。当你有预编好的本地llms.txt文件时,这很有用。
示例:
npx @patternfly/patternfly-mcp --docs-host
然后,传入如react-core/6.0.0/llms.txt这样的本地路径到urlList将从llms-files/react-core/6.0.0/llms.txt加载。
大多数MCP客户端使用JSON配置来指定如何启动此服务器。服务器本身只读取命令行标志和环境变量,而不是JSON配置。以下是你可以适应自己MCP客户端的例子。
{
"mcpServers": {
"patternfly-docs": {
"command": "npx",
"args": ["-y", "@patternfly/patternfly-mcp@latest"],
"description": "PatternFly React开发规则和文档"
}
}
}
{
"mcpServers": {
"patternfly-docs": {
"command": "npx",
"args": ["-y", "@patternfly/patternfly-mcp@latest", "--docs-host"],
"description": "PatternFly文档(docs-host模式)"
}
}
}
{
"mcpServers": {
"patternfly-docs": {
"command": "node",
"args": ["dist/index.js"],
"cwd": "/path/to/patternfly-mcp",
"description": "PatternFly文档(本地构建)"
}
}
}
注意:参数名称是urlList,它必须是一个字符串数组的JSON。
usePatternFlyDocs(示例使用本地README):
npx @modelcontextprotocol/inspector-cli \
--config ./mcp-config.json \
--server patternfly-docs \
--cli \
--method tools/call \
--tool-name usePatternFlyDocs \
--tool-arg urlList='["documentation/guidelines/README.md"]'
fetchDocs(示例使用外部URL):
npx @modelcontextprotocol/inspector-cli \
--config ./mcp-config.json \
--server patternfly-docs \
--cli \
--method tools/call \
--tool-name fetchDocs \
--tool-arg urlList='[
"https://raw.githubusercontent.com/patternfly/patternfly-org/refs/heads/main/packages/documentation-site/patternfly-docs/content/design-guidelines/components/about-modal/about-modal.md",
"https://raw.githubusercontent.com/patternfly/patternfly-org/refs/heads/main/packages/documentation-site/patternfly-docs/content/accessibility/components/about-modal/about-modal.md"
]'
componentSchemas(获取组件JSON模式):
npx @modelcontextprotocol/inspector-cli \
--config ./mcp-config.json \
--server patternfly-docs \
--cli \
--method tools/call \
--tool-name componentSchemas \
--tool-arg componentName='Button'
clearCache工具。该包通过start()函数提供了程序化访问:
import { start, main, type CliOptions, type ServerInstance } from '@patternfly/patternfly-mcp';
// 使用默认选项(相当于无标志的CLI)
const server = await start();
// 程序化覆盖CLI选项
const serverWithOptions = await start({ docsHost: true });
// 可覆盖多个选项
const customServer = await start({
docsHost: true,
// 未来CLI选项可添加于此
});
// TypeScript用户可以使用CliOptions类型确保类型安全
const options: Partial<CliOptions> = { docsHost: true };
const typedServer = await start(options);
// 服务器实例提供关闭控制
console.log('服务器运行中:', server.isRunning()); // true
// 平稳关闭
await server.stop();
console.log('服务器运行中:', server.isRunning()); // false
start()函数返回一个ServerInstance对象,具有以下方法:
interface ServerInstance {
/**
* 平稳关闭服务器
*/
stop(): Promise<void>;
/**
* 检查服务器是否正在运行
*/
isRunning(): boolean;
}
使用示例:
const server = await start();
// 检查服务器是否正在运行
if (server.isRunning()) {
console.log('服务器活跃');
}
// 平稳关闭
await server.stop();
// 验证关闭
console.log('服务器运行中:', server.isRunning()); // false
对于提供的每个路径或URL,服务器返回一个部分:
# 来自<解析路径或URL>的文档\n\n---\n\n连接这使得在提供多个输入时更容易看到每块内容的来源。
要使此包可通过npx使用,你需要将其发布到npm:
npm login
npm version patch # 或 minor/major
npm publish
发布后,用户可以通过以下方式运行你的MCP服务器:
npx @patternfly/patternfly-mcp
MIT许可证 - 详情见LICENSE文件。