JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q46485F
  • License MIT

Pure Rust MCP server bridging Language Server Protocol functionality to AI coding assistants

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@goobits/typemill) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    TypeMill

    Pure Rust MCP server bridging Language Server Protocol functionality to AI coding assistants

    npm version License: MIT

    Quick Start β€’ Features β€’ Tools β€’ Documentation

    TypeMill Demo


    Quick Start

    npx @goobits/typemill start

    That's it. No installation required.


    What Can TypeMill Do?

    πŸ”„ Rename Across Your Entire Codebase

    Before:                              After:
    β”œβ”€β”€ src/                             β”œβ”€β”€ src/
    β”‚   β”œβ”€β”€ utils.ts    ─────────────►   β”‚   β”œβ”€β”€ helpers.ts
    β”‚   β”œβ”€β”€ app.ts                       β”‚   β”œβ”€β”€ app.ts
    β”‚   β”‚   import { foo } from './utils'β”‚   β”‚   import { foo } from './helpers'  βœ“ Updated!
    β”‚   └── index.ts                     β”‚   └── index.ts
    β”‚       import './utils'             β”‚       import './helpers'               βœ“ Updated!

    πŸ“ Move Files with Automatic Import Updates

    Before:                              After:
    β”œβ”€β”€ src/                             β”œβ”€β”€ src/
    β”‚   β”œβ”€β”€ components/                  β”‚   β”œβ”€β”€ components/
    β”‚   β”‚   └── Button.tsx               β”‚   β”‚   └── ui/
    β”‚   └── App.tsx                      β”‚   β”‚       └── Button.tsx   ◄── Moved!
    β”‚       import { Button }            β”‚   └── App.tsx
    β”‚         from './components/Button' β”‚       import { Button }
    β”‚                                    β”‚         from './components/ui/Button'  βœ“ Fixed!

    πŸ” Understand Code Instantly

    > inspect_code("src/server.ts", line=42, character=15)
    
    {
      "definition": "src/types.ts:18",
      "type": "interface ServerConfig { port: number; host: string; }",
      "references": [
        "src/server.ts:42",
        "src/server.ts:67",
        "src/config.ts:12"
      ]
    }

    πŸ”§ Extract, Inline, Transform

    // Before: Messy inline code
    const result = items
      .filter(x => x.active)
      .map(x => x.value * 2)
      .reduce((a, b) => a + b, 0);
    
    // After: refactor action="extract" kind="function" name="calculateActiveTotal"
    function calculateActiveTotal(items: Item[]): number {
      return items
        .filter(x => x.active)
        .map(x => x.value * 2)
        .reduce((a, b) => a + b, 0);
    }
    const result = calculateActiveTotal(items);

    Architecture

    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚                         AI Assistant                            β”‚
    β”‚                  (Claude Code / Claude Desktop)                 β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚ MCP Protocol (stdio/WebSocket)
                                  β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚                          TypeMill                               β”‚
    β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
    β”‚  β”‚ inspect_codeβ”‚  β”‚ rename_all  β”‚  β”‚ workspace               β”‚  β”‚
    β”‚  β”‚ search_code β”‚  β”‚ relocate    β”‚  β”‚ β€’ find_replace          β”‚  β”‚
    β”‚  β”‚             β”‚  β”‚ prune       β”‚  β”‚ β€’ extract_dependencies  β”‚  β”‚
    β”‚  β”‚             β”‚  β”‚ refactor    β”‚  β”‚ β€’ verify                β”‚  β”‚
    β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚ Language Server Protocol
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β–Ό                   β–Ό                   β–Ό
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚ typescript- β”‚     β”‚   rust-     β”‚     β”‚    pylsp    β”‚
       β”‚ language-   β”‚     β”‚  analyzer   β”‚     β”‚             β”‚
       β”‚   server    β”‚     β”‚             β”‚     β”‚             β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            .ts .js             .rs                 .py

    Tools

    Tool Description
    inspect_code Get definition, references, type info, diagnostics at a position
    search_code Search workspace symbols with fuzzy matching
    rename_all Rename symbols, files, or directories (updates all imports)
    relocate Move symbols, files, or directories
    prune Delete with cleanup (removes unused imports)
    refactor Extract functions, inline variables, reorder code
    workspace Find/replace, dependency extraction, project verification

    All refactoring tools support dry-run mode (default) for safe previews.


    Installation

    npx @goobits/typemill start

    Supported platforms for the npm package build: macOS (arm64) and Linux (arm64).

    Option 2: Global Install

    npm install -g @goobits/typemill
    typemill start

    Option 3: Build from Source

    git clone https://github.com/goobits/typemill
    cd typemill
    cargo build --release
    ./target/release/mill start

    Configuration

    Add to Claude Desktop (~/.config/claude/claude_desktop_config.json):

    {
      "mcpServers": {
        "typemill": {
          "command": "npx",
          "args": ["@goobits/typemill", "start"]
        }
      }
    }

    Supported Languages

    Language LSP Server Extensions
    TypeScript/JavaScript typescript-language-server .ts .tsx .js .jsx
    Rust rust-analyzer .rs
    Python pylsp .py

    License

    MIT