ai-support-agent
Uses OpenAI embeddings to enable semantic search over the knowledge base, allowing the agent to retrieve relevant documents based on meaning rather than keyword matching.
Provides a pgvector-backed vector store for document embeddings, enabling similarity search to ground answers in real knowledge base content.
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., "@ai-support-agentCan you check the status of order #4521?"
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.
AI Support Agent — MCP + RAG + Evals + Automation
An end-to-end AI support agent built to demonstrate production-grade AI integration: a FastAPI backend exposed as an MCP (Model Context Protocol) server, backed by semantic search over a real knowledge base, with automated evaluation and observability, and triggered live from Slack via n8n.
This isn't a chatbot demo — it's the architecture behind what companies actually pay AI engineers to build: an agent that can safely look up real business data, answer questions grounded in real documentation, hand off to a human when it can't resolve something, and prove (with logged evals) that it isn't hallucinating.
What it does
A support request comes in — via Claude Desktop, or a real Slack message — and the agent:
Looks up order status from a real backend database (
get_order_status)Searches a knowledge base semantically — not keyword matching — to answer policy questions (
search_docs)Creates a support ticket when it can't resolve something automatically (
create_ticket)
Every tool call is traced end-to-end (input, output, tokens, cost, latency), and a small automated eval suite verifies the agent is grounded — it says "I don't know" instead of guessing, and correctly matches paraphrased questions to the right policy.
Related MCP server: Customer Support MCP Server
Architecture
Slack message
│
▼
n8n (Code node filters bot's own messages to prevent loops)
│
▼
FastAPI wrapper endpoint (/agent/support-query)
│
├─▶ Order lookup (SQLite via SQLAlchemy)
│
└─▶ Semantic search:
OpenAI embeddings (text-embedding-3-small)
│
▼
Supabase (pgvector) similarity search
│
▼
Response posted back to Slack
─────────────────────────────────────────
Claude Desktop
│
▼
MCP server (stdio) ── same three tools, same backend
│
▼
Langfuse (traces every call: input, output, tokens, cost)Stack
Layer | Tech |
Backend API | FastAPI, SQLAlchemy, SQLite |
Agent protocol | MCP (Model Context Protocol) via |
Semantic search / RAG | OpenAI embeddings ( |
Observability | Langfuse (traces, token usage, cost tracking) |
Automation | n8n (self-hosted via Docker), Slack Events API |
Local tunnel | ngrok (with traffic policy to bypass free-tier interstitial) |
Tools exposed
get_order_status(order_id: int)
Looks up an order's status and tracking number. Returns a clear "not found" message for invalid IDs rather than guessing.
search_docs(query: str)
Semantic search over a knowledge base (shipping policy, returns, order tracking docs). Matches paraphrased queries — e.g. "can I get my money back" correctly retrieves the Return Policy doc with zero keyword overlap — because it embeds and compares meaning, not text.
create_ticket(customer_name: str, issue: str)
Creates a support ticket for issues the agent can't resolve automatically, so nothing falls through the cracks.
Evals
A small automated eval suite (app/run_evals.py) runs 10 test cases across all three tools, including:
Correct order lookups and a graceful "no order found" for invalid IDs
Semantic search matching paraphrased queries with no literal keyword overlap to the source doc
Correctly saying "no relevant documents found" for off-topic queries, instead of hallucinating an answer
Ticket creation
Current pass rate: 10/10 (100%). Every eval run is also traced in Langfuse, so pass/fail results are backed by inspectable, real execution data — not just a claimed number.
Running it locally
1. Backend
python -m venv venv
venv\Scripts\activate # Windows
pip install -r requirements.txt
uvicorn app.main:app --reload2. Seed sample data
python -m app.seed3. Set up RAG
Create a Supabase project, enable the
pgvectorextensionRun the SQL in
sql/setup.sqlto create thedoc_embeddingstable andmatch_docsfunctionAdd your keys to
.env(see.env.example)Embed and upload the seeded docs:
python -m app.embed_docs
4. Run the MCP server (for Claude Desktop)
python -m app.mcp_serverAdd it to claude_desktop_config.json pointing at your venv's Python and this script.
5. Run evals
python -m app.run_evals6. n8n + Slack automation
docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8nImport the workflow from
n8n/support-agent-workflow.jsonPoint a Slack app's Event Subscriptions at your n8n webhook (via ngrok for local dev)
Environment variables
OPENAI_API_KEY=
SUPABASE_URL=
SUPABASE_KEY=
LANGFUSE_PUBLIC_KEY=
LANGFUSE_SECRET_KEY=
LANGFUSE_HOST=Why this project
This project demonstrates the parts of production AI work that matter most to a client evaluating an AI engineer:
Real backend integration via MCP, not just prompt engineering
Grounded answers via real semantic search, not keyword matching dressed up as "AI"
Proof it's not hallucinating via automated evals and full observability — not just a demo that happened to work once
Deployable into existing tools (Slack, and by extension any CRM/helpdesk) via automation, not confined to a chat window
The architecture here — FastAPI backend + MCP + RAG + evals + automation — is directly reusable: swap the orders/tickets/docs tables for a real client's CRM or helpdesk data model, and this becomes a client project rather than a from-scratch build.
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
Build and manage AI-native customer support agents from Claude or any MCP client.
Connect e-commerce and marketing data to AI assistants via MCP.
Let AI agents query data and act across all your business apps via MCP.
Run your website's AI support agent from Claude, Cursor or any MCP client. Manage the knowledge base, edit agent instructions, read conversations and leads, reply live to visitors, and check plan usage. 54 tools, OAuth sign-in, no API key. Free with every Asyntai account: https://asyntai.com/documentation/mcp/
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAI customer support MCP server with order status lookup and RAG-powered knowledge base search for e-commerce stores.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered customer support with real-time access to CRM, ticketing, and communication tools via MCP, supporting context-aware conversations and automated actions.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceExposes order status lookup and knowledge base search tools from the Support Agent AI over MCP, enabling MCP clients to handle customer support queries with grounded, citation-backed answers.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to perform retrieval-augmented generation with hybrid search, reranking, multi-modal image processing, and RAG evaluation through standardized MCP tools.MIT
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/HassanYousafzai/ai-support-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server