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
#!/bin/bash
# MemOS systemd服务安装脚本
# 用于安装、配置和管理MemOS系统服务
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${BLUE}ℹ️ $1${NC}"
}
log_success() {
echo -e "${GREEN}✅ $1${NC}"
}
log_warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
log_error() {
echo -e "${RED}❌ $1${NC}"
}
# 检查权限
check_permissions() {
if [[ $EUID -eq 0 ]]; then
log_error "请不要使用root权限运行此脚本"
log_info "使用普通用户权限运行,需要sudo时会自动提示"
exit 1
fi
}
# 检查依赖
check_dependencies() {
log_info "检查系统依赖..."
# 检查systemctl
if ! command -v systemctl &> /dev/null; then
log_error "systemctl 未找到,请确保运行在systemd系统上"
exit 1
fi
# 检查MemOS文件
if [ ! -f "memos.service" ]; then
log_error "memos.service 文件不存在"
exit 1
fi
if [ ! -f "memos_mcp_server.py" ]; then
log_error "memos_mcp_server.py 文件不存在"
exit 1
fi
if [ ! -d "memos_venv" ]; then
log_error "虚拟环境 memos_venv 不存在"
exit 1
fi
log_success "依赖检查通过"
}
# 安装服务
install_service() {
log_info "安装MemOS systemd服务..."
# 复制服务文件到系统目录
sudo cp memos.service /etc/systemd/system/
log_success "服务文件已复制到 /etc/systemd/system/"
# 重新加载systemd配置
sudo systemctl daemon-reload
log_success "systemd配置已重新加载"
# 启用服务(开机自启动)
sudo systemctl enable memos.service
log_success "MemOS服务已设置为开机自启动"
}
# 启动服务
start_service() {
log_info "启动MemOS服务..."
# 清理可能的锁文件
find . -name "*.lock" -delete 2>/dev/null || true
find . -name "memos.pid" -delete 2>/dev/null || true
# 启动服务
sudo systemctl start memos.service
# 等待服务启动
sleep 3
# 检查服务状态
if sudo systemctl is-active --quiet memos.service; then
log_success "MemOS服务启动成功"
else
log_error "MemOS服务启动失败"
log_info "查看详细日志: sudo journalctl -u memos.service -f"
exit 1
fi
}
# 停止服务
stop_service() {
log_info "停止MemOS服务..."
sudo systemctl stop memos.service
log_success "MemOS服务已停止"
}
# 重启服务
restart_service() {
log_info "重启MemOS服务..."
sudo systemctl restart memos.service
# 等待服务启动
sleep 3
# 检查服务状态
if sudo systemctl is-active --quiet memos.service; then
log_success "MemOS服务重启成功"
else
log_error "MemOS服务重启失败"
log_info "查看详细日志: sudo journalctl -u memos.service -f"
exit 1
fi
}
# 查看服务状态
status_service() {
log_info "MemOS服务状态:"
sudo systemctl status memos.service --no-pager
}
# 查看服务日志
logs_service() {
log_info "MemOS服务日志 (按Ctrl+C退出):"
sudo journalctl -u memos.service -f
}
# 卸载服务
uninstall_service() {
log_warning "卸载MemOS服务..."
# 停止服务
sudo systemctl stop memos.service 2>/dev/null || true
# 禁用服务
sudo systemctl disable memos.service 2>/dev/null || true
# 删除服务文件
sudo rm -f /etc/systemd/system/memos.service
# 重新加载systemd配置
sudo systemctl daemon-reload
log_success "MemOS服务已卸载"
}
# 测试服务重启
test_restart() {
log_info "测试服务自动重启功能..."
# 获取服务主进程PID
MAIN_PID=$(sudo systemctl show memos.service --property=MainPID --value)
if [ "$MAIN_PID" = "0" ] || [ -z "$MAIN_PID" ]; then
log_error "服务未运行,无法测试重启"
exit 1
fi
log_info "当前主进程PID: $MAIN_PID"
# 杀死主进程模拟异常
log_info "模拟进程异常..."
sudo kill -9 "$MAIN_PID"
# 等待systemd重启服务
log_info "等待systemd自动重启服务..."
sleep 15
# 检查服务是否重新启动
if sudo systemctl is-active --quiet memos.service; then
NEW_PID=$(sudo systemctl show memos.service --property=MainPID --value)
log_success "服务自动重启成功,新PID: $NEW_PID"
else
log_error "服务自动重启失败"
exit 1
fi
}
# 显示帮助
show_help() {
echo "MemOS systemd服务管理脚本"
echo ""
echo "用法: $0 [命令]"
echo ""
echo "命令:"
echo " install 安装并启用MemOS服务"
echo " start 启动MemOS服务"
echo " stop 停止MemOS服务"
echo " restart 重启MemOS服务"
echo " status 查看服务状态"
echo " logs 查看服务日志"
echo " test 测试自动重启功能"
echo " uninstall 卸载MemOS服务"
echo " help 显示此帮助信息"
echo ""
echo "示例:"
echo " $0 install # 安装并启动服务"
echo " $0 logs # 查看实时日志"
echo " $0 test # 测试自动重启"
}
# 主函数
main() {
echo "🔧 MemOS systemd服务管理"
echo "========================="
# 进入MemOS目录
cd "$(dirname "$0")"
# 检查权限
check_permissions
# 解析命令
COMMAND="${1:-help}"
case "$COMMAND" in
"install")
check_dependencies
install_service
start_service
status_service
;;
"start")
start_service
;;
"stop")
stop_service
;;
"restart")
restart_service
;;
"status")
status_service
;;
"logs")
logs_service
;;
"test")
test_restart
;;
"uninstall")
uninstall_service
;;
"help"|"-h"|"--help")
show_help
;;
*)
log_error "未知命令: $COMMAND"
show_help
exit 1
;;
esac
}
# 信号处理
trap 'log_warning "收到中断信号"; exit 130' INT TERM
# 运行主函数
main "$@"