support-tools
mcp-support-tools
An MCP server (Model Context Protocol) that gives any MCP client, such as Claude Desktop, Cursor, or a
LangGraph agent, the tools a customer-support agent needs: customer lookup, transaction history,
knowledge-base search, and ticket escalation. Built on the official mcp Python SDK (2.x).
It packages the "business systems" side of the support bot I ran in production for two online gaming brands as a standalone, protocol-native server, on a fictional brand ("Astra Play") with fixture data. The agent side lives in support-agent-langgraph.
What it exposes
Kind | Name | Purpose |
tool |
| verification status, VIP tier, balance, active bonus |
tool |
| recent deposits and withdrawals, newest first |
tool |
| ranked knowledge-base sections with scores; falls back to unfiltered search when the category guess is wrong |
tool |
| escalation with priority rules: VIP → urgent, withdrawals / responsible gaming → high |
tool |
| tickets created in the session |
resource |
| the knowledge base as browsable documents |
prompt |
| a system prompt that tells the model when to call which tool |
The server instructions field and the triage prompt encode the rules that mattered in production:
look the customer up before talking about their money, state policies only from search results,
escalate only on explicit request or when tools cannot resolve the issue.
Use it from Claude Desktop or Cursor
pip install git+https://github.com/stepbystepautomatization-jpg/mcp-support-toolsclaude_desktop_config.json / .cursor/mcp.json:
{
"mcpServers": {
"support-tools": {
"command": "mcp-support-tools"
}
}
}Then ask: "Customer cust_2002 says their withdrawal was rejected. Why, and what should they do?"
The model calls get_customer (unverified, active bonus), get_transactions (rejected, reason
account_not_verified), search_knowledge("withdrawal rejected verification"), and answers from the data.
Streamable HTTP instead of stdio: mcp-support-tools --http (serves on :8000).
Use it from code
from mcp.client.client import Client
from mcp_support_tools.server import server
async with Client(server) as client: # in-process, no subprocess
tools = await client.list_tools()
hits = await client.call_tool("search_knowledge", {"query": "minimum withdrawal"})The same Client works with StdioServerParameters or an HTTP URL for a remote server.
Tests
pip install -e ".[dev]"
pytest # 9 tests: tools, ranking, category fallback, ticket priorities, resources, prompt, path traversalTests drive a real MCP client connected in-process to the server, so the protocol layer (schemas, serialization, error mapping) is exercised, not just the Python functions.
Design notes
Structured errors, not exceptions. A missing customer returns
{"error": "customer_not_found"}so the model can recover in the same turn instead of the tool call failing.Search returns scores. The client can decide its own threshold; a score of 0 never comes back.
Fixtures are in-memory so the repo runs anywhere. Swapping them for the real back office is three functions.
Path safety on
kb://docs/{doc_id}is enforced twice: by the SDK's resource security and by a parent-directory check in the handler.
License
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/stepbystepautomatization-jpg/mcp-support-tools'
If you have feedback or need assistance with the MCP directory API, please join our Discord server