更新mcp

This commit is contained in:
zhanggangyong
2026-01-17 07:43:12 +00:00
parent 797d194bca
commit 6f78aa8a38
2 changed files with 87 additions and 22 deletions
+39 -16
View File
@@ -34,7 +34,21 @@ MCP Search Agent 是基于 Model Context Protocol (MCP) 协议的智能搜索服
"id": "request-001",
"method": "search",
"params": {
"query": "什么是人工智能?"
"query": "什么是人工智能?",
"api_key": "your-llm-api-key"
}
}
```
**或者使用 `llm_api_key`(与API格式保持一致)**:
```json
{
"jsonrpc": "2.0",
"id": "request-001",
"method": "search",
"params": {
"query": "什么是人工智能?",
"llm_api_key": "your-llm-api-key"
}
}
```
@@ -48,8 +62,8 @@ MCP Search Agent 是基于 Model Context Protocol (MCP) 协议的智能搜索服
| method | string | 是 | 方法名,固定为 "search" |
| params | object | 是 | 请求参数对象 |
| params.query | string | 是 | 搜索查询内容 |
| params.api_key | string | 否 | LLM API密钥(可选,如果环境变量已配置则不需要) |
| params.model | string | 否 | 模型名称(可选,如果环境变量已配置则不需要) |
| params.api_key | string | 是 | LLM API密钥(**必填**,等同于API格式版本的`llm_api_key`) |
| params.llm_api_key | string | 是 | LLM API密钥(**必填**,`api_key`的别名,与API格式保持一致) |
**响应示例**:
```json
@@ -117,7 +131,8 @@ MCP Search Agent 是基于 Model Context Protocol (MCP) 协议的智能搜索服
"id": "request-002",
"method": "search/stream",
"params": {
"query": "Python编程语言的特点"
"query": "Python编程语言的特点",
"api_key": "your-llm-api-key"
}
}
```
@@ -146,7 +161,8 @@ data: {"jsonrpc":"2.0","id":"request-002","method":"task/complete","params":{"ta
"id": "request-003",
"method": "search",
"params": {
"query": "搜索查询"
"query": "搜索查询",
"api_key": "your-llm-api-key"
}
}
```
@@ -250,7 +266,8 @@ curl -X POST https://your-service-url/mcp/v1/search \
"id": "test-1",
"method": "search",
"params": {
"query": "什么是人工智能?"
"query": "什么是人工智能?",
"api_key": "your-llm-api-key"
}
}'
@@ -262,7 +279,8 @@ curl -X POST https://your-service-url/mcp/v1/search/stream \
"id": "test-2",
"method": "search/stream",
"params": {
"query": "Python编程语言的特点"
"query": "Python编程语言的特点",
"api_key": "your-llm-api-key"
}
}'
```
@@ -280,7 +298,8 @@ payload = {
"id": "python-request-1",
"method": "search",
"params": {
"query": "什么是人工智能?"
"query": "什么是人工智能?",
"api_key": "your-llm-api-key"
}
}
@@ -305,7 +324,8 @@ const payload = {
id: 'js-request-1',
method: 'search',
params: {
query: '什么是人工智能?'
query: '什么是人工智能?',
api_key: 'your-llm-api-key'
}
};
@@ -337,18 +357,21 @@ fetch(url, {
以下环境变量在 AKS 部署时已配置,用户**不需要**在请求中传递:
- `LLM_BASE_URL` - LLM服务基础URL
- `MODEL_NAME` - 模型名称
- `LITELLM_API_KEY` - LLM API密钥(如果已配置,则用户请求中不需要传递)
- `MODEL_NAME` 或 `LLM_MODEL` - 模型名称
- `SERPER_API_KEY` - Serper搜索API密钥
- `JINA_API_KEY` - Jina Reader API密钥
### 2. 用户请求参数
用户调用时**只需要**传递:
用户调用时**必须**传递:
- `query` - 搜索查询内容(**必填**)
- `api_key` - LLM API密钥(**可选**,如果部署时未配置则需要传递)
- `model` - 模型名称(**可选**,如果部署时未配置则需要传递)
- `api_key` 或 `llm_api_key` - LLM API密钥(**必填**,等同于API格式版本的`llm_api_key`,用于计费和身份验证)
**注意**:
- **`api_key`/`llm_api_key`是必需的**,必须在每次请求中传递(这是用户的LLM API密钥,用于计费和身份验证)
- **`model`不需要传递**,模型名称已在AKS部署时通过环境变量(`MODEL_NAME`或`LLM_MODEL`)配置
- 与API格式版本保持一致:用户的API密钥必须传递,其他配置由部署时通过环境变量配置
### 3. 请求格式
@@ -375,11 +398,11 @@ fetch(url, {
### Q1: 请求中是否需要传递 api_key?
**A**: 如果服务在 AKS 部署时已配置 `LITELLM_API_KEY` 环境变量,则用户请求中不需要传递 `api_key`。如果没有配置,则需要在请求的 `params` 中传递 `api_key`。
**A**: **必须传递**。`api_key`(或`llm_api_key`)是用户的LLM API密钥,必须在每次请求中传递(等同于API格式版本的`llm_api_key`)。这是用于计费和身份验证的,不能从环境变量获取。
### Q2: 请求中是否需要传递 model?
**A**: 如果服务在 AKS 部署时已配置 `MODEL_NAME` 环境变量,则用户请求中不需要传递 `model`。如果没有配置,则需要在请求的 `params` 中传递 `model`。
**A**: **不需要传递**。模型名称已在AKS部署时通过环境变量(`MODEL_NAME`或`LLM_MODEL`)配置,用户请求中不需要传递。
### Q3: 如何处理超时?
+48 -6
View File
@@ -281,9 +281,30 @@ class MCPSearchAgentServer:
}
})
# 提取API key和model(如果提供)
api_key = params.get("api_key") or os.getenv("LITELLM_API_KEY")
model = params.get("model") or os.getenv("MODEL_NAME") or os.getenv("LITELLM_MODEL")
# 提取API key(必须从请求参数中获取,等同于API格式版本的llm_api_key)
api_key = params.get("api_key") or params.get("llm_api_key")
if not api_key:
return JSONResponse({
"jsonrpc": "2.0",
"id": request.id,
"error": {
"code": -32602,
"message": "Invalid params: 'api_key' or 'llm_api_key' is required"
}
})
# 提取model(从环境变量获取,不支持在请求中传递,与API格式版本保持一致)
# 支持多种环境变量名称:MODEL_NAME(优先)、LLM_MODEL(AKS部署)、LITELLM_MODEL
model = os.getenv("MODEL_NAME") or os.getenv("LLM_MODEL") or os.getenv("LITELLM_MODEL")
if not model:
return JSONResponse({
"jsonrpc": "2.0",
"id": request.id,
"error": {
"code": -32000,
"message": "Model not configured: MODEL_NAME or LLM_MODEL environment variable is required"
}
})
# 创建任务ID
task_id = params.get("task_id", uuid.uuid4().hex)
@@ -355,9 +376,30 @@ class MCPSearchAgentServer:
}
})
# 提取API key和model(如果提供)
api_key = params.get("api_key") or os.getenv("LITELLM_API_KEY")
model = params.get("model") or os.getenv("MODEL_NAME") or os.getenv("LITELLM_MODEL")
# 提取API key(必须从请求参数中获取,等同于API格式版本的llm_api_key)
api_key = params.get("api_key") or params.get("llm_api_key")
if not api_key:
return JSONResponse({
"jsonrpc": "2.0",
"id": request.id,
"error": {
"code": -32602,
"message": "Invalid params: 'api_key' or 'llm_api_key' is required"
}
})
# 提取model(从环境变量获取,不支持在请求中传递,与API格式版本保持一致)
# 支持多种环境变量名称:MODEL_NAME(优先)、LLM_MODEL(AKS部署)、LITELLM_MODEL
model = os.getenv("MODEL_NAME") or os.getenv("LLM_MODEL") or os.getenv("LITELLM_MODEL")
if not model:
return JSONResponse({
"jsonrpc": "2.0",
"id": request.id,
"error": {
"code": -32000,
"message": "Model not configured: MODEL_NAME or LLM_MODEL environment variable is required"
}
})
task_id = params.get("task_id", uuid.uuid4().hex)