pvs-mcp-server
by pvsmark
README.md
# SQL Anywhere MCP Server - PM2
Simple PM2 deployment for running one MCP server process per SQL Anywhere database.
## Files
```text
.env shared credentials and runtime settings
package.json npm scripts
ecosystem.config.cjs generated PM2 process list
configs/*.json generated DB connection config files
scripts/generate-configs.cjs config + PM2 generator
src/server.js MCP server
src/start-connection.js starts one DB config file
logs/.gitkeep keeps logs folder in git
```
## 1. Install
```bash
npm install
npm install -g pm2
```
## 2. Set shared credentials
Edit `.env` once:
```env
MCP_SERVER_API_KEY=change-this-user-key
ADMIN_API_KEYS=change-this-admin-key
ODBC_USER=readonly_user
ODBC_PASSWORD=readonly_password
CORS_ALLOWED_ORIGINS=https://your-openwebui-domain.com
```
Use a read-only SQL Anywhere account.
## 3. Generate DB config files and PM2 apps
Generate 5 databases on ports `8081` to `8085`:
```bash
npm run generate:configs -- --count 5 --base-port 8081
```
This creates:
```text
configs/db1.json
configs/db2.json
configs/db3.json
configs/db4.json
configs/db5.json
ecosystem.config.cjs
```
Default generated DSNs are:
```text
DB1_DSN
DB2_DSN
DB3_DSN
DB4_DSN
DB5_DSN
```
To use your real DSN names in one command:
```bash
npm run generate:configs -- --names db1,db2,db3,db4,db5 --dsns TestData,PVSData,PVSales,ValueDB,SALT --base-port 8000
```
To generate a different number of databases:
```bash
npm run generate:configs -- --count 10 --base-port 8081
```
To use a custom DSN naming pattern:
```bash
npm run generate:configs -- --count 5 --dsn-prefix PVS_DB --dsn-suffix _DSN --base-port 8081
```
That generates DSNs like:
```text
PVS_DB1_DSN
PVS_DB2_DSN
PVS_DB3_DSN
PVS_DB4_DSN
PVS_DB5_DSN
```
See all generator options:
```bash
npm run generate:configs -- --help
```
## 4. Check syntax
```bash
npm run check
```
## 5. Test one DB without PM2
```bash
npm run start:one -- configs/db1.json
```
Then open:
```text
http://localhost:8081/health
```
Stop it with `Ctrl+C` after testing.
## 6. Start with PM2
```bash
npm run pm2:start
npm run pm2:save
```
## 7. Monitor
```bash
npm run pm2:status
npm run pm2:logs
```
Health checks:
```text
http://localhost:8081/health
http://localhost:8082/health
http://localhost:8083/health
http://localhost:8084/health
http://localhost:8085/health
```
MCP endpoints:
```text
http://localhost:8081/mcp
http://localhost:8082/mcp
http://localhost:8083/mcp
http://localhost:8084/mcp
http://localhost:8085/mcp
```
Use this auth header from Open WebUI or ChatGPT connector:
```text
Authorization: Bearer <MCP_SERVER_API_KEY>
```
## PM2 commands
```bash
npm run pm2:restart
npm run pm2:stop
npm run pm2:delete
npm run pm2:logs
npm run pm2:status
```
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing