Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Let your coding agent see the squiggles — LSP diagnostics, navigation, refactoring, and extras
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"squiggles": {
"command": "npx",
"args": [
"-y",
"squiggles"
]
}
}
}Ejecuta esto en tu terminal
claude mcp add squiggles -- npx -y squigglesPégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"squiggles": {
"command": "npx",
"args": [
"-y",
"squiggles"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"squiggles": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"squiggles"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub carldaws, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (1.0.2) llegó al registro hace 2 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Node.js en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, Python MCP
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Local-only Python MCP server for the Files.com API.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
Let your agent see the squiggles you'd see in an IDE.
squiggles is an MCP server that bridges coding agents to Language Server Protocol (LSP) servers. Configure one or more LSP servers and squiggles exposes their features — diagnostics, go-to-definition, find references, rename, formatting, and more — as MCP tools. Servers start lazily on first tool use, so there's no startup cost for languages you don't touch.
Beyond the standard protocol, squiggles unlocks the custom superpowers each language server ships that editors rarely surface and agents otherwise never see: expanding a Rust macro, discovering Ruby tests, switching between a C++ source file and its header, fixing every import after moving a TypeScript file, running govulncheck through gopls.
claude mcp add squiggles -- npx -y squiggles
Then, in your project root:
npx squiggles init
This writes a squiggles.yaml for the languages it finds (a tsconfig.json means TypeScript, a Cargo.toml means Rust, and so on). Name the servers to choose them yourself: npx squiggles init typescript ruby. Presets exist for typescript, rust, ruby, go, python, cpp and lua; each needs its language server on PATH, and init prints the install command for every one it writes.
The result for a TypeScript project:
servers:
typescript: command: ["typescript-language-server", "--stdio"] filePatterns: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"]
squiggles looks for squiggles.yaml, squiggles.yml, .squiggles.yaml, or .squiggles.yml in the project root (the old mclsp.yaml names still work). Each server entry supports:
| Field | Required | Description |
|---|---|---|
command | Yes | Command to start the LSP server (string array) |
filePatterns | Yes | Glob patterns for files this server handles |
initializationOptions | No | Options passed to the LSP server on initialization |
rootUri | No | Override the workspace root URI |
env | No | Environment variables for the LSP server process |
Multiple servers can be configured for different languages:
servers:
typescript: command: ["typescript-language-server", "--stdio"] filePatterns: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"] rust: command: ["rust-analyzer"] filePatterns: ["**/*.rs"] ruby: command: ["ruby-lsp"] filePatterns: ["**/*.rb"] go: command: ["gopls"] filePatterns: ["**/*.go", "go.mod", "go.sum"] cpp: command: ["clangd"] filePatterns: ["**/*.c", "**/*.h", "**/*.cpp", "**/*.hpp"]
All standard LSP tools are registered and available when a matching server is configured.
Navigation: goto_definition, goto_type_definition, goto_implementation, goto_declaration, find_references
Inspection: hover, signature_help, document_symbols, workspace_symbols
Refactoring: code_actions, rename_prepare, rename, format
Hierarchy: call_hierarchy_incoming, call_hierarchy_outgoing, type_hierarchy
Always available: open_file, diagnostics
Position-based tools take file (relative path), line (1-indexed), and col (1-indexed). rename accepts apply: true to write the edit to disk instead of returning it; format always writes to disk. code_actions automatically passes the diagnostics overlapping the requested range, so quick fixes show up.
The best language servers go far beyond the standard protocol, and this is where squiggles earns its keep: it subscribes to the custom methods and commands that IDE plugins use but agent harnesses ignore. Extension tools register automatically when a matching server is configured.
Ruby (`ruby-lsp`)
| Tool | What it does |
|---|---|
ruby_discover_tests | Discover test cases (Minitest, RSpec) in a file |
ruby_go_to_relevant_file | Jump between implementation and test file |
ruby_show_syntax_tree | Show the Prism AST for a file |
ruby_dependencies | List project gem dependencies |
TypeScript (`typescript-language-server`)
| Tool | What it does |
|---|---|
ts_go_to_source_definition | Go to the implementation, not the .d.ts declaration |
ts_organize_imports | Sort and prune imports, written to disk |
ts_rename_file | Fix every import after a file moves — move the file, then call this |
typescript-language-server needs a typescript install it can find (usually the workspace's own). TypeScript 7 ships no tsserver.js, so keep typescript@5 in the workspace for now.
Rust (`rust-analyzer`)
| Tool | What it does |
|---|---|
rust_expand_macro | Show the code a macro invocation generates |
rust_parent_module | Navigate to the parent module |
rust_open_cargo_toml | Find the owning crate's Cargo.toml |
rust_external_docs | Get docs.rs / rustdoc URLs for a symbol |
rust_related_tests | Find tests covering a position |
rust_view_syntax_tree | Show the syntax tree for a file |
rust_runnables | List runnable targets (tests, binaries, doctests) |
rust_reload_workspace | Reload Cargo metadata after editing Cargo.toml |
rust_dependencies | List all crates in the dependency graph |
Go (`gopls`)
| Tool | What it does |
|---|---|
go_list_known_packages | List packages importable from a file |
go_list_imports | List a file's imports and its package |
go_add_import | Add an import, written to disk |
go_mod_tidy | Run go mod tidy |
go_vulncheck | Run govulncheck against the module |
go_modules | List modules under a directory |
C/C++ (`clangd`)
| Tool | What it does |
|---|---|
clangd_switch_source_header | Jump between source and header |
clangd_symbol_info | Get USR and symbol details |
clangd_ast | Show the Clang AST for a range |
When a server applies changes itself (organize imports, add import, rename file), squiggles receives the workspace edit and writes it to disk, keeping the server's view of the files in sync.
To add extensions for a new language server, create a file in src/extensions/ (e.g. src/extensions/zig.ts):
import { executeCommand, type ServerExtension } from "./index.js";
const extensions: ServerExtension[] = [ { name: "zls_something", description: "What this does", input: "position", // "none" | "file" | "position" | "custom" request: ({ uri, position }) => ({ method: "zls/customMethod", params: { textDocument: { uri }, position }, }), }, ];
export default extensions;
request receives the opened file's URI, absolute path, and 0-indexed position, and returns the LSP request to send — use the executeCommand helper for servers that expose functionality as workspace/executeCommand commands. Register the module in src/extensions/index.ts under the server's binary name.
squiggles is the project formerly published as mclsp. Point your MCP config at npx -y squiggles and rename mclsp.yaml to squiggles.yaml — the old config names keep working, the tool names are unchanged.
MIT