这是一个生产就绪的企业级模型上下文协议(MCP)服务器,它将 Backstage 目录 API 作为大型语言模型(LLMs)的工具。该服务器具有全面的操作透明性、跨平台兼容性和自动错误恢复功能。
这使得 LLM 可以通过标准化协议与 Backstage 软件目录进行交互,并具备企业级的可靠性和监控功能。
get_entity_by_ref - 根据引用获取单个实体get_entities - 使用过滤器查询实体get_entities_by_query - 具有排序功能的高级实体查询get_entities_by_refs - 根据引用获取多个实体get_entity_ancestors - 获取实体祖先树get_entity_facets - 获取实体面统计信息get_location_by_ref - 根据引用获取位置get_location_by_entity - 获取与实体关联的位置add_location - 创建新位置remove_location_by_id - 删除位置refresh_entity - 触发实体刷新remove_entity_by_uid - 根据 UID 删除实体validate_entity - 验证实体结构克隆仓库:
git clone https://github.com/Coderrob/backstage-mcp-server.git
cd backstage-mcp-server
安装依赖:
yarn install
构建并验证项目:
yarn build:validate
或手动构建:
yarn build
(可选)运行依赖分析:
yarn deps:analyze
服务器需要环境变量来访问 Backstage API:
BACKSTAGE_BASE_URL - Backstage 实例的基本 URL(例如,https://backstage.example.com)选择以下认证方法之一:
BACKSTAGE_TOKEN - API 访问的 Bearer 令牌BACKSTAGE_CLIENT_ID, BACKSTAGE_CLIENT_SECRET, BACKSTAGE_TOKEN_URL - OAuth 凭证BACKSTAGE_API_KEY - API 密钥认证BACKSTAGE_SERVICE_ACCOUNT_KEY - 服务账户密钥export BACKSTAGE_BASE_URL=https://backstage.example.com
export BACKSTAGE_TOKEN=your-auth-token-here
yarn start
服务器将启动并监听标准输入/输出上的 MCP 协议消息。
此服务器设计用于与兼容 MCP 的客户端一起工作。配置您的 MCP 客户端以使用此服务器:
{
"mcpServers": {
"backstage": {
"command": "node",
"args": ["dist/index.js"],
"env": {
"BACKSTAGE_BASE_URL": "https://your-backstage-instance.com",
"BACKSTAGE_TOKEN": "your-backstage-token"
}
}
}
}
在 NPM 发布后进行全局安装:
{
"mcpServers": {
"backstage": {
"command": "backstage-mcp-server",
"env": {
"BACKSTAGE_BASE_URL": "https://your-backstage-instance.com",
"BACKSTAGE_TOKEN": "your-backstage-token"
}
}
}
}
一旦连接,LLM 可以使用自然语言与 Backstage 进行交互:
用户:"显示目录中的所有服务"
LLM:使用带有适当过滤器的 get_entities 工具
用户:"用户服务实体的位置是什么?"
LLM:使用 get_location_by_entity 工具
所有工具接受由其 Zod 模式定义的参数。实体引用可以提供为:
"component:default/user-service"{ kind: "component", namespace: "default", name: "user-service" }所有工具返回具有以下结构的 JSON 响应:
{
"status": "success" | "error",
"data": <结果>
}
src/
├── api/ # Backstage API 客户端
├── auth/ # 认证和安全性
├── cache/ # 缓存层
├── decorators/ # 工具装饰器
├── tools/ # MCP 工具实现
├── types/ # 类型定义和常量
├── utils/ # 工具函数
└── index.ts # 主服务器入口点
scripts/
├── validate-build.sh # 带有操作透明性的构建验证
├── dependency-manager.sh # 带有跨平台支持的依赖分析
├── deps-crossplatform.sh # 跨平台依赖操作
├── monitor.sh # 系统监控和健康检查
└── deps.sh # 遗留依赖脚本
docs/
├── OPERATIONAL_TRANSPARENCY.md # 操作透明文档
├── DEPENDENCY_GUIDE.md # 依赖管理指南
├── EDGE_CASES_SUMMARY.md # 边缘情况和跨平台考虑
└── BUILD_SETUP.md # 构建系统文档
yarn build
构建系统使用 Rollup 创建针对 CommonJS 和 ESM 格式的优化捆绑包:
dist/index.cjs - 带有 shebang 的 CommonJS 捆绑包,用于 CLI 使用dist/index.mjs - ESM 捆绑包dist/index.d.ts - TypeScript 声明该包已配置为发布到 NPM:
npm publish
发布后,服务器可以全局安装:
npm install -g @coderrob/backstage-mcp-server
backstage-mcp-server
此 MCP 服务器包括全面的操作透明性和企业级特性:
# 检查系统健康
yarn monitor:health
# 查看监控仪表板
yarn monitor:dashboard
# 检查警报
yarn monitor:alerts
# 分析依赖
yarn deps:analyze
# 验证依赖健康
yarn deps:validate
# 跨平台依赖操作
yarn deps:crossplatform
# 综合构建验证
yarn build:validate
# 开发构建
yarn build:dev
# 监视模式
yarn build:watch
yarn test
yarn lint
src/tools/ 中创建一个新的工具文件@Tool 装饰器实现工具类src/tools/index.ts 导出示例:
@Tool({
name: 'my_tool',
description: '我的工具描述',
paramsSchema: z.object({ param: z.string() }),
})
export class MyTool {
static async execute({ param }, context) {
// 实现
return JsonToTextResponse({ status: 'success', data: 结果 });
}
}
我们欢迎贡献!请参阅我们的贡献指南,并确保所有更改都包含适当的测试。
yarn build:validate && yarn deps:analyze本项目根据 GPLv3 许可证授权 - 详情见 LICENSE 文件。
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
const client = new Client(
{
name: 'example-client',
version: '1.0.0',
},
{
capabilities: {},
}
);
// 连接到 Backstage MCP 服务器
await client.connect(new StdioServerTransport(process));
// 列出可用工具
const tools = await client.request({ method: 'tools/list' });
console.log('可用工具:', tools);
// 调用工具
const result = await client.request({
method: 'tools/call',
params: {
name: 'get_entity_by_ref',
arguments: {
entityRef: 'component:default/my-component',
},
},
});
console.log('工具结果:', result);