脊柱
AI代理的系统知识注册表。
Spine存储有关微服务架构的结构化知识-服务、数据库架构、队列契约、gRPC/HTTP API-并通过REST API和MCP公开这些知识。AI代理在做出决策之前会查询Spine以了解系统。
特性
- REST API 对服务、表、队列、原型合约、HTTP合约进行完整的CRUD操作
- MCP服务器 (SSE/HTTP),配备12个AI代理消费工具
- 语义搜索 通过嵌入(nomic-embed-ext-v1.5)
- 依赖图 源自服务关系
- 上下文端点 --在一个电话中获取有关服务的所有信息
- Swagger 用户界面 在
/swagger-ui/ - SQLite 存储
快速开始
Docker Compose
docker compose up这将启动两个容器:
spine(锈蚀)-端口3000上的API+MCPspine-embed(Python)——嵌入服务
嵌入模型在首次启动时下载(约500MB),并缓存在Docker卷中。
来自源头
# Start the embedding service
cd embed-service
pip install -r requirements.txt
uvicorn main:app --port 8000 &
# Start Spine
cargo run配置
| 变量 | 默认值 | 描述 |
|---|---|---|
SPINE_PORT | 3000 | HTTP服务器端口 |
SPINE_DB_PATH | spine.db | SQLite数据库路径 |
SPINE_EMBED_URL | http://localhost:8000 | 嵌入服务URL |
API
端点
| 方法 | 路径 | 描述 |
|---|---|---|
| 得到 | /services | 列出服务 |
| 获取/发布 | /services/{name} | 获取/创建/更新/删除服务 |
| 得到 | /tables | 列出表格 |
| 获取/发布 | /tables/{name} | 获取/创建/更新/删除表 |
| 得到 | /queues | 列出队列合同 |
| 获取/发布 | /queues/{name} | 获取/创建/更新/删除队列 |
| 得到 | /protos/{server} | 获取原型合同 |
| 得到 | /http-contracts/{service} | 获取HTTP合约 |
| 得到 | /graph/dependencies/{service} | 服务依赖关系图 |
| 得到 | /search?q=...&type=... | 语义搜索 |
| 得到 | /context/{service} | 捆绑服务上下文 |
| 得到 | /health | 健康检查 |
API完整文档,网址: /swagger-ui/.
主控程序
MCP端点位于 /mcp (流式HTTP/SSE传输)。
阅读工具: list_services, get_service, list_tables, get_table, list_queues, get_queue, get_proto, get_http_contract, get_context, get_dependencies, search.
写入工具: register_service, update_service, delete_service, register_table, update_table, delete_table, register_queue, update_queue, delete_queue, register_proto, update_proto, delete_proto, register_http_contract, update_http_contract, delete_http_contract.
看 MCP.md 完整规格。
从任何MCP客户端连接:
{
"mcpServers": {
"spine": {
"url": "http://localhost:3000/mcp"
}
}
}示例
# Create a service
curl -X POST http://localhost:3000/services \
-H 'Content-Type: application/json' \
-d '{
"name": "users-grpc",
"description": "User management service",
"grpc_servers": ["UsersGrpcService"],
"queue_publishers": ["user-registered"],
"tables": ["users"]
}'
# Create a table
curl -X POST http://localhost:3000/tables \
-H 'Content-Type: application/json' \
-d '{
"name": "users",
"database": "users-db",
"owner": "users-grpc",
"description": "User accounts",
"ddl": "CREATE TABLE users (id UUID PRIMARY KEY, email TEXT NOT NULL);"
}'
# Get full context
curl http://localhost:3000/context/users-grpc
# Search
curl "http://localhost:3000/search?q=user+registration"
# Dependency graph
curl http://localhost:3000/graph/dependencies/users-grpcDocker镜像
每次发布时发布到GitHub容器注册表:
ghcr.io/romansavh/spine:latest
ghcr.io/romansavh/spine-embed:latest