100 lines
3.8 KiB
Python
100 lines
3.8 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import httpx
|
|
import json
|
|
import asyncio
|
|
from typing import AsyncGenerator
|
|
|
|
async def test_deepwiki_mcp():
|
|
"""测试DeepWiki MCP服务器功能"""
|
|
print("=== 测试DeepWiki MCP服务器 ===")
|
|
|
|
# 测试直接访问DeepWiki MCP端点
|
|
deepwiki_url = "https://mcp.api-inference.modelscope.net/f9d3f201909c45/sse"
|
|
|
|
try:
|
|
async with httpx.AsyncClient(timeout=30.0) as client:
|
|
print(f"\n1. 测试直接访问DeepWiki MCP端点: {deepwiki_url}")
|
|
|
|
# 发送SSE请求
|
|
headers = {
|
|
"Accept": "text/event-stream",
|
|
"Cache-Control": "no-cache"
|
|
}
|
|
|
|
async with client.stream("GET", deepwiki_url, headers=headers) as response:
|
|
print(f"状态码: {response.status_code}")
|
|
print(f"响应头: {dict(response.headers)}")
|
|
|
|
if response.status_code == 200:
|
|
print("\n接收到的数据:")
|
|
count = 0
|
|
async for line in response.aiter_lines():
|
|
if line.strip():
|
|
print(f"Line {count}: {line}")
|
|
count += 1
|
|
if count >= 10: # 限制输出行数
|
|
print("... (更多数据被截断)")
|
|
break
|
|
else:
|
|
print(f"请求失败: {response.status_code}")
|
|
print(await response.aread())
|
|
|
|
except Exception as e:
|
|
print(f"直接访问DeepWiki失败: {e}")
|
|
|
|
# 测试通过LiteLLM访问DeepWiki MCP
|
|
print("\n\n2. 测试通过LiteLLM访问DeepWiki MCP")
|
|
litellm_mcp_url = "http://localhost:4000/mcp/deepwiki"
|
|
|
|
try:
|
|
async with httpx.AsyncClient(timeout=30.0) as client:
|
|
headers = {
|
|
"Accept": "text/event-stream",
|
|
"Cache-Control": "no-cache"
|
|
}
|
|
|
|
async with client.stream("GET", litellm_mcp_url, headers=headers) as response:
|
|
print(f"状态码: {response.status_code}")
|
|
print(f"响应头: {dict(response.headers)}")
|
|
|
|
if response.status_code == 200:
|
|
print("\n接收到的数据:")
|
|
count = 0
|
|
async for line in response.aiter_lines():
|
|
if line.strip():
|
|
print(f"Line {count}: {line}")
|
|
count += 1
|
|
if count >= 10:
|
|
print("... (更多数据被截断)")
|
|
break
|
|
else:
|
|
print(f"请求失败: {response.status_code}")
|
|
error_content = await response.aread()
|
|
print(f"错误内容: {error_content}")
|
|
|
|
except Exception as e:
|
|
print(f"通过LiteLLM访问DeepWiki失败: {e}")
|
|
|
|
# 测试LiteLLM的基本MCP端点
|
|
print("\n\n3. 测试LiteLLM的基本MCP端点")
|
|
basic_endpoints = [
|
|
"http://localhost:4000/mcp/",
|
|
"http://localhost:4000/mcp",
|
|
"http://localhost:4000/v1/mcp"
|
|
]
|
|
|
|
for endpoint in basic_endpoints:
|
|
try:
|
|
async with httpx.AsyncClient(timeout=10.0) as client:
|
|
response = await client.get(endpoint)
|
|
print(f"\n{endpoint}: {response.status_code}")
|
|
if response.status_code != 200:
|
|
print(f"错误: {response.text[:200]}")
|
|
else:
|
|
print(f"成功: {response.text[:200]}")
|
|
except Exception as e:
|
|
print(f"\n{endpoint}: 失败 - {e}")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(test_deepwiki_mcp()) |