Skip to main content
Glama
CeyDrew

Claude Merkezi MCP Server

by CeyDrew
README.md
# Claude Merkezi

**A toolkit for running [Claude Code](https://claude.com/claude-code) across multiple machines and projects — without ever pasting a server password into the chat.**

[Türkçe README](README.tr.md) · Node.js ≥ 18.17 · Windows & macOS · MIT

Claude Merkezi ("Claude Hub" in Turkish) has three parts:

| Part | What it does |
|---|---|
| **Launcher** | Pick a project folder from a menu and start Claude Code there. Sessions are named `MACHINE - project`. |
| **Vault + MCP server** | Store FTP / FTPS / SFTP / SSH credentials once, encrypted. Claude deploys files and runs commands through MCP tools and never sees the passwords. |
| **Hub dashboard** | A web panel that shows every Claude Code session on the local network live: what it is doing, whether it is waiting for approval, its todo list and last reply. Includes a task board per project. |

> The user interface and messages are in Turkish.

## Highlights

- **MCP server written from scratch** — JSON-RPC 2.0 over stdio, no SDK. 10 tools:

  | Tool | Purpose |
  |---|---|
  | `sunucular` | List the servers linked to the current project (no secrets) |
  | `listele`, `indir` | List a remote folder, download a file |
  | `yukle` | Upload to a test server. Only changed files are sent; `onizleme` shows the plan first |
  | `ssh_komut` | Run a command on a test server |
  | `canli_yukle`, `canli_ssh_komut` | Same for production — **requires user approval on every call** |
  | `isler`, `is_ekle`, `is_guncelle` | Read and update the hub's task board |

- **Encrypted vault** — AES-256-GCM. The key is protected by Windows DPAPI or the macOS Keychain. Password-protected backups use scrypt key derivation.
- **SSH host key pinning** — the server's identity is stored on first connect; a changed key is rejected.
- **Live session tracking** — 12 Claude Code hooks (`SessionStart`, `PreToolUse`, `PostToolUse`, `Notification`, `Stop`, …) report to the hub. Prompts and commands are truncated and password-like values are masked before they leave the machine; file contents and tool outputs are never sent.
- **Zero-config networking** — the hub is discovered over UDP broadcast; machines pair with a 6-digit code; the dashboard is password protected.
- **One-step install / uninstall** — registers the MCP server, adds hooks to `~/.claude/settings.json` (with a backup), sets up auto-start and a desktop shortcut. Re-running is safe.
- **Tests** — unit, integration and vault tests with the built-in `node:test` runner.
- **Two runtime dependencies** only: [`ssh2`](https://github.com/mscdex/ssh2) and [`basic-ftp`](https://github.com/patrickjuchli/basic-ftp).

## Architecture

```
 Machine A                                  Machine B (hub)
┌──────────────────────────────┐          ┌──────────────────────────────┐
│ Claude Code                  │          │ Hub server (Node HTTP)       │
│  ├─ hooks ─────────────────────── HTTP ──▶  sessions · task board      │
│  └─ MCP server (stdio)       │          │  web dashboard :7380         │
│       └─ vault (AES-256-GCM) │          └──────────────────────────────┘
│            └─ SSH / SFTP / FTP ──▶ your servers
└──────────────────────────────┘
```

## Getting started

```bash
git clone https://github.com/CeyDrew/claude-merkezi.git
cd claude-merkezi
node kur.js          # interactive install (or Kur.bat / Kur.command)
```

1. On the first machine, answer **E** (yes) to "make this machine the hub", then open `http://127.0.0.1:7380` and set a dashboard password.
2. On other machines, choose **Makineler > Yeni bilgisayar ekle** in the dashboard to get a 6-digit code, copy the folder over and run the installer. It finds the hub on the network automatically.
3. Start Claude with the **Claude Başlatıcı** shortcut (or `node baslatici.js`).

Now you can simply tell Claude *"deploy this project to the test server"* and it will use the vault tools.

Uninstall hooks, MCP registration and auto-start with `node kur.js --kaldir` (your data is kept).

## Security model

- The vault lives in `~/.claude-merkezi/kasa.json`, outside the app folder.
- Claude runs as the same OS user, so this is **not** a hard security boundary. The goal is to keep credentials out of the conversation, logs and Claude's normal workflow. Use least-privilege server accounts.
- `.git`, `node_modules`, `.claude` and `.env*` files are never uploaded.
- The hub uses plain HTTP on the local network. Do not use it on untrusted networks.

## Development

```bash
npm install
npm test
```

## License

[MIT](LICENSE) © 2026 Abdurrahman Bilici

Maintenance

ActivityMaintained
ResponsivenessNo issues