重新列出服务器
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/,适用于Lambdamangum. - 在一个根应用程序下安装了两个子应用程序:
- /api → 用于web应用程序使用(JWT身份验证),文档位于 /api/docs 和模式在 /api/openapi.json (公众) - /gpt → 用于GPT集成(仅GET+令牌身份验证),文档位于 /gpt/docs 和模式在 /gpt/openapi.json (公众)
- 自定义Lambda REQUEST授权器
lambda_authorizer/验证x-api-keyDynamoDB表中的令牌。 - 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).
