一款具有本地RAG(检索增强生成)数据库和过期记忆功能的增强型MCP(模型上下文协议)服务器。
克隆仓库:
git clone https://github.com/your-org/mcp-synaptic.git
cd mcp-synaptic
安装依赖项:
# 对于基于API的嵌入(推荐 - 轻量级)
uv sync
# 对于本地嵌入(包含PyTorch - 较重)
uv sync --extra local-embeddings
初始化项目:
uv run mcp-synaptic init
启动服务器:
uv run mcp-synaptic server
服务器默认将在http://localhost:8000上运行。
使用Docker Compose构建和运行:
docker-compose up --build
或者单独运行容器:
docker build -t mcp-synaptic .
docker run -p 8000:8000 mcp-synaptic
在项目根目录创建一个.env文件(使用.env.example作为模板):
# 服务器配置
SERVER_HOST=localhost
SERVER_PORT=8000
DEBUG=false
LOG_LEVEL=INFO
# 数据库配置
SQLITE_DATABASE_PATH=./data/synaptic.db
CHROMADB_PERSIST_DIRECTORY=./data/chroma
# 内存配置
DEFAULT_MEMORY_TTL_SECONDS=3600
MAX_MEMORY_ENTRIES=10000
MEMORY_CLEANUP_INTERVAL_SECONDS=300
# RAG配置
EMBEDDING_MODEL=text-embedding-3-small
EMBEDDING_PROVIDER=api
EMBEDDING_API_BASE=http://localhost:4000
EMBEDDING_API_KEY=your-api-key-here
MAX_RAG_RESULTS=10
RAG_SIMILARITY_THRESHOLD=0.7
# Redis(可选)
REDIS_URL=redis://localhost:6379/0
REDIS_ENABLED=false
基于API的嵌入(推荐)
EMBEDDING_PROVIDER=api并配置EMBEDDING_API_BASE本地嵌入
EMBEDDING_PROVIDER=local并使用--extra local-embeddings安装import asyncio
from mcp_synaptic import SynapticServer, Settings
async def main():
settings = Settings()
server = SynapticServer(settings)
# 添加一个1小时过期的记忆
await server.memory_manager.add(
key="user_preference",
data={"theme": "dark", "language": "en"},
ttl_seconds=3600
)
# 在RAG数据库中存储文档
await server.rag_database.add_document(
content="MCP Synaptic是一款增强型服务器",
metadata={"source": "文档", "version": "1.0"}
)
# 搜索相似文档
results = await server.rag_database.search(
query="增强型服务器",
limit=5
)
await server.start()
if __name__ == "__main__":
asyncio.run(main())
# 使用自定义配置启动服务器
uv run mcp-synaptic server --host 0.0.0.0 --port 9000 --debug
# 初始化新项目
uv run mcp-synaptic init ./my-project
# 显示版本
uv run mcp-synaptic version
const eventSource = new EventSource('http://localhost:8000/events');
eventSource.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log('事件:', data);
};
// 监听记忆过期事件
eventSource.addEventListener('memory_expired', function(event) {
const data = JSON.parse(event.data);
console.log('记忆过期:', data.key);
});
// 监听RAG文档更新
eventSource.addEventListener('document_added', function(event) {
const data = JSON.parse(event.data);
console.log('文档添加:', data.id);
});
POST /memory - 添加新的记忆GET /memory/{key} - 根据键检索记忆DELETE /memory/{key} - 删除记忆GET /memory - 列出所有记忆POST /rag/documents - 添加文档GET /rag/documents/{id} - 根据ID获取文档POST /rag/search - 搜索文档DELETE /rag/documents/{id} - 删除文档GET /events - SSE端点用于实时更新GET /ws - WebSocket端点(替代方案)# 安装开发依赖项
uv sync --group dev
# 安装预提交钩子
pre-commit install
# 运行测试
uv run pytest
# 运行类型检查
uv run mypy mcp_synaptic
# 运行代码检查
uv run ruff check mcp_synaptic
uv run black mcp_synaptic
# 运行所有检查
uv run pytest && uv run mypy mcp_synaptic && uv run ruff check mcp_synaptic
mcp-synaptic/
├── mcp_synaptic/ # 主包
│ ├── core/ # 核心服务器功能
│ ├── mcp/ # MCP协议实现
│ ├── sse/ # 服务器发送事件
│ ├── rag/ # RAG数据库
│ ├── memory/ # 记忆管理
│ ├── config/ # 配置
│ └── utils/ # 工具
├── tests/ # 测试套件
│ ├── unit/ # 单元测试
│ └── integration/ # 集成测试
├── data/ # 数据存储
├── docker/ # Docker配置
└── docs/ # 文档
git checkout -b feature/amazing-feature)git commit -m '添加神奇特性')git push origin feature/amazing-feature)# 运行所有测试
uv run pytest
# 运行覆盖率测试
uv run pytest --cov=mcp_synaptic --cov-report=html
# 运行特定测试文件
uv run pytest tests/unit/test_memory.py
# 只运行集成测试
uv run pytest tests/integration/
# 使用Docker Compose
docker-compose -f docker-compose.prod.yml up -d
# 使用systemd服务
sudo systemctl enable mcp-synaptic
sudo systemctl start mcp-synaptic
GET /healthGET /metricsGET /admin本项目根据MIT许可证发布 - 查看LICENSE文件了解详情。
MCP Synaptic - 智能AI系统中的记忆与知识桥梁。