Present Agent MCP
Enables secure purchase of recommended gifts through Shopify checkout via the picks URL.
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., "@Present Agent MCPFind a birthday gift for my best friend under $60"
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.
Present Agent MCP
Find 5 explainable, personalized gift recommendations from inside any MCP client β Claude Code, Codex, Cursor, and more.
Current status and split guidance: docs/STATUS.md.
Present Agent is a gifting engine that reasons about the relationship, occasion, and the signal a gift sends β not just product search. This package is the public, hosted MCP server: it calls the live Present Agent API at presentagent.vip, so you need no local product catalog, no Shopify credentials, and no model-provider API keys to get value.
π 5 curated picks, each with a plain-language reason it fits
π Works in any MCP-capable client over stdio
π Hosted by default β zero secrets to configure
π Every result includes a shareable web URL you can open or continue in the browser
Full docs & client catalog: https://presentagent.vip/mcp
Quickstart
Claude Code
claude mcp add present-agent --transport stdio --scope user \
-e PRESENT_AGENT_CLIENT=claude-code \
-- npx -y present-agent-mcpThen ask Claude, in any project:
Find a gift for my sister's birthday under $100. She just got into pottery.
Codex
One command writes the config to ~/.codex/config.toml:
npx -y present-agent-mcp setup codexUse --dry-run to preview without writing, or --local-context to enable opt-in local context (see Local context mode). Restart Codex, then ask for a gift.
Any other MCP client (generic stdio config)
{
"mcpServers": {
"present-agent": {
"command": "npx",
"args": ["-y", "present-agent-mcp"],
"env": { "PRESENT_AGENT_CLIENT": "custom" }
}
}
}Requirements: Node.js β₯ 18 and network access to
https://presentagent.vip. The first run downloads the package vianpx; subsequent runs are cached.
Related MCP server: NeuronSearchLab
Tools
present_find_gift
Find 5 personalized gifts through the hosted Present Agent API. Only recipient is required β every other field sharpens the picks but is optional.
Parameter | Type | Description |
| string Β· required | Name or short description of who the gift is for. |
| string | partner, parent, sibling, friend, colleague, client, etc. |
| string | birthday, anniversary, thank-you, housewarming, onboarding, holiday⦠|
| string | Free-form: |
| string | Comma-separated interests, hobbies, brands, or taste signals. |
| string | Known likes, style, taste, or profile clues. |
| string | Hard rules: avoid categories, delivery deadline, allergies, space, values. |
| string | Functional needs or outcomes the gift should support. |
| string | What you (the host AI) know about the giver: budget norms, taste, taboos, prior gifts. Leave empty if unknown β never fabricate. |
| string | What you know about the recipient beyond name/relation/occasion: life events, prior gift outcomes, recent notes. Leave empty if unknown β never fabricate. |
| boolean | Opt in to local context search. Also requires |
Returns (JSON text):
{
"mode": "hosted",
"apiBase": "https://presentagent.vip",
"sessionId": "51bd7b67-β¦",
"picksUrl": "https://presentagent.vip/picks/51bd7b67-β¦",
"contextSignals": { "hosted": { "sources": ["explicit input"] } },
"recommendations": [
{
"slot": "top_pick",
"name": "White β Sage Valley Pottery Pie Dish",
"brand": "PRINTFRESH",
"price": 60,
"matchScore": 0.5,
"whyThisFits": "Combines her love of pottery with practical kitchen artistryβ¦",
"giftAngle": "Present it as functional art she'll use regularly."
}
]
}picksUrl is a real, shareable page β open it, send it, or continue refining in the browser.
present_beta_start
Zero-argument tool that returns the fastest onboarding instructions, a live web fallback (/gift/new), and the local-context opt-in hint. Useful as a first call to orient a fresh agent.
How to get the best picks
The engine reasons from context. The more specific, true signal you give it, the better the 5 picks β but don't invent detail.
Do
Name a concrete interest or recent change ("just got into pottery", "started trail running"). Specifics beat adjectives.
State the relationship and occasion β they change what a gift signals.
Put genuine hard limits in
constraints("no alcohol", "ships to Canada by Dec 20", "nut allergy"). Constraints are respected before scoring.Pass through real memory in
giver_context/recipient_contextwhen your host AI already knows it.
Don't
Fabricate interests or budgets to "fill the form" β empty is better than wrong; the model treats blanks honestly.
Expect it to read minds: "something nice" with no other signal yields generic picks.
Use it to search a specific SKU β it recommends what to give, it isn't a product-lookup tool.
Good call:
present_find_gift({ recipient: "my dad", relationship: "parent", occasion: "birthday", budget: "$80-120", interests: "gardening, espresso, jazz vinyl", constraints: "no clothing, he's hard to surprise" })
What's feasible (and what isn't)
β Feasible | β Not in this MCP |
5 explainable gift picks for a person + occasion | Completing a purchase / checkout (happens on the web, link provided) |
Budget, hard constraints, and taste honored | Real-time inventory or per-item shipping quotes (confirmed at checkout) |
A shareable | Editing a saved recipient profile or wishlist (web/app feature) |
Optional, opt-in local context hints | Reading your full local files (only sanitized, opt-in signals are sent) |
Works offline-of-keys: no model/Shopify keys needed | Running the full local catalog engine (that's the private app repo) |
Practical notes
Latency: a fresh recommendation runs live LLM scoring and typically takes ~20β60s. Repeat/cached contexts are faster.
Currency: all prices are CAD.
Checkout: to buy, open
picksUrland continue onpresentagent.vipβ secure Shopify checkout. The MCP never hands users to external retailers.Determinism: picks are personalized and may vary slightly run-to-run as context changes.
Local context mode (opt-in)
By default the hosted server uses only what you pass in the tool call. Nothing local is read.
To let it look at local Claude/Codex/Gemini context files for soft signals about the named recipient, both must be true:
Set
PRESENT_ENABLE_LOCAL_AGENT_CONTEXT=1in the server env, andPass
useAgentContext: trueon the tool call.
When enabled, the server extracts compact preference / need / constraint hints and sends them as weak signals (never hard requirements). Secret-looking lines and paths are skipped β raw files are never transmitted. These hints are clearly labeled in the request and treated as low-confidence flavour, behind anything you state explicitly.
Configuration
All environment variables are optional β the package runs with safe defaults and no secrets. See .env.example.
Variable | Default | Purpose |
|
| Client label for attribution (e.g. |
|
| API base. Change only if self-hosting Present Agent. |
| unset (off) | Allow opt-in local context search (still needs |
| unset (off) | Echo extracted local lines in the response (debug only). |
Privacy
No keys, no accounts required to use the hosted tools.
The server sends only the gift context you provide to
presentagent.vip.Local context search is off by default, double-gated, sanitized, and never transmits raw files or secret-looking content.
Requests carry an attribution label (
source: "mcp", yourPRESENT_AGENT_CLIENT) for analytics β no personal identifiers are added by this package.
Troubleshooting
Symptom | Fix |
| Ensure Node.js β₯ 18 and that |
Tool call times out | Recommendations can take up to ~60s; raise your client's MCP tool timeout. |
Empty / generic picks | Add a concrete interest + relationship + occasion; avoid vague input. |
Want to preview Codex config |
|
Run from source
git clone https://github.com/GuillaumeRacine/present-agent-mcp
cd present-agent-mcp
npm install
npm start # boots the stdio MCP serverLicense
MIT Β© Present Agent. See LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/GuillaumeRacine/present-agent-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server