Skip to main content
Glama

MemOS-MCP

by qinshu1109
Apache 2.0
3
  • Linux
  • Apple
test_vscode_extension.py7.97 kB
#!/usr/bin/env python3 """ VS Code扩展功能测试脚本 测试vscode_api_server.py和VS Code扩展的功能 """ import sys import os import requests import json import time import subprocess import threading from pathlib import Path # 添加项目根目录到Python路径 project_root = Path(__file__).parent sys.path.insert(0, str(project_root)) def test_api_server(): """测试API服务器功能""" print("🧪 测试VS Code API服务器...") base_url = "http://localhost:7788" # 测试健康检查 print("\n1. 测试健康检查") try: response = requests.get(f"{base_url}/health", timeout=5) if response.status_code == 200: print("✅ 健康检查通过") data = response.json() print(f" 状态: {data['data']['api_status']}") print(f" Memory类型: {data['data']['memory_types']}") else: print(f"❌ 健康检查失败: {response.status_code}") return False except Exception as e: print(f"❌ 健康检查失败: {e}") return False # 测试添加记忆 print("\n2. 测试添加记忆") test_code = """def fibonacci(n): if n <= 1: return n return fibonacci(n-1) + fibonacci(n-2)""" try: response = requests.post(f"{base_url}/mem/add", json={ "text": test_code, "memory_type": "code_snippet_mem", "tags": ["Python", "fibonacci", "recursion", "algorithm"], "metadata": {"language": "python", "source": "test"} }, timeout=10) if response.status_code == 200: data = response.json() if data['success']: print("✅ 添加记忆成功") print(f" 预览: {data['data']['content_preview']}") print(f" 处理时间: {data['data']['processing_time']}s") else: print(f"❌ 添加记忆失败: {data['message']}") return False else: print(f"❌ 添加记忆失败: {response.status_code}") return False except Exception as e: print(f"❌ 添加记忆失败: {e}") return False # 测试搜索记忆 (GET) print("\n3. 测试GET搜索") try: response = requests.get(f"{base_url}/mem/search", params={"q": "fibonacci"}, timeout=10) if response.status_code == 200: data = response.json() if data['success']: print("✅ GET搜索成功") print(f" 找到 {data['data']['total_count']} 条结果") if data['data']['results']: result = data['data']['results'][0] print(f" 第一条: {result['content'][:50]}...") else: print(f"❌ GET搜索失败: {data['message']}") else: print(f"❌ GET搜索失败: {response.status_code}") except Exception as e: print(f"❌ GET搜索失败: {e}") # 测试搜索记忆 (POST) print("\n4. 测试POST搜索") try: response = requests.post(f"{base_url}/mem/search", json={ "query": "Python function", "memory_type": "code_snippet_mem", "limit": 3 }, timeout=10) if response.status_code == 200: data = response.json() if data['success']: print("✅ POST搜索成功") print(f" 查询: {data['data']['query']}") print(f" 找到 {data['data']['total_count']} 条结果") print(f" 处理时间: {data['data']['processing_time']}s") for i, result in enumerate(data['data']['results']): print(f" 结果{i+1}: {result['content'][:50]}...") print(f" 标签: {result['tags']}") else: print(f"❌ POST搜索失败: {data['message']}") else: print(f"❌ POST搜索失败: {response.status_code}") except Exception as e: print(f"❌ POST搜索失败: {e}") return True def test_extension_compilation(): """测试VS Code扩展编译""" print("\n🧪 测试VS Code扩展编译...") extension_dir = project_root / "vscode-extension" # 检查TypeScript文件 ts_file = extension_dir / "src" / "extension.ts" if not ts_file.exists(): print("❌ extension.ts文件不存在") return False print("✅ TypeScript源文件存在") # 检查package.json package_file = extension_dir / "package.json" if not package_file.exists(): print("❌ package.json文件不存在") return False print("✅ package.json文件存在") # 检查语法(简单检查) try: with open(ts_file, 'r', encoding='utf-8') as f: content = f.read() if 'vscode' in content and 'activate' in content: print("✅ TypeScript文件包含必要的VS Code API调用") else: print("⚠️ TypeScript文件可能缺少必要的VS Code API调用") except Exception as e: print(f"❌ 读取TypeScript文件失败: {e}") return False return True def start_api_server_background(): """在后台启动API服务器""" print("🚀 在后台启动API服务器...") try: # 启动API服务器进程 process = subprocess.Popen([ sys.executable, "vscode_api_server.py" ], cwd=str(project_root), stdout=subprocess.PIPE, stderr=subprocess.PIPE) # 等待服务器启动 time.sleep(3) # 检查进程是否还在运行 if process.poll() is None: print("✅ API服务器已在后台启动") return process else: stdout, stderr = process.communicate() print(f"❌ API服务器启动失败") print(f" stdout: {stdout.decode()}") print(f" stderr: {stderr.decode()}") return None except Exception as e: print(f"❌ 启动API服务器失败: {e}") return None def main(): """主测试函数""" print("🚀 VS Code扩展功能测试套件") print("=" * 60) # 测试扩展编译 if not test_extension_compilation(): print("\n❌ 扩展编译测试失败") return False # 启动API服务器 server_process = start_api_server_background() if not server_process: print("\n❌ 无法启动API服务器") return False try: # 测试API服务器 if test_api_server(): print("\n✅ 所有API测试通过") else: print("\n❌ API测试失败") return False print("\n" + "=" * 60) print("📋 测试总结:") print("✅ VS Code扩展结构正确") print("✅ API服务器功能正常") print("✅ 记忆添加和搜索功能工作正常") print("✅ 支持GET和POST搜索接口") print("✅ CORS头配置正确") print("\n📖 下一步:") print("1. 在VS Code中安装扩展: 打开vscode-extension目录") print("2. 运行 'npm install' 安装依赖") print("3. 运行 'npm run compile' 编译TypeScript") print("4. 按F5启动扩展开发模式") print("5. 使用Ctrl+Shift+M搜索记忆") return True finally: # 清理:终止API服务器进程 if server_process: print("\n🔒 关闭API服务器...") server_process.terminate() try: server_process.wait(timeout=5) except subprocess.TimeoutExpired: server_process.kill() if __name__ == "__main__": success = main() sys.exit(0 if success else 1)

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/qinshu1109/memos-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server