AI特征存储服务

Synthesis是一个为个人用户和中小型企业设计的AI特征存储服务,提供向量搜索、图查询和REST API等功能。

  • by prismon
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 prismon/mcp-feature-store

使用说明

合成-MCP功能库

Synthesis是AI系统的一种工具,它充当 中枢神经系统 适用于个人用户和中小型公司。此实现是作为 Go中的MCP服务器 由...支持 PostgreSQL 具有矢量和图形功能。

特性

  • MCP服务器:内置 github.com/mark3labs/mcp-go 用于AI代理集成
  • PostgreSQL后端:增强了用于嵌入的pgvector和用于图查询的Apache AGE
  • 领域模型:支持租户、库、笔记本、功能、类型、产品和工具
  • 矢量搜索:使用pgvector的语义搜索功能
  • 图形查询:使用Apache AGE进行关系遍历
  • REST API:用于非MCP客户端的传统HTTP API
  • Docker支持:使用docker compose实现完全容器化

建筑

synthesis/
├── cmd/
│   ├── synthesis-mcp/     # MCP server (stdio transport)
│   └── synthesis-api/     # REST API server
├── internal/
│   ├── config/            # Configuration management
│   ├── domain/            # Domain models (Tenant, Library, Notebook, etc.)
│   ├── postgres/          # Database layer (repositories, migrations)
│   ├── mcp/               # MCP server implementation
│   └── rest/              # REST API handlers
├── db/
│   └── migrations/        # SQL migration scripts
├── deployments/
│   ├── Dockerfile.postgres  # PostgreSQL with pgvector + AGE
│   └── init-extensions.sql  # Extension initialization
├── Dockerfile             # Application Dockerfile
└── docker-compose.yml     # Local development stack

技术栈

  • 语言:转到1.22
  • MCP库:github/mark3labs/mcp-go
  • 数据库:PostgreSQL 16
    • pgvector:向量嵌入和相似性搜索
    • Apache AGE:图形数据库功能
  • HTTP框架:大猩猩Mux
  • 授权(计划中):OIDC+OPA

快速开始

先决条件

  • Docker和Docker Compose
  • Go 1.22+(用于当地发展)

使用Docker Compose(推荐)

  1. 克隆存储库:

    git clone <repository-url>
    cd mcp-feature-store
    
  2. 启动堆栈:

    docker-compose up -d
    

    这将开始:

    • 带有pgvector和Apache AGE的PostgreSQL(端口5432)
    • 综合MCP服务器(stdio传输)
    • 合成REST API(端口8080)
    • 开放策略代理(端口8181)
  3. 检查日志:

    docker-compose logs -f synthesis-api
    docker-compose logs -f synthesis-mcp
    
  4. 测试REST API:

    curl http://localhost:8080/health
    

在当地建设

  1. 安装依赖项:

    go mod download
    
  2. 生成二进制文件:

    go build -o bin/synthesis-mcp ./cmd/synthesis-mcp
    go build -o bin/synthesis-api ./cmd/synthesis-api
    
  3. 启动PostgreSQL (使用docker):

    docker-compose up -d postgres
    
  4. 运行服务器:

    # Terminal 1 - MCP Server
    export DATABASE_URL="postgres://synthesis:synthesis_dev_password@localhost:5432/synthesis?sslmode=disable"
    ./bin/synthesis-mcp
    
    # Terminal 2 - REST API
    export DATABASE_URL="postgres://synthesis:synthesis_dev_password@localhost:5432/synthesis?sslmode=disable"
    ./bin/synthesis-api
    

配置

配置是通过环境变量完成的:

数据库

  • DATABASE_URL:PostgreSQL连接字符串
  • DB_MAX_OPEN_CONNS:最大打开连接数(默认值:25)
  • DB_MAX_IDLE_CONNS:最大空闲连接数(默认值:5)
  • DB_CONN_MAX_LIFETIME:连接最大生存期(秒)(默认值:300)

MCP服务器

  • MCP_HTTP_PORT:MCP服务器的HTTP端口(默认值:8081)
  • LOG_LEVEL:日志级别(默认值:info)

REST API

  • API_PORT:REST API端口(默认值:8080)
  • WS_PORT:WebSocket端口(默认值:8082)

安全(计划)

  • OIDC_ISSUER_URL:OIDC发行人URL
  • OIDC_CLIENT_ID:OIDC客户端ID
  • OPA_URL:OPA服务器URL(默认值:http://localhost:8181)

领域模型

租户

具有所有者、显示名称、标签和版本控制的顶级组织单位。

图书馆

租户内部笔记本的收集。

笔记本

主要可编辑元素,包括:

  • Markdown内容
  • 分层内容块(文本、图像等)
  • 状态跟踪(草案,已批准)
  • 通知

特性

与资源相关的衍生数据:

  • 文本、JSON、图像、结构化值
  • TTL支持
  • 资源关联

类型定义

包含呈现器、编辑器和约束的内容类型定义。

产品

与租户相关的商业产品。

工具

外部工具/集成配置。

MCP工具

MCP服务器公开了以下工具:

租户工具

  • create_tenant:创建新租户
  • get_tenant:检索租户信息

库工具

  • create_library:在租户中创建库

笔记本工具

  • create_notebook:在库中创建笔记本
  • append_content_block:将内容块添加到笔记本

搜索工具

  • semantic_search_notebooks:基于向量的语义搜索
  • graph_query_resources:基于图形的关系查询

REST API端点

租户

  • GET /api/v1/tenants -列出所有租户
  • POST /api/v1/tenants -创建租户
  • GET /api/v1/tenants/:id -按ID获取租户
  • PUT /api/v1/tenants/:id -更新租户
  • DELETE /api/v1/tenants/:id -删除租户

图书馆

  • GET /api/v1/libraries/by-tenant/:tenantId -列出库
  • POST /api/v1/libraries/by-tenant/:tenantId -创建库
  • GET /api/v1/libraries/:id -获取库
  • PUT /api/v1/libraries/:id -更新库
  • DELETE /api/v1/libraries/:id -删除库

笔记本

  • GET /api/v1/notebooks/by-library/:libraryId -列出笔记本
  • POST /api/v1/notebooks/by-library/:libraryId -创建笔记本
  • GET /api/v1/notebooks/:id -获取笔记本
  • PUT /api/v1/notebooks/:id -更新笔记本
  • DELETE /api/v1/notebooks/:id -删除笔记本

健康

  • GET /health -健康检查端点

数据库模式

数据库包括:

  • 所有域实体的核心关系表
  • 语义搜索的向量嵌入表
  • 使用Apache AGE进行关系查询的图结构
  • 用于快速URI解析的资源索引
  • 图形同步的自动触发器

看 db/migrations/ 以获取完整的模式定义。

发展

运行测试

go test ./...

数据库迁移

启动时会自动应用迁移。迁移文件位于 db/migrations/:

  • 001_create_schema.sql -核心关系模式
  • 002_create_graph_schema.sql -Apache AGE图形设置
  • 003_seed_data.sql -测试样本数据

添加新工具

  1. 在中创建工具定义 internal/mcp/tools_*.go:

    func myNewTool() mcp.Tool {
        return mcp.Tool{
            Name: "my_new_tool",
            Description: "Description of the tool",
            InputSchema: mcp.ToolInputSchema{
                // Schema definition
            },
        }
    }
    
  2. 机具处理程序:

    func (s *Server) handleMyNewTool(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
        // Implementation
    }
    
  3. 注册 server.go:

    s.mcpServer.AddTool(myNewTool(), s.handleMyNewTool)
    

路线图

  • []完成OIDC身份验证集成
  • []完整的OPA授权政策
  • []WebSocket支持实时更新
  • []嵌入语义搜索服务集成
  • []增强的图形查询功能
  • []MCP资源模板
  • []可流式HTTP传输
  • []外部MCP服务器的插件架构
  • []综合测试套件
  • []性能优化

许可证

有关详细信息,请参阅LICENSE文件。

贡献

欢迎投稿!请参阅CONTRIBUTING.md了解指南。

支持

有关问题和疑问,请使用GitHub问题跟踪器。