Atlas / MCP servers / mizchi / TypeScript

TypeScriptBLOCK

mcp/mizchi/typescript
Verdict
BLOCK
Grade
F
Trust score
59 /100
Exposed tools
37 30r · 5w · 2d
Transport
stdio
License
MIT
Stars
453
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://github.com/mizchi/lsmcp/actions/workflows/ci.yml) [](https://github.com/mizchi/lsmcp/actions/workflows/language-tests.yml) [](https://www.npmjs.com/package/@mizchi/lsmcp) [](https://opensource.org/licenses/MIT)

A unified MCP (Model Context Protocol) server that provides advanced code manipulation and analysis capabilities for multiple programming languages through Language Server Protocol integration.

  • 🌍 Multi-Language Support
  • 🔍 Semantic Code Analysis
  • 🤖 AI-Optimized

See examples/ for working examples of each supported language configuration.

Requirements

  • Node.js 22.0.0 or higher (required for built-in SQLite support)

Quick Start

# tsgo (reccommended)
npm add -D @mizchi/lsmcp @typescript/native-preview
npx @mizchi/lsmcp init -p tsgo
claude mcp add lsmcp npx -- -y @mizchi/lsmcp -p tsgo

# with manual --bin
claude mcp add lsmcp npx -- -y @mizchi/lsmcp --bin=""

📖 Example Usage with Claude

RECOMMENDED WORKFLOW

🎯 Core Flow: Overview → Search → Details

1. get_project_overview     # Understand the codebase
2. search_symbols           # Find what you need  
3. get_symbol_details       # Deep dive into symbols

📋 When to Use Each Tool

Initial Exploration:

  • get_project_overview - First tool to understand any codebase
  • list_dir - Browse directory structure
  • get_symbols_overview - High-level view of file symbols

Finding Code:

  • search_symbols - Primary search for functions, classes, interfaces
  • lsp_get_document_symbols - List all symbols in a specific file
  • lsp_get_workspace_symbols
Read from source at commit 677f25c033eaOBSERVED · 2026-10-08
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add types -- npx -y @internal/[email protected]
claude-desktop
{
  "mcpServers": {
    "types": {
      "command": "npx",
      "args": [
        "-y",
        "@internal/[email protected]"
      ]
    }
  }
}
03

Exposed tools (37)

30 read · 5 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
PyrightreadMicrosoft
another_toolreadAnother tool
delete_memorydestructiveDelete a memory from the project
get_available_external_symbolsreadGet all symbols available from external libraries imported in a file. Shows what symbols are imported and from which modules they come from.
get_compression_guidancereadGet guidance on token compression analysis
get_project_overviewreadGet a quick overview of the project structure, key components, and statistics.
get_symbol_detailsreadGet comprehensive details about a symbol including type information, definition, and references.
get_symbol_search_guidancereadGet guidance on how to effectively search symbols in the index
get_typescript_dependenciesreadList all TypeScript dependencies available in the project (from package.json and node_modules). Shows which external libraries have TypeScript declarations that can be indexed.
index_external_librarieswriteIndex TypeScript declaration files from node_modules to enable symbol search in external dependencies. This tool scans node_modules for .d.ts files and indexes their symbols for fast searching.
index_onboardingreadGet instructions for onboarding the symbol index for a project
list_dirreadLists all non-gitignored files and directories in the given directory (optionally with recursion). Returns a JSON object with the names of directories and files within the given directory.
list_memoriesreadList available memories for the current project
lsp_check_capabilitiesreadCheck the capabilities of the current LSP server. Shows which features are supported.
lsp_delete_symboldestructiveDelete a symbol and optionally all its references using LSP. Requires exact line:column position of the symbol.
lsp_find_referencesreadFind all references to a symbol at a specific position using LSP. Requires exact line:column coordinates.
lsp_format_documentreadFormat an entire document using LSP
lsp_get_code_actionsreadGet available code actions (quick fixes, refactorings) for a specific range using LSP. Requires line range specification.
lsp_get_completionreadGet code completion suggestions at a specific position using LSP. Requires exact line:column coordinates.
lsp_get_definitionsreadGet the definition(s) of a symbol at a specific position using LSP. Requires exact line:column coordinates.
lsp_get_diagnosticsreadGet diagnostics (errors, warnings) for a specific file using LSP. Provides detailed error and warning information.
lsp_get_document_symbolsreadGet all symbols in a document using LSP. Returns structured symbol hierarchy for the entire file.
lsp_get_hoverreadGet hover information (type signature, documentation) at a specific position using LSP. Requires exact line:column coordinates.
lsp_get_signature_helpreadGet signature help (parameter hints) for function calls using LSP. Requires exact line:column position within a function call.
lsp_get_workspace_symbolsreadSearch for symbols across the entire workspace using LSP.
lsp_rename_symbolwriteRename a symbol across the codebase using LSP. Requires exact position or text target in the specified line.
my_toolreadMy tool
parse_importswriteParse and analyze import statements in a TypeScript/JavaScript file. Shows all imports, their sources, and any aliases used.
read_memoryreadRead a specific memory from the project
replace_rangereadReplace a specific range of text in a file.
replace_regexreadReplace content using regular expressions with dotall and multiline flags
resolve_symbolwriteResolve a symbol to its definition in external libraries by analyzing import statements. For example, if a file imports { ok, Ok, Err } from
rust-analyzerreadLanguage Server for Rust
search_external_library_symbolsreadSearch for symbols in indexed external libraries (node_modules). Requires running index_external_libraries first.
search_symbolsreadSearch for symbols (functions, classes, variables, etc.) in the codebase using an indexed search.
test_toolreadTest tool
write_memorywriteWrite or update a memory for the project
04

Trust audit

BLOCKgrade F · trust 59/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (9 observation(s))
Network
declared (1 observation(s))
Shell
declared (3 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (25)

HIGHPrompt injection · prompt.tool_poisoning · CWE-94, CWE-1427
docs/ja/introduce-serena-port.md:59
IMPORTANT: Always use the symbol indexing tools to minimize code reading:
Why it matters. a tool description carrying instructions to the agent
Fix. tool descriptions describe the tool; nothing else
HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
docs/lsp-spec.md:816
* - `{}` to group sub patterns into an OR expression. (e.g. `**/*.{ts,js}`
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
docs/lsp-spec.md:10729
* - `{}` to group sub patterns into an OR expression. (e.g. `**/*.{ts,js}`
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
docs/lsp-spec.md:11092
* - `{}` to group conditions (e.g. `**/*.{ts,js}` matches all TypeScript
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_memory, lsp_delete_symbol
Why it matters. 2 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.binary · CWE-1104
examples/moonbit-project/src/test/target/wasm-gc/release/check/check.moon_db
check.moon_db
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
examples/moonbit-project/src/test/target/wasm-gc/release/check/single/single.blackbox_test.mi
single.blackbox_test.mi
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
examples/moonbit-project/src/test/target/wasm-gc/release/check/single/single.mi
single.mi
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
examples/python-project/.lsmcp/cache/symbols.db
symbols.db
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
examples/rust-project/target/debug/.fingerprint/rust-project-0110108930012809/dep-test-bin-rust-project
dep-test-bin-rust-project
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.versionrc.json
.versionrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
examples/moonbit-project/src/test/target/.moon-lock
.moon-lock
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
examples/rust-project/target/.rustc_info.json
.rustc_info.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
examples/rust-project/target/debug/.cargo-lock
.cargo-lock
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/code-indexer/src/engine/contentHash.ts:15
return createHash("sha1").update(content).digest("hex");
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/code-indexer/src/engine/contentHash.ts:26
return createHash("sha1").update(content).digest("hex");
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/code-indexer/src/engine/fileDiffDetector.bench.ts:240
crypto.createHash("sha1").update("const x = 1;").digest("hex");
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/code-indexer/src/engine/fileDiffDetector.bench.ts:245
crypto.createHash("sha1").update("x".repeat(100000)).digest("hex");
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/code-indexer/src/engine/fileDiffDetector.bench.ts:250
crypto.createHash("sha1").update("x".repeat(1000000)).digest("hex");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/code-indexer/src/cache/SQLiteCache.ts:11
import { debugLogWithPrefix } from "../../../../src/utils/debugLog.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/code-indexer/src/cache/SymbolCacheManager.ts:6
import { debugLogWithPrefix } from "../../../../src/utils/debugLog.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/code-indexer/src/config/configLoader.ts:8
import { errorLog } from "../../../../src/utils/debugLog.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/code-indexer/src/engine/SymbolIndex.ts:28
import { debugLogWithPrefix } from "../../../../src/utils/debugLog.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/code-indexer/src/engine/adapterDefaults.ts:1
import { globalPresetRegistry } from "../../../../src/config/loader.ts";
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
gitaware-glob, glob, minimatch, uuid, zod, @biomejs/biome, @modelcontextprotocol/sdk, @moonbit/moonbit-lsp
Why it matters. 36 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha 677f25c033eafull audit observations/trust-audit/mcp-server/mizchi__typescript.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-08677f25c033eaBLOCKF59first audit
06

Questions

What tools does TypeScript expose?

37 in total: 30 read-only, 5 that write, and 2 that can delete or overwrite (delete_memory, lsp_delete_symbol). Every one is listed on this page with its risk.

Is TypeScript safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (59/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does TypeScript need?

No credential environment variables were found in its source, so it appears to need none.

How does TypeScript run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @internal/types at 0.1.0.

How current is this page?

The grade is for one exact copy of the source (677f25c033ea), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement