合成-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(推荐)
- 克隆存储库:
git clone
cd mcp-feature-store- 启动堆栈:
docker-compose up -d这将开始:
- 带有pgvector和Apache AGE的PostgreSQL(端口5432) - 综合MCP服务器(stdio传输) - 合成REST API(端口8080) - 开放策略代理(端口8181)
- 检查日志:
docker-compose logs -f synthesis-api
docker-compose logs -f synthesis-mcp- 测试REST API:
curl http://localhost:8080/health在当地建设
- 安装依赖项:
go mod download- 生成二进制文件:
go build -o bin/synthesis-mcp ./cmd/synthesis-mcp
go build -o bin/synthesis-api ./cmd/synthesis-api- 启动PostgreSQL (使用docker):
docker-compose up -d postgres- 运行服务器:
# 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发行人URLOIDC_CLIENT_ID:OIDC客户端IDOPA_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-测试样本数据
添加新工具
- 在中创建工具定义
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
},
}
}- 机具处理程序:
func (s *Server) handleMyNewTool(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
// Implementation
}- 注册
server.go:
s.mcpServer.AddTool(myNewTool(), s.handleMyNewTool)路线图
- \[\]完成OIDC身份验证集成
- \[\]完整的OPA授权政策
- \[\]WebSocket支持实时更新
- \[\]嵌入语义搜索服务集成
- \[\]增强的图形查询功能
- \[\]MCP资源模板
- \[\]可流式HTTP传输
- \[\]外部MCP服务器的插件架构
- \[\]综合测试套件
- \[\]性能优化
许可证
有关详细信息,请参阅LICENSE文件。
贡献
欢迎投稿!请参阅CONTRIBUTING.md了解指南。
支持
有关问题和疑问,请使用GitHub问题跟踪器。
