Token导航 LogoToken导航TokenDH.com
Document MCP logo
搜索检索未说明官方级别未说明来源级核验

Document MCP

MCP Server

基于Gin + Ent + JWT + PostgreSQL(pgvector)的文档索引与搜索系统,支持2级深度分类、年份筛选、别名搜索及基于组的文档访问控制(ACL)。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
文档处理访问控制Go数据库向量搜索

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

dalbodeule

提供方

dalbodeule

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

文件mcp(基础)

基于Gin+Ent+JWT(access/refresh)+PostgreSQL(pgvector)的 文档索引/搜索(包括2-depth、year-document、alias)基于组的文档ACL(Read/RW/Deny) 是底妆。

配置

准备运行

1) PostgreSQL+pgvector

用于本地测试 提供。

docker compose up -d

数据库必须预先创建(应用程序 CREATE DATABASE不至于)。

示例)

CREATE DATABASE document_mcp;

启动应用程序时 internal/db/migrate.go在中:

  • CREATE EXTENSION IF NOT EXISTS vector;
  • 自动创建ent模式
  • document_embeddings.embedding 在中创建ivfflat索引

2)环境变量

.env创建 .env.example请参考填写。

必需:

  • DATABASE_URL
  • JWT_ACCESS_SECRET, JWT_REFRESH_SECRET
  • OPENAI_API_KEY

执行

go run ./cmd/api --serve

默认地址为 HTTP_ADDR(默认 :8080)。

健康检查:

curl localhost:8080/health

Swagger用户界面:

  • http://localhost:8080/swagger/
  • OpenAPI JSON: http://localhost:8080/openapi.json

初始帐户设置(命令)

无需运行服务器 创建/更新最初用户可以(衣领)。

go run ./cmd/api --init-user \
  --email a@example.com \
  --password 'password123!' \
  --name Alice \
  --group team-security

初始化后一起运行到服务器的步骤 --serve一起指定。

go run ./cmd/api --init-user --email a@example.com --password 'password123!' --name Alice --serve

注意: --init-user虽然没有OpenAI键也可以工作, --serve用于在生成/检索文档时调用嵌入 OPENAI_API_KEY需要。

API摘要

认证

  • POST /auth/register
  • POST /auth/login{access_token, refresh_token}
  • POST /auth/refresh (刷新旋转)
  • POST /auth/logout

群组

  • POST /groups (创建组)
  • POST /groups/:id/members (将用户添加到组中)
  • GET /me/groups (我的组列表)

文件

  • POST /documents (创建文档+嵌入创建+保存alias)
  • GET /documents/:id (通过ACL时查询)
  • POST /documents/:id/acl (文档ACL设置/更新)

搜索

  • POST /search

- 矢量搜索+过滤器: year, depth1, depth2, alias - 应用ACL规则: deny如果有,则排除, read/read_write如果有或拥有,则包括

cURL示例

1)注册/登录会员

curl -s -X POST localhost:8080/auth/register \
  -H 'content-type: application/json' \
  -d '{"email":"a@example.com","password":"password123!","name":"Alice"}'

TOKENS=$(curl -s -X POST localhost:8080/auth/login \
  -H 'content-type: application/json' \
  -d '{"email":"a@example.com","password":"password123!"}')

ACCESS=$(echo $TOKENS | jq -r .access_token)
REFRESH=$(echo $TOKENS | jq -r .refresh_token)

2)创建组并添加成员

G=$(curl -s -X POST localhost:8080/groups \
  -H "authorization: Bearer $ACCESS" \
  -H 'content-type: application/json' \
  -d '{"name":"team-security"}')
GID=$(echo $G | jq -r .id)

# 내 user_id는 register 응답에서 얻거나 DB에서 확인(추후 /me 엔드포인트 추가 가능)
curl -s -X POST localhost:8080/groups/$GID/members \
  -H "authorization: Bearer $ACCESS" \
  -H 'content-type: application/json' \
  -d '{"user_id":""}'

3)生成文档

DOC=$(curl -s -X POST localhost:8080/documents \
  -H "authorization: Bearer $ACCESS" \
  -H 'content-type: application/json' \
  -d '{
    "year": 2024,
    "depth1": "policy",
    "depth2": "security",
    "title": "ISMS 가이드",
    "content": "...",
    "aliases": ["ISMS","정보보호"]
  }')
DOCID=$(echo $DOC | jq -r .id)

4)文档ACL设置

curl -s -X POST localhost:8080/documents/$DOCID/acl \
  -H "authorization: Bearer $ACCESS" \
  -H 'content-type: application/json' \
  -d '{"group_id":"'$GID'","effect":"read"}'

5)搜索

curl -s -X POST localhost:8080/search \
  -H "authorization: Bearer $ACCESS" \
  -H 'content-type: application/json' \
  -d '{"query":"ISMS 심사 대응","year":2024,"alias":"ISMS","limit":10}'

注意/扩展点

  • 现在贝斯 Ent自动迁移启动应用程序时执行。操作建议使用单独的migrate管线(DDL分离)。
  • pgvector索引(ivfflat)参数(lists)请根据数据规模进行调整。 internal/db/migrate.go
  • 组/成员/ACL管理的管理员权限模型(RBAC)仍然是最低实施(建议必要时扩展Role/Permission)。

目录标签

目录标签

文档处理访问控制Go数据库向量搜索文档搜索本地部署JWT认证

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP