Business Card MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Business Card MCPsearch my contacts for Alice Smith"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Business Card MCP
AI-native, self-hostable private business card library. Users upload business cards in ChatGPT, where the existing multimodal model recognizes and confirms them; the Remote MCP handles verification, private storage, search, modification, archiving, and export, without making additional model API calls.
Features
ChatGPT Remote MCP: create, search, read, update, archive, and export business cards
Private admin website: self-set password login, card wall / list view, protected thumbnails
D1 FTS5: search by name, company, title, phone, email, address, tags, occasion, and notes
R2: private Markdown and 480px WebP thumbnails
KV: per-user
bc_Connector KeyReturns a clickable business card confirmation page after writes
Thumbnail is a required field when creating a business card, avoiding records without images
Currently it is keyword full-text search, not embedding/vector semantic search.
Related MCP server: DuckPond MCP Server
Architecture
ChatGPT / Claude
│ Remote MCP
▼
Cloudflare Worker ── WEB_PASSWORD 或可選 Cloudflare Access JWT 驗證
├── D1:聯絡人與 FTS5
├── R2:Markdown、WebP 縮圖
├── KV:MCP Key
└── Static Assets:私人管理網站Original business card images are not saved by default. The GitHub repo contains only code, migrations, and synthetic test data, and no user contacts.
MCP Tools
Tool | Purpose |
| Write user-confirmed data, Markdown, and required thumbnail |
| Search your own business cards |
| Get the full business card and confirmation page link |
| Update fields, tags, and notes |
| Archive a business card, no permanent deletion |
| Export as Markdown or vCard |
Deployment Requirements
Node.js 20+
Cloudflare account
Wrangler CLI logged into the correct Cloudflare account
Deployment
1. Install and Set Up Local Configuration
npm install
cp public/config.example.js public/config.jswrangler.jsonc ships with the repo as a zero-value placeholder (the SmallGreen standard requires statically determinable resource declarations); fill in the real IDs in the next step. After filling them in, it is recommended to run git update-index --skip-worktree wrangler.jsonc to avoid committing the real IDs. public/config.js is already ignored by Git; web authentication requires no frontend configuration.
2. Create Cloudflare Resources
npx wrangler d1 create business-card-mcp
npx wrangler r2 bucket create business-card-mcp-assets
npx wrangler kv namespace create CARD_KEYSFill the account, D1, and KV IDs returned by Cloudflare into wrangler.jsonc, and set:
PUBLIC_BASE_URLR2 bucket name
Then set the self-set password for web login; the password only goes through Wrangler secrets and is not written into wrangler.jsonc:
npx wrangler secret put WEB_PASSWORDCF_ACCESS_TEAM_DOMAIN and CF_ACCESS_AUD can be left empty by default; leaving them empty means the web page uses password login with zero card binding.
3. Optional Upgrade: Cloudflare Access Email OTP
Set this up only if you want Cloudflare to do an email One-Time PIN at the edge first. Zero Trust onboarding may require binding a credit card; the free plan itself is $0.
In Cloudflare Zero Trust, create a self-hosted Access application protecting this Worker's domain.
Enable One-Time PIN as the login method, and restrict who can log in with an email or email domain policy.
Confirm that the browser UI and
/api/*are both within the Access protection scope.Exempt the
/mcppath from the Access login requirement, for example with a path-based Bypass policy or by splitting it into a route rule that does not apply Access./mcpis still authenticated by thebc_MCP key; ChatGPT/Claude will not carry a Cloudflare Access cookie.Fill the Access application's Audience tag into
CF_ACCESS_AUDand the Zero Trust team domain intoCF_ACCESS_TEAM_DOMAIN, then redeploy. Once filled, web requests that pass Access are automatically allowed without asking for the self-set password.
4. Migration, Testing, and Deployment
npx wrangler types
npm run typecheck
npm test
npx wrangler d1 migrations apply business-card-mcp --remote
npx wrangler deploy5. Connect to ChatGPT
Open the deployed website and enter the self-set password configured in
WEB_PASSWORD; if Cloudflare Access has been enabled, verification is done via email One-Time PIN.Generate a business card MCP Key.
Copy the full Connector URL; the URL contains the Key, so treat it like a password.
Add a Remote MCP in ChatGPT developer mode.
After scanning the tools, test with "use the business card MCP to search for someone".
Local Development
npm run migrate:local
npm run devHealth check: GET /healthz
Remote MCP: POST /mcp
Security and Privacy
All business card queries are restricted to the password-logged-in
owner, the Cloudflare Accesssub, or the MCP Key owner.The R2 bucket stays private; thumbnails are served by a login-protected API.
MCP accepts both Bearer tokens and Connector URL query tokens.
The full Key is shown only at creation time and supports individual revocation.
Do not commit
.env,.dev.vars,wrangler.jsonc, orpublic/config.js.
Please report security issues privately per SECURITY.md; do not open a public Issue.
Verification
npm test
npm run typecheck
npm audit --omit=devThe project currently has unit, MCP protocol, Web API, permission, storage, and UI contract tests; the coverage threshold is 80% for lines/functions/statements and 75% for branches.
Known Limitations
Vector semantic search is not yet available.
There is no interface yet to add images to existing business cards without images; new records already enforce a required thumbnail.
Permanent deletion is not enabled by default; use archiving to avoid accidental deletion.
License
Apache-2.0. See LICENSE for details.
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