使用dify的知识库 api,fastapi创建mcp server
代码
@mcp.tool()
async def rag_retrieve(query: str) -> dict:
"""
Name:
***产品业务服务等相关客服问答知识检索服务
Description:
提供****业务服务等相关客服问答知识检索服务,根据输入query返回结果。
Args:
query: 搜索的内容,参数必传,例如 'query=客服电话'
"""
url = "http://117.-dbb9-4cb9-a172-482c6571aab8/retrieve"
token = "dataset-VVqUSZNMzMrVLiB4wQbvlYCW" # 你的token
headers = {
"Authorization": f"Bearer {token}",
# 使用 json= 参数时会自动设置 Content-Type,此处保留以匹配原始请求
"Content-Type": "application/json"
}
payload = {
"query": query,
"retrieval_model": {
"search_method": "semantic_search",
"reranking_enable": False, # false → False
"reranking_mode": None, # null → None
"reranking_model": {
"reranking_provider_name": "",
"reranking_model_name": ""
},
"weights": None, # null → None
"top_k": 2,
"score_threshold_enabled": False, # false → False
"score_threshold": None, # null → None
}
}
logging.info(f"rag_retrieve query:{query}")
# ✅ 使用全局连接池
client = await get_http_client()
try:
response = await client.post(url, headers=headers, json=payload)
response.raise_for_status()
result = response.json()
logging.info(f"🔍 rag_retrieve 完成")
return result
except Exception as e:
logging.error(f"❌ rag_retrieve 失败: {e}")
raise ValueError(f"调用API失败: {e}")
cherry studio客服端访问



