轻量级模型上下文协议服务器

Recallist是一个轻量级的模型上下文协议(MCP)服务器,为基于GPT的代理提供简单、持久的用户项目列表管理功能,适用于微学习、间隔重复、提醒和轻量级个人记忆。

  • by gASK13
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 gASK13/recallist-server

使用说明

重新列出服务器

Recallist是一个轻量级的模型上下文协议(MCP)服务器,它为基于GPT的代理提供了一个简单、持久的每个用户项目列表。代理可以添加笔记,标记已解决,随机提取未解决的项目,并列出所有内容——这对微学习、间隔重复、提醒和轻量级个人记忆很有用。

这是在“主动开发”中——目的是保持简单,但允许在任何GPT中使用,作为简单的“逐项存储”,具有易于管理的web UI。

主要特点

  • 单个FastAPI应用程序作为两个子API挂载: /api/* (主要)和 /gpt/* (以GPT为重点)
  • /api/* 使用标准REST动词; /gpt/* GET仅用于更简单的GPT工具使用
  • DynamoDB中的每个用户存储,使用不区分大小写的键,保留原始大小写以供显示
  • 按子API划分的身份验证:
    • /api/*:Cognito JWT授权人(授权:持有人…)
    • /gpt/*:检查API令牌的轻量级Lambda REQUEST授权器
  • 使用单一HTTP API网关的Terraform基础设施即代码(v2)

高层体系结构

  • FastAPI应用程序 lambda/,适用于Lambda mangum.
  • 在一个根应用程序下安装了两个子应用程序:
    • /api → 用于web应用程序使用(JWT身份验证),文档位于 /api/docs 和模式在 /api/openapi.json (公众)
    • /gpt → 用于GPT集成(仅GET+令牌身份验证),文档位于 /gpt/docs 和模式在 /gpt/openapi.json (公众)
  • 自定义Lambda REQUEST授权器 lambda_authorizer/ 验证 x-api-key DynamoDB表中的令牌。
  • DynamoDB中存储的数据:
    • 表: recallist_items (分区键: user_id,排序键: item [标准化小写])
    • 表: recallist_api_keys (目前仅适用于每个用户的密钥,未来可能会扩展到标识列表)
  • 地形定义 infra/main.tf 提供IAM、DynamoDB、HTTP API、Cognito和Lambdas。

数据模型(DynamoDB)

每个用户都使用规范化的项目键存储项目,以实现不区分大小写的行为。

  • user_id:字符串(PK)
  • item:字符串(SK,项目文本的标准化小写字母)
  • display_item:字符串(原始用户提供的文本,保留用于显示)
  • 状态:“新”|“已解决”
  • 创建日期:ISO8601 UTC字符串
  • resolutionDate:ISO8601 UTC字符串(解析时)

API概述

除文档端点外,所有端点都需要授权。

文档和模式(公共):

  • /api/docs, /api/openapi.json
  • /gpt/docs, /gpt/openapi.json

地方发展

虽然是为Lambda设计的,但您可以在本地运行FastAPI进行快速测试:

  • 安装要求来自 lambda/requirements.txt.
  • 设置指向测试帐户或本地DynamoDB的AWS凭据(必要时调整资源)。
  • 运行应用程序(示例):
    uvicorn lambda.main:app --reload
    
    注意:在Lambda中,处理程序是通过以下方式创建的 Mangum(app).