npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@vektormemory/vek-sync

v0.3.1

Published

Portable MCP server config sync across Claude Desktop, Cursor, VS Code, Windsurf and more.

Downloads

194

Readme

vek-sync

One config file. Every editor. Always in sync.

vek-sync is a zero-dependency CLI that keeps your MCP (Model Context Protocol) server configurations in sync across every AI editor — Claude Desktop, Cursor, VS Code, Windsurf, Claude Code, Cline, Roo Code, Gemini CLI, GitHub Copilot, Continue, and Codex. No account. No cloud. Just a single .mcp.json file and one command.

Define your servers once. Push to every editor. Pull from any editor to bootstrap. Ping servers to verify they're alive. Share configs via URL. Store secrets safely in an encrypted local vault.

Install

npm install -g @vektormemory/vek-sync

Quick start

# Bootstrap from an existing editor
vek-sync init --from cursor

# Preview what sync will change
vek-sync sync --dry-run

# Push to all editors
vek-sync sync

# Verify servers are actually running
vek-sync ping

The .mcp.json file

Commit this to your repo (secrets use vault refs, never plaintext):

{
  "mcpSync": {
    "version": "1.0",
    "description": "My MCP servers"
  },
  "servers": {
    "my-server": {
      "command": "node",
      "args": ["/path/to/server.mjs", "mcp"],
      "env": {
        "API_KEY": "vault:my-api-key"
      }
    },
    "my-sse-server": {
      "url": "https://my-server.example.com/sse",
      "headers": {
        "Authorization": "vault:my-auth-token"
      }
    }
  }
}

Commands

vek-sync init

Create a fresh .mcp.json in the current directory. Use --from to bootstrap from an installed editor, or --from-url to pull a shared config.

vek-sync init
vek-sync init --description "My project MCP servers"
vek-sync init --from cursor
vek-sync init --from-url https://paste.rs/abc123

vek-sync sync

Push .mcp.json → all installed editors. Safe — never wipes existing non-MCP config keys. Backs up each editor config before writing. Use --dry-run to preview changes without touching anything.

vek-sync sync
vek-sync sync --dry-run
vek-sync sync --only claudeDesktop,cursor
vek-sync sync --watch                        # re-sync on .mcp.json change

vek-sync add

Interactive wizard to add a new MCP server to .mcp.json. Searches the curated registry and npm, lets you pick, fills in env keys, stores secrets in the vault.

vek-sync add
vek-sync add github

vek-sync ping

Spawn each configured server and verify it responds to an MCP initialize handshake. HTTP servers are checked with a GET request.

vek-sync ping
vek-sync ping --only my-server

vek-sync search

Search the curated registry and npm for MCP servers by keyword.

vek-sync search postgres
vek-sync search slack

vek-sync share

Upload your .mcp.json to paste.rs and get a shareable URL. Secrets are stripped before upload.

vek-sync share

vek-sync profile

Manage named profiles inside .mcp.json. Switch between different sets of servers for different projects or environments.

vek-sync profile list
vek-sync profile use work
vek-sync profile save personal

vek-sync export

Pull MCP servers from all installed editors → .mcp.json. Merges, never overwrites.

vek-sync export
vek-sync export --only windsurf

vek-sync status

Show which editors are installed and how many servers each has.

vek-sync status

vek-sync diff

Show drift between .mcp.json and what's actually in each editor. Exits non-zero if drift detected — useful in CI.

vek-sync diff

vek-sync vault

Store secrets encrypted on disk, machine-bound with AES-256-GCM. Reference them in .mcp.json as vault:key-name.

No account required. The vault is local-only — secrets are encrypted on your machine and never leave it.

vek-sync vault set my-api-key sk-abc123
vek-sync vault get my-api-key
vek-sync vault list
vek-sync vault delete my-api-key

Vault files live in ~/.vek-sync/ with permissions set to 600. The encryption key is derived from your machine identity — secrets encrypted on one machine cannot be read on another.

Supported editors

| Editor | Config location | Notes | |---|---|---| | Claude Desktop | %APPDATA%/Claude/claude_desktop_config.json | Windows / macOS / Linux | | Cursor | ~/.cursor/mcp.json | Global scope | | VS Code | .vscode/mcp.json | Workspace-scoped | | Windsurf | ~/.codeium/windsurf/mcp_config.json | — | | Claude Code | ~/.claude/claude_desktop_config.json | Same format as Claude Desktop | | Cline | %APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/… | VS Code extension | | Roo Code | %APPDATA%/Code/User/globalStorage/rooveterinaryinc.roo-cline/… | VS Code extension | | Gemini CLI | ~/.gemini/settings.json | — | | GitHub Copilot | ~/.copilot/mcp-config.json | — | | Continue | ~/.continue/config.json | Array format, auto-converted | | Codex | ~/.codex/config.toml | TOML format, auto-converted |

Options

| Flag | Description | |---|---| | --file <path> | Path to .mcp.json (default: walks up from cwd) | | --only <name,...> | Limit command to specific connector(s) | | --dry-run | Preview changes without writing anything | | --watch | Re-sync automatically when .mcp.json changes | | --from <editor> | Bootstrap init from an installed editor | | --from-url <url> | Bootstrap init from a shared paste URL | | --description <text> | Description text for init |

Connector names: claudeDesktop, cursor, vscode, windsurf, claudeCode, cline, rooCode, gemini, copilot, continue_, codex

Design

  • Zero dependencies — pure Node.js ESM, no npm install step, no native addons
  • Secrets never in plaintextvault:key-name refs resolved at runtime, never written to editor configs as raw values
  • Backup before write — every sync backs up the target config to ~/.vek-sync/backups/<timestamp>/ first
  • Non-destructive writessync merges into existing editor configs, preserving all non-MCP keys
  • Standalone connectors — each connector is self-contained with no shared runtime state
  • CI-friendlydiff exits non-zero on drift; --dry-run lets you validate without side effects

License

Apache-2.0