Struggling hard to install python language server on Remote host without internet

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Hello,

I’ve been trying to install Python from Anysphere on my remote host to enable “Go to definition” and other options.
Problem is that the remote host I am using is a dark site which only allows SSH and has not internet connection, thus I am unable to install it using option “Install in remote” from extensions menu. To tackle this problem with other extensions, I simply went to open-vsx link from settings of extension, downloaded the vsix file and scp’d it to host and installed with command line as

.cursor-server/bin/<hash>/bin/remote-cli/code --install-extension extension.vsix

But the problem with this one is when I copy link from this extension It gives this link - Cursor which is non-existent and redirects to cursor landing page.
I tried finding this in open-vsx and downloading and installing from there https://open-vsx.org/extension/anysphere/pyright but this one just doesnt seem to work. It installs a different extension that has a different icon than the Python one.

Can I bundle the vsix from this locally installed extension and use that on remote host? Any kind of help will be deeply appreciated, I tried other extensions like Pylance but that doesnt work either.

Steps to Reproduce

Thoroughly descirbe in descirpion

Operating System

MacOS

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2.2.43
VSCode Version: 1.105.1
Commit: 32cfbe848b35d9eb320980195985450f244b3030
Date: 2025-12-19T06:06:44.644Z
Electron: 37.7.0
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Darwin arm64 24.6.0

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey, thanks for the report.

Yes, you can export a VSIX from a local install. Cursor extensions are stored at:

macOS: ~/.cursor/extensions/anysphere.cursorpyright-<version>/

To create a VSIX:

  1. Find the extension folder at the path above
  2. Zip the contents:
    cd ~/.cursor/extensions && zip -r cursorpyright.vsix anysphere.cursorpyright-*/
  3. SCP the file to the remote host
  4. Install it:
    .cursor-server/bin/<hash>/bin/remote-cli/code --install-extension cursorpyright.vsix

Also check this thread for offline remote servers. It includes a script for cases like this: How to download cursor remote-ssh server manually?

If it doesn’t work, tell me the exact error you get during install.

It gives error

.cursor-server/bin/32cfbe848b35d9eb320980195985450f244b3030/bin/remote-cli/code
 --install-extension cursorpyright.vsix 
Installing extensions on SSH: 10.x.x.x...
Error: extension/package.json not found inside zip.
    at ZipFile.<anonymous> (file:///home/abc/.cursor-server/bin/32cfbe848b35d9eb320980195985450f244b3030/out/server-main.js:48:5196)
    at Object.onceWrapper (node:events:632:28)
    at ZipFile.emit (node:events:518:28)
    at FdSlicer.<anonymous> (/home/abc/.cursor-server/bin/32cfbe848b35d9eb320980195985450f244b3030/node_modules/yauzl/index.js:205:10)
    at Object.onceWrapper (node:events:632:28)
    at FdSlicer.emit (node:events:518:28)
    at onCloseDone (/home/abc/.cursor-server/bin/32cfbe848b35d9eb320980195985450f244b3030/node_modules/yauzl/fd-slicer.js:75:12)
    at /home/abc/.cursor-server/bin/32cfbe848b35d9eb320980195985450f244b3030/node_modules/graceful-fs/graceful-fs.js:61:14
    at FSReqCallback.oncomplete (node:fs:189:23)
Failed Installing Extensions: vscode-remote://ssh-remote%2B10.x.x.x/home/abc/cursorpyright.vsix


I also tried zipping it from directly inside the directory to check if error goes away if package.json is on top level directory but that doesnt help either.

I tried to unzip other extensions and I think they have a directory structure where there is a directrory called “extension” and a file called “extension.vsixmanifest” that defines installation so I think simply zipping the directory and installing wont help, we gotta build the vsix file the right way.

Simpler solution at your end would be to get the vsix file download link from your servers.

I’ve also tried packaging using vsce as suggested by cursor itself but it doesnt work

➜  anysphere.cursorpyright-1.0.10 vsce package  

Executing prepublish script 'npm run vscode:prepublish'...



> [email protected] vscode:prepublish

> node ./build/checkPackage.js && npm run clean && webpack --mode production --progress && shx cp ../../README.md .



node:internal/modules/cjs/loader:1423

  throw err;

  ^



Error: Cannot find module '/Users/mohit.chandak/.cursor/extensions/anysphere.cursorpyright-1.0.10/build/checkPackage.js'

    at Module._resolveFilename (node:internal/modules/cjs/loader:1420:15)

    at defaultResolveImpl (node:internal/modules/cjs/loader:1058:19)

    at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1063:22)

    at Module._load (node:internal/modules/cjs/loader:1226:37)

    at TracingChannel.traceSync (node:diagnostics_channel:328:14)

    at wrapModuleLoad (node:internal/modules/cjs/loader:245:24)

    at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:154:5)

    at node:internal/main/run_main_module:33:47 {

  code: 'MODULE_NOT_FOUND',

  requireStack: []

}



Node.js v25.2.1

 ERROR  npm failed with exit code 1

Ok So to finally fix it, in addition to above steps, I had to go in package.json and remove line that said prepublish:

Then i installed remaining npm dependencies with

npm install

And then finally built the package with

vsce package

This generated a package with expected directory structure

 INFO  Files included in the VSIX:

cursorpyright-1.0.10.vsix

├─ [Content_Types].xml 

├─ extension.vsixmanifest 

└─ extension/

   ├─ LICENSE.txt [0.61 KB]

   ├─ changelog.md [2.37 KB]

   ├─ package.json [52.67 KB]

   ├─ package.json.backup [52.8 KB]

   ├─ package.json.bak [52.8 KB]

   ├─ packages.config [0.13 KB]

   ├─ readme.md [1.47 KB]

   ├─ sign.proj [3.17 KB]

   ├─ dist/

   │  ├─ extension.js [495.58 KB]

   │  ├─ server.js [3.67 MB]

   │  ├─ server.js.LICENSE.txt [2.8 KB]

   │  └─ typeshed-fallback/ (4659 files) [10.03 MB]

   ├─ images/

   │  └─ pyright-icon.png [14.04 KB]

   ├─ node_modules/

   │  ├─ @isaacs/ (26 files) [62.06 KB]

   │  ├─ @vscode/ (6 files) [20.02 KB]

   │  ├─ jsonc-parser/ (19 files) [207.83 KB]

   │  ├─ semver/ (52 files) [95.45 KB]

   │  ├─ vscode-jsonrpc/ (44 files) [219.62 KB]

   │  ├─ vscode-languageclient/ (174 files) [1.15 MB]

   │  ├─ vscode-languageserver/ (58 files) [202.07 KB]

   │  ├─ vscode-languageserver-protocol/ (65 files) [394.27 KB]

   │  └─ vscode-languageserver-types/ (9 files) [399.82 KB]

   └─ schemas/

      └─ pyrightconfig.schema.json [47.38 KB]

This topic was automatically closed 22 days after the last reply. New replies are no longer allowed.