AI代理系统知识注册

Spine是一个存储微服务架构结构化知识(服务、数据库模式、队列合约、API)并通过REST API和MCP暴露给AI代理查询的系统知识注册中心。

  • by RomanSavh
  • Rust
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 RomanSavh/spine

使用说明

脊柱

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+MCP
  • spine-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-grpc

Docker镜像

每次发布时发布到GitHub容器注册表:

ghcr.io/romansavh/spine:latest
ghcr.io/romansavh/spine-embed:latest