Business Card MCP
Business Card MCP
AI-native、可自架的私人名片庫。使用者在 ChatGPT/Claude 上傳名片,由既有多模態模型辨識並確認;Remote MCP 負責驗證、私人儲存、搜尋、修改、封存與匯出,不額外呼叫模型 API。
功能
ChatGPT Remote MCP:建立、搜尋、讀取、更新、封存及匯出名片
私人管理網站:Gmail OTP 登入、卡片牆/條列檢視、受保護縮圖
D1 FTS5:姓名、公司、職稱、電話、Email、地址、標籤、場合及備註搜尋
R2:私人 Markdown 與 480px WebP 縮圖
KV:每位使用者獨立的
bc_Connector Key寫入後回傳可點擊的名片確認頁
縮圖為建立名片的必填欄位,避免產生無圖資料
目前是關鍵字全文搜尋,不是 embedding/向量語意搜尋。
Related MCP server: DuckPond MCP Server
架構
ChatGPT / Claude
│ Remote MCP
▼
Browser ── Turnstile + Gmail OTP ──┐
▼
ChatGPT / Claude ── MCP Key ── Cloudflare Worker
├── D1:聯絡人、OTP challenge、web session 與 FTS5
├── R2:Markdown、WebP 縮圖
├── KV:MCP Key
├── Email Service binding:寄送一次性驗證碼
└── Static Assets:私人管理網站網頁登入不使用 Google OAuth,也不依賴 Cloudflare Zero Trust。Gmail 地址由部署者設定的 allowlist 控制,Turnstile 只負責防濫用,不是登入身分來源。原始名片圖片預設不保存。
圖片處理在 ChatGPT/Claude 端完成:多模態模型在呼叫 create_contact 前產生 480px WebP 縮圖;Worker 只驗證 MIME、大小與 SHA-256,然後把已壓縮的 WebP 存入 R2。這個專案不呼叫 Images API、Workers AI 或線上圖片壓縮服務。
GitHub repo 只包含程式碼、migration 與合成測試資料,不包含任何使用者聯絡人。
MCP Tools
Tool | 用途 |
| 寫入使用者已確認的資料、Markdown 與必要縮圖 |
| 搜尋自己的名片 |
| 取得完整名片與確認頁連結 |
| 更新欄位、標籤與備註 |
| 封存名片,不永久刪除 |
| 匯出 Markdown 或 vCard |
部署需求
Node.js 20+
Cloudflare 帳號
Wrangler CLI 登入正確的 Cloudflare 帳號
部署
1. 安裝與建立本機設定
npm install
cp public/config.example.js public/config.jswrangler.jsonc 隨 repo 提供零值佔位版(SmallGreen 標準需要可靜態判定的資源宣告),下一步把真實 ID 填進去;填完建議 git update-index --skip-worktree wrangler.jsonc,避免真實 ID 被 commit。public/config.js 已被 Git 忽略,網頁認證不需要前端設定。
2. 建立 Cloudflare 資源
npx wrangler d1 create business-card-mcp
npx wrangler r2 bucket create business-card-mcp-assets
npx wrangler kv namespace create CARD_KEYS把 Cloudflare 回傳的 account、D1 與 KV ID 填入 wrangler.jsonc,並設定:
PUBLIC_BASE_URLR2 bucket 名稱
接著在 Cloudflare Email Service 完成寄件網域設定。寄件地址必須屬於已在 Cloudflare DNS 管理並已 onboard 的網域;單人免費方案可把自己的 Gmail 設為 Cloudflare 的 verified destination。Email Sending 對任意收件者需要 Workers Paid,但寄送到帳號內 verified destination 依 Cloudflare pricing 文件 可在各方案免費使用。
設定 Gmail allowlist、OTP pepper 與 Turnstile secret;secret 只走 Wrangler,不寫進 wrangler.jsonc:
npx wrangler secret put ALLOWED_GMAILS # 例如:owner@gmail.com
npx wrangler secret put OTP_PEPPER
npx wrangler secret put TURNSTILE_SECRET_KEY另外把 OTP_FROM_EMAIL、TURNSTILE_SITE_KEY 與 TURNSTILE_EXPECTED_HOSTNAME 填入 wrangler.jsonc 的 vars。AUTH_USER_ID 可填既有資料使用的 owner ID;若留空,新的 Gmail 身分會以正規化後的 Gmail 地址作為 user ID。
3. Migration、測試與部署
npx wrangler types
npm run typecheck
npm test
npx wrangler d1 migrations apply business-card-mcp --remote
npx wrangler deploy4. 連接 ChatGPT
開啟部署後的網站,輸入 allowlist 內的 Gmail,完成 Turnstile,收取一次性驗證碼後登入。
產生名片 MCP Key。
複製完整 Connector URL;URL 內含 Key,視同密碼。
在 ChatGPT 開發人員模式新增 Remote MCP。
掃描工具後,以「使用名片 MCP 搜尋某某人」測試。
本機開發
npm run migrate:local
npm run dev健康檢查:GET /healthz
Remote MCP:POST /mcp
安全與隱私
所有名片查詢都以 Gmail OTP session 或 MCP Key 擁有者限制。
R2 bucket 維持私人;縮圖由登入保護的 API 提供。
MCP 同時接受 Bearer token 與 Connector URL query token。
完整 Key 只在建立當下顯示,支援個別撤銷。
請勿提交
.env、.dev.vars、wrangler.jsonc或public/config.js。
安全問題請依 SECURITY.md 私下回報,不要建立公開 Issue。
驗證
npm test
npm run typecheck
npm audit --omit=dev專案目前有單元、MCP protocol、Web API、權限、儲存及 UI 合約測試;coverage threshold 為 lines/functions/statements 80%、branches 75%。
已知限制
尚未提供向量語意搜尋。
既有無圖名片尚未提供補圖介面;新資料已強制縮圖必填。
Cloudflare Email Service 的 Email Sending 需要已 onboard 的 Cloudflare DNS 網域;任意 Gmail 收件者可能需要 Workers Paid。部署前請確認寄件方案與 verified destination 狀態。
永久刪除預設不開放,使用封存避免誤刪。
License
Apache-2.0。詳見 LICENSE。
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Private persistent memory for Claude, ChatGPT & Gemini via MCP - semantic search, zero-code setup.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.
Persistent memory and vector search for AI agents. Hosted, OAuth-protected via Google sign-in.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceSelf-hosted semantic memory layer for Claude and MCP-compatible AI clients. Store notes, search by meaning not keywords, and recall relevant context automatically across sessions. Runs free on Cloudflare Workers, D1, Vectorize, and Workers AI2750MIT
- AlicenseAqualityFmaintenanceMCP server for multi-tenant DuckDB management with R2/S3 cloud storage, enabling AI agents to manage per-user databases with automatic cloud persistence.6876MIT
- FlicenseNot gradedqualityDmaintenanceSelf-hosted personal knowledge graph running on Cloudflare, connecting to Claude as an MCP server for capturing atomic concepts and cross-domain analogies.21-
- AlicenseNot gradedqualityBmaintenanceSelf-hosted MCP server connecting AI assistants like Claude to Anki for AI-assisted flashcard generation and sync. It supports multi-tenant, authenticated operations to add, search, and analyze cards in real Anki collections.AGPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ai-cooperation/business-card-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server