远程食品储藏数据库

PantryDB是一个远程MCP服务器,用于跟踪和管理食品储藏室中的物品,支持通过GitHub OAuth认证的单一用户访问。

  • by camille-vanhoffelen
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 camille-vanhoffelen/pantrydb

使用说明

🥫 Pantrydb

远程MCP服务器,用于跟踪您的食品柜中有什么。

展示一个简单的数据库,用于列出、添加和删除餐具室物品。

服务器是远程的,因此可以在旅途中访问(例如在移动设备上)。 它支持使用GitHub OAuth进行身份验证的单个用户。

PantryDB使用 CloudFlare的MCP和OAuth库,并部署在 CloudFlare工人.

📋 目录

🥫 例子

购物时寻求建议。

扫描你的收据,添加到餐具室。

留下一个语音备忘录,让克劳德知道你吃了一些薯片。

🚀 入门指南

先决条件

  • Node.js (v18或更高)以及 npm -用于运行项目和管理依赖关系
  • 心脏出血 -用于生成cookie加密密钥(openssl rand -hex 32)
  • GitHub账号 -用于OAuth身份验证设置
  • Cloudflare帐户 -用于工人部署和D1/KV服务

安装

安装依赖项:

npm install

登录牧马人:

npx wrangler login

🚢 部署

  • 本地: 在本地运行PantryDB,并使用同一台机器上的MCP客户端访问它。
  • 远程: 远程部署PantryDB并从任何MCP客户端访问。

GitHub OAuth

本地

为本地开发创建新的OAuth应用程序。

引导到 github/设置/开发者 使用以下设置创建新的OAuth应用程序:

Application name: PantryDB (local)
Homepage URL: http://localhost:8788
Authorization callback URL: http://localhost:8788/callback

记下您的客户端ID并生成客户端密钥。将两者都添加到a .dev.vars 项目根目录中的文件,将用于在本地开发中设置机密:

touch .dev.vars
echo 'GITHUB_CLIENT_ID="your-client-id"' >> .dev.vars
echo 'GITHUB_CLIENT_SECRET="your-client-secret"' >> .dev.vars

然后,添加唯一允许使用PantryDB的GitHub帐户的用户名:

echo 'ALLOWED_GITHUB_USERNAME="your-username"' >> .dev.vars

远程

为远程服务器创建新的OAuth应用程序:

引导到 github/设置/开发者 使用以下设置创建新的OAuth应用程序:

Application name: PantryDB (prod)
Homepage URL: https://pantrydb.<your-subdomain>.workers.dev
Authorization callback URL: https://pantrydb.<your-subdomain>.workers.dev/callback

记下您的客户端ID并生成客户端密钥。通过牧马人设置秘密:

npx wrangler secret put GITHUB_CLIENT_ID
npx wrangler secret put GITHUB_CLIENT_SECRET

然后,设置唯一允许使用PantryDB的GitHub帐户的用户名:

npx wrangler secret put ALLOWED_GITHUB_USERNAME

Cookie加密

设置cookie加密密钥。使用任何随机字符串(例如 openssl rand -hex 32).然后,将密钥设置为机密:

本地

echo 'COOKIE_ENCRYPTION_KEY="your-cookie-encryption-key"' >> .dev.vars

远程

npx wrangler secret put COOKIE_ENCRYPTION_KEY

KV命名空间

创建服务器的OAuth KV命名空间:

npx wrangler kv:namespace create "OAUTH_KV"

然后,更新Wrangler文件(wrangler.jsonc)使用KV ID。

D1数据库

创建d1数据库。

npx wrangler d1 create pantrydb

然后初始化它。

# local
npx wrangler d1 execute pantrydb --local --file=db/schema.sql
# or remote
npx wrangler d1 execute pantrydb --remote --file=db/schema.sql

最后,更新Wrangler文件(wrangler.jsonc)使用D1数据库ID。

部署

本地

在本地运行MCP服务器 http://localhost:8788/sse:

npx wrangler dev

远程

部署MCP服务器,使其在您的 workers.dev 域名:

npx wrangler deploy

🔌 用法

然后连接到您当地的PantryDB http://localhost:8788/sse,或您的远程PantryDB https://pantrydb.<your-subdomain>.workers.dev/sse 与:

npx @modelcontextprotocol/inspector

😎 鸣谢

特别感谢:

🤝 许可证

MIT许可证