使用说明
具有自托管LLM和Supabase集成的MCP服务器
一个全面的模型上下文协议(MCP)服务器,通过Ollama和Supabase数据库与自托管LLM模型集成,用于数据持久化和检索。
特性
- MCP协议支持:全面实施模型上下文协议规范
- 自托管LLM集成:支持基于Ollama的LLM模型(Llama2、CodeLlama等)
- Supabase数据库集成:使用Supabase完成CRUD操作
- Docker支持:使用Docker Compose进行容器化部署
- 综合测试:覆盖率≥90%的单元测试、集成测试和E2E测试
- TypeScript:完全类型化的实施,以获得更好的开发体验
- 日志记录:具有可配置级别和格式的结构化日志记录
建筑
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MCP Client │ │ MCP Server │ │ Supabase DB │
│ │◄──►│ │◄──►│ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Ollama LLM │
│ (Self-hosted) │
└─────────────────┘
快速开始
先决条件
- Docker和Docker Compose
- Node.js 18+(用于本地开发)
- 辅助账户和项目
1.克隆和设置
git clone <repository-url>
cd mcp-server-selfhosted
cp env.example .env
2.配置环境
编辑 .env 使用您的配置文件:
# Supabase Configuration
SUPABASE_URL=your_supabase_url_here
SUPABASE_ANON_KEY=your_supabase_anon_key_here
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key_here
# Self-hosted LLM Configuration
LLM_BASE_URL=http://localhost:11434
LLM_MODEL=llama2
LLM_TIMEOUT=30000
# MCP Server Configuration
MCP_SERVER_PORT=3000
MCP_SERVER_HOST=localhost
# Logging
LOG_LEVEL=info
LOG_FORMAT=json
3.从Docker Compose开始
docker-compose up -d
这将开始:
- Ollama服务(自托管法学硕士)
- MCP服务器
- 健康检查和监测
4.验证安装
# Check if services are running
docker-compose ps
# Test MCP server health
curl http://localhost:3000/health
# Test Ollama connection
curl http://localhost:11434/api/tags
5.本地测试构建(可选)
# Test TypeScript compilation
npm run build
# Test HTTP server
npm run start:http
# Test health endpoint
curl http://localhost:3000/health
可用工具
MCP服务器提供以下工具:
1. query_database
在Supabase数据库上执行SQL查询。
参数:
query(字符串,必填):要执行的SQL查询table(字符串,可选):上下文表名
例子:
{
"name": "query_database",
"arguments": {
"query": "SELECT * FROM users WHERE active = true",
"table": "users"
}
}
2. generate_text
使用自托管LLM生成文本。
参数:
prompt(字符串,必填):LLM的文本提示maxTokens(数字,可选):要生成的最大令牌数temperature(数字,可选):发电温度(0.0-1.0)
例子:
{
"name": "generate_text",
"arguments": {
"prompt": "Explain quantum computing in simple terms",
"maxTokens": 500,
"temperature": 0.7
}
}
3. store_data
将数据存储在Supabase数据库中。
参数:
table(字符串,必填):用于存储数据的表名data(object,必填):要存储的数据
例子:
{
"name": "store_data",
"arguments": {
"table": "documents",
"data": {
"title": "My Document",
"content": "Document content here",
"author": "John Doe"
}
}
}
4. retrieve_data
从Supabase数据库中检索数据。
参数:
table(字符串,必填):从中检索数据的表名filters(对象,可选):要应用的筛选器limit(number,可选):要检索的最大记录数
例子:
{
"name": "retrieve_data",
"arguments": {
"table": "documents",
"filters": {
"author": "John Doe"
},
"limit": 10
}
}
发展
地方发展设置
- 安装依赖关系:
npm install
- 启动Ollama(如果不使用Docker):
# Install Ollama
curl -fsSL https://ollama.ai/install.sh | sh
# Pull a model
ollama pull llama2
# Start Ollama
ollama serve
- 启动Supabase(如果使用本地实例):
# Install Supabase CLI
npm install -g supabase
# Start local Supabase
supabase start
- 运行开发服务器:
npm run dev
测试
该项目包括全面的测试:
# Run unit tests
npm test
# Run tests with coverage
npm run test:coverage
# Run E2E tests
npm run test:e2e
# Run all tests
npm run test && npm run test:e2e
代码质量
# Lint code
npm run lint
# Fix linting issues
npm run lint:fix
Docker配置
Dockerfile
这 Dockerfile 创建优化的生产映像:
- Node.js 18 Alpine基础
- 非root用户安全
- 健康检查
- 多阶段构建,图像尺寸更小
Docker Compose
这 docker-compose.yml 编排:
- Ollama LLM服务
- MCP服务器
- 健康检查和依赖关系
- Ollama模型的体积持久性
安全考虑
- SQL注入保护:SQL查询的基本清理
- 环境变量:存储在环境变量中的敏感数据
- 非根容器:Docker容器以非root用户身份运行
- 输入验证:用于输入验证的Zod模式
- 错误处理:全面的错误处理,无信息泄露
监控和日志记录
日志级别
DEBUG:详细的调试信息INFO:一般信息信息WARN:警告信息ERROR:错误消息
日志格式
text:人类可读格式json:用于日志聚合的结构化JSON格式
健康检查
- HTTP端点:
GET /health - Docker健康检查
- 服务依赖性检查
故障排除
常见问题
-
Ollama连接失败
# Check if Ollama is running curl http://localhost:11434/api/tags # Restart Ollama service docker-compose restart ollama -
Supabase连接失败
# Verify environment variables echo $SUPABASE_URL echo $SUPABASE_ANON_KEY # Test connection curl -H "Authorization: Bearer $SUPABASE_ANON_KEY" $SUPABASE_URL/rest/v1/ -
MCP服务器未启动
# Check logs docker-compose logs mcp-server # Check health curl http://localhost:3000/health -
Docker构建失败,显示“tsc:未找到”
# This is fixed in the current Dockerfile # The issue was NODE_ENV=production preventing dev dependencies installation # Solution: Set NODE_ENV=development during build phase # If you still encounter issues, try: docker-compose build --no-cache -
TypeScript编译错误
# Test build locally first npm run build # Check for missing dependencies npm install # Clear node_modules and reinstall rm -rf node_modules package-lock.json npm install
性能优化
-
LLM性能
- 使用支持GPU的Olama以获得更好的性能
- 调整模型参数(温度、max_tokens)
- 考虑模型大小与质量的权衡
-
数据库性能
- 使用连接池
- 优化SQL查询
- 考虑索引策略
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 确保所有测试通过
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
对于问题和疑问:
- 在存储库中创建问题
- 检查故障排除部分
- 查看测试用例中的使用示例
