{"id":51859604,"url":"https://github.com/pioner92/symbolpeek-mcp","last_synced_at":"2026-07-27T07:00:55.279Z","repository":{"id":372359046,"uuid":"1306330232","full_name":"pioner92/symbolpeek-mcp","owner":"pioner92","description":"Ask for the symbol, not the file. Token-efficient MCP server giving AI coding   agents symbol-level reads of TS/JS, Rust, Python, Java, Go, JSON, and Markdown","archived":false,"fork":false,"pushed_at":"2026-07-25T14:14:12.000Z","size":1114,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-26T06:09:07.856Z","etag":null,"topics":["agent-mcp","agents","go","java","js","llm","mcp","mcp-server","puthon","rust","ts","typescript"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pioner92.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-20T07:19:01.000Z","updated_at":"2026-07-25T14:14:11.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pioner92/symbolpeek-mcp","commit_stats":null,"previous_names":["pioner92/symbolpeek-mcp"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/pioner92/symbolpeek-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pioner92%2Fsymbolpeek-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pioner92%2Fsymbolpeek-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pioner92%2Fsymbolpeek-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pioner92%2Fsymbolpeek-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pioner92","download_url":"https://codeload.github.com/pioner92/symbolpeek-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pioner92%2Fsymbolpeek-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35941123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-27T02:00:06.776Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-mcp","agents","go","java","js","llm","mcp","mcp-server","puthon","rust","ts","typescript"],"created_at":"2026-07-24T04:32:06.671Z","updated_at":"2026-07-27T07:00:55.238Z","avatar_url":"https://github.com/pioner92.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/image.webp\" alt=\"SymbolPeek — ask for the symbol you need, not the entire file\" width=\"100%\"\u003e\n\n### Semantic code intelligence for AI coding agents\n\nAsk for the symbol you need—not the entire file.\n\n\u003cp\u003e\n  \u003ccode\u003e.ts\u003c/code\u003e\u0026nbsp;\u0026nbsp;\n  \u003ccode\u003e.tsx\u003c/code\u003e\u0026nbsp;\u0026nbsp;\n  \u003ccode\u003e.js\u003c/code\u003e\u0026nbsp;\u0026nbsp;\n  \u003ccode\u003e.jsx\u003c/code\u003e\u0026nbsp;\u0026nbsp;\n  \u003ccode\u003e.rs\u003c/code\u003e\u0026nbsp;\u0026nbsp;\n  \u003ccode\u003e.py\u003c/code\u003e\u0026nbsp;\u0026nbsp;\n  \u003ccode\u003e.java\u003c/code\u003e\u0026nbsp;\u0026nbsp;\n  \u003ccode\u003e.go\u003c/code\u003e\u0026nbsp;\u0026nbsp;\n  \u003ccode\u003e.json\u003c/code\u003e\u0026nbsp;\u0026nbsp;\n  \u003ccode\u003e.md\u003c/code\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003ca href=\"https://github.com/pioner92/symbolpeek-mcp/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/pioner92/symbolpeek-mcp?label=Download%20latest%20release\u0026style=for-the-badge\" alt=\"Download latest SymbolPeek release\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue?style=for-the-badge\" alt=\"MIT license\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003ca href=\"#quick-start\"\u003eQuick start\u003c/a\u003e ·\n  \u003ca href=\"#language-support\"\u003eLanguage support\u003c/a\u003e ·\n  \u003ca href=\"#tools\"\u003eTools\u003c/a\u003e ·\n  \u003ca href=\"#troubleshooting\"\u003eTroubleshooting\u003c/a\u003e ·\n  \u003ca href=\"MCP_TOOLS.md\"\u003eTool reference\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c/div\u003e\n\nSymbolPeek is an MCP server that gives an AI coding agent a symbol-level view of\nyour codebase. Instead of reading a whole file to answer \"what does this\nfunction do\" or \"who calls it\", the agent asks for one declaration and gets\nexactly that.\n\nTypeScript and JavaScript are analyzed with the official TypeScript Compiler\nAPI. Rust, Python, Java, Go, JSON, and Markdown use embedded Tree-sitter for\nsyntax-level operations.\n\n## Quick start\n\n**Requirements**\n\n- An MCP client. Any stdio MCP client works; [Codex and Claude\n  Code](#connect-your-client) are documented below.\n- **Node.js 20 or newer** — required for `.ts`, `.tsx`, `.js`, and `.jsx`\n  analysis. Rust, Python, Java, Go, JSON, and Markdown work without it.\n\nNo clone, Rust toolchain, or manual build is required.\n\n**macOS or Linux**\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/pioner92/symbolpeek-mcp/main/scripts/install.sh | sh\n```\n\n**Windows PowerShell**\n\n```powershell\nirm https://raw.githubusercontent.com/pioner92/symbolpeek-mcp/main/scripts/install.ps1 | iex\n```\n\nThe installer verifies the release checksum, installs the package, and then\n**prints the exact command to connect your client**. It touches nothing outside\nits own install directory — no client configuration is modified for you.\n\n\u003cdetails\u003e\n\u003csummary\u003eWhat the installer puts where\u003c/summary\u003e\n\n| Item | macOS / Linux | Windows |\n| --- | --- | --- |\n| Package (binary + bundled TypeScript runtime) | `~/.local/share/symbolpeek` | `%LOCALAPPDATA%\\SymbolPeek` |\n| `symbolpeek` and `sym` commands | linked into `~/.local/bin` | added to the user `PATH` |\n| Lifetime statistics (created on first use) | `~/.config/symbolpeek/stats.json` (Linux)\u003cbr\u003e`~/Library/Application Support/SymbolPeek/stats.json` (macOS) | `%APPDATA%\\SymbolPeek\\stats.json` |\n\nThat is the complete list. Connecting the MCP server and installing the\n[optional agent guidance](#optional-agent-guidance) are separate, explicit\nsteps. See [Uninstall](#uninstall) to remove everything.\n\n\u003c/details\u003e\n\nTo inspect the installer before running it:\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/pioner92/symbolpeek-mcp/main/scripts/install.sh -o install-symbolpeek.sh\nless install-symbolpeek.sh\nsh install-symbolpeek.sh\n```\n\n### Connect your client\n\nThe installer prints these commands with the correct absolute path already\nfilled in. Use the absolute path form — it works regardless of how your client\ninherits `PATH`:\n\n```sh\n# Codex (macOS/Linux)\ncodex mcp add symbolpeek -- \"$HOME/.local/share/symbolpeek/symbolpeek\"\n\n# Claude Code (macOS/Linux)\nclaude mcp add --transport stdio --scope user symbolpeek -- \"$HOME/.local/share/symbolpeek/symbolpeek\"\n```\n\n```powershell\n# Codex (Windows)\ncodex mcp add symbolpeek -- \"$env:LOCALAPPDATA\\SymbolPeek\\symbolpeek.exe\"\n\n# Claude Code (Windows)\nclaude mcp add --transport stdio --scope user symbolpeek -- \"$env:LOCALAPPDATA\\SymbolPeek\\symbolpeek.exe\"\n```\n\nRestart the client, then verify: `codex mcp list`, or `/mcp` inside Claude Code.\nUse `--scope project` with Claude Code to enable the server for one project only.\n\n### Optional: agent guidance\n\nThe tools work as soon as the server is connected. SymbolPeek also ships a\nshort [skill](skills/symbolpeek/SKILL.md) that tells the agent to *reach for*\nthose tools before opening whole files — without it the model calls them less\noften.\n\nInstall it only for the clients you actually use:\n\n```sh\nsymbolpeek install-skills codex     # writes ~/.codex/skills/symbolpeek\nsymbolpeek install-skills claude    # writes ~/.claude/skills/symbolpeek\nsymbolpeek install-skills all       # both\n```\n\n`CODEX_HOME` and `CLAUDE_CONFIG_DIR` override those locations. Restart the\nclient afterwards so it discovers the skill.\n\nTry it with a prompt like:\n\n```text\nUse the symbolpeek MCP server. List the symbols in the absolute path\n/project/src/dashboard.tsx, then read_symbol_context for Dashboard.\nAfter that, find_references for useAuth and go_to_definition for one usage.\n```\n\nConfiguration templates are checked in at\n[`config/codex-mcp.toml.example`](config/codex-mcp.toml.example) and\n[`config/claude-mcp.json.example`](config/claude-mcp.json.example).\n\n## What you get\n\nA real request against this repository's own TypeScript worker\n(`src/language/typescript/worker.js`, 1,791 lines / 65 KB):\n\n```text\nread_symbol(path: \".../src/language/typescript/worker.js\",\n            symbol: \"createProject.collectImports\")\n```\n\n```json\n{\n  \"symbol\": \"createProject.collectImports\",\n  \"kind\": \"function\",\n  \"file\": \".../src/language/typescript/worker.js\",\n  \"lines\": { \"start\": 713, \"end\": 751 },\n  \"source\": \"function collectImports(fileName, collected, visited) {\\n  ...\\n}\",\n  \"supported\": true,\n  \"analysis\": { \"backend\": \"ts-compiler-api\", \"analysis_level\": \"syntax\", \"complete\": true }\n}\n```\n\nThe agent receives **2.0 KB instead of 65 KB** — the 39 lines it asked for\nrather than 1,791 lines it did not. Nested symbols are addressable by qualified\nname, so the agent never has to read the enclosing function to reach the inner\none.\n\n## Language support\n\nEvery language-aware operation, exactly as reported by `get_capabilities`:\n\n| Operation | `.ts` `.tsx` `.js` `.jsx` | `.rs` | `.py` `.java` `.go` | `.json` | `.md` |\n| --- | :---: | :---: | :---: | :---: | :---: |\n| `read_symbol` | ✅ | ✅ | ✅ | ✅ | ✅ |\n| `list_symbols` | ✅ | ✅ | ✅ | ✅ | ✅ |\n| `search_symbols` | ✅ | ✅ | ✅ | ✅ | ✅ |\n| `get_document_outline` | ✅ | ✅ | ✅ | ✅ | ✅ |\n| `find_dependencies` | ✅ | ✅¹ | ✅¹ | — | — |\n| `read_symbol_context` | ✅ | ✅¹ | ✅¹ | — | — |\n| `find_implementations` | ✅ | ✅² | — | — | — |\n| `find_references` | ✅ | — | — | — | — |\n| `find_callers` | ✅ | — | — | — | — |\n| `find_callees` | ✅ | — | — | — | — |\n| `go_to_definition` | ✅ | — | — | — | — |\n| `get_type` | ✅ | — | — | — | — |\n| `get_diagnostics` | ✅ | — | — | — | — |\n| `get_call_hierarchy` | ✅ | — | — | — | — |\n| **Backend** | TypeScript Compiler API | Tree-sitter | Tree-sitter | Tree-sitter | Tree-sitter |\n| **Analysis level** | semantic | syntax | syntax | syntax | syntax |\n\n¹ Same-file only — conservative, no cross-file resolution.\n² Explicit `impl Type` and `impl Trait for Type` blocks. Alias, re-export, and\nblanket-impl resolution requires rust-analyzer and is not supported.\n\nUnsupported operations fail with an explicit error rather than returning empty\nresults. `get_capabilities` returns this same matrix at runtime.\n\n## Tools\n\n### Navigation\n\n| Tool | What it answers |\n| --- | --- |\n| `read_symbol` | \"Show me the exact source for this symbol.\" |\n| `list_symbols` | \"What are the top-level symbols in this file?\" |\n| `search_symbols` | \"Where is this symbol defined across the workspace?\" |\n| `go_to_definition` | \"Where is the definition behind this usage?\" |\n| `read_symbol_context` | \"Give me this symbol plus its minimal local context.\" |\n\n### Code intelligence\n\n| Tool | What it answers |\n| --- | --- |\n| `find_references` | \"Where is this symbol referenced across the project?\" |\n| `find_callers` | \"Which functions or methods call this symbol?\" |\n| `find_callees` | \"Which named targets does this symbol call, including unresolved ones?\" |\n| `find_dependencies` | \"Which local symbols does this symbol depend on?\" |\n| `get_call_hierarchy` | \"What callers and callees surround this symbol?\" |\n\n### Type analysis\n\n| Tool | What it answers |\n| --- | --- |\n| `get_type` | \"What is the inferred type or signature at this location?\" |\n| `find_implementations` | \"Which classes implement this interface or contract?\" |\n| `get_document_outline` | \"What is the nested declaration structure of this file?\" |\n| `get_diagnostics` | \"What TypeScript compiler diagnostics affect this file or symbol?\" |\n\n### Discovery and statistics\n\n| Tool | What it answers |\n| --- | --- |\n| `get_statistics` | \"How much source context has SymbolPeek avoided?\" |\n| `get_capabilities` | \"Which operations does each language support?\" |\n\nEvery request shape, option, and response format is documented in the\n**[MCP tool reference](MCP_TOOLS.md)**.\n\n## Where it helps (and where it doesn't)\n\nSymbolPeek does not replace reading files or text search. It replaces the most\nexpensive pattern an agent hits on a real codebase: *find a symbol, find\neveryone who touches it, and understand its type — across import aliases and\nre-exports.*\n\n**Where it genuinely saves an agent work and tokens**\n\n- **One symbol out of a large file.** `read_symbol` / `read_symbol_context`\n  return a single declaration instead of a whole file. On large files this is\n  the bulk of the token saving.\n- **Impact analysis without a grep loop.** `find_references` returns resolved\n  locations, while `find_callers` also identifies the enclosing functions in\n  one call. Both use the project's module resolution, including path aliases\n  (`@app/...`) and barrel re-exports, which text search follows unreliably.\n- **Resolved types.** `get_type` returns the instantiated signature (for\n  example `useAsync\u003cFeedPermission, Error\u003e`), which text search cannot produce.\n- **Scoped discovery.** `search_symbols` finds declarations by name and kind\n  (for example \"hooks matching `conversation`\") without the noise of string\n  matches in comments and unrelated code.\n\n**Where an agent should still use ordinary tools**\n\n- Plain text, comments, small config files, or unsupported files — `grep` is faster.\n- Understanding the full control flow inside one function — just read it.\n- Very large monorepos — building a TypeScript program has real latency, so a\n  targeted `grep` can win for a single lookup. Rust, Python, Java, Go, and JSON\n  requests never start Node and stay fast regardless of project size.\n\n**What makes the results trustworthy**\n\n- Parsing, source ranges, type information, and cross-file navigation come from\n  the TypeScript compiler and its AST. Semantic labels such as `hook` and\n  `react_component` are conventions applied on top of that syntax tree, based on\n  naming and JSX usage.\n- Cross-file results are only as complete as module resolution allows: with a\n  valid `tsconfig.json` they use its configured source set; without one they\n  cover the target file and recursively resolved static imports, exports, and\n  `require(...)` calls. Compiler options come from the project `tsconfig.json`.\n- Rust, Python, Java, Go, and JSON source ranges and nesting come from\n  Tree-sitter. Every result carries compact\n  `analysis: { backend, analysis_level, complete }` trust metadata, where\n  `complete: false` means the parser recovered from a syntax error.\n\n## What gets indexed\n\n**TypeScript and JavaScript** — function declarations, async functions,\ngenerators, and arrow functions; exported and nested functions; React components\nand hooks; classes and class methods; object methods; interfaces, type aliases,\nenums and qualified enum members, variables, and constants.\n\nEnum members are addressed by qualified name, for example\n`Screens.PUBLISH_ACKNOWLEDGEMENT`. Symbol *names* are indexed; assigned string\nvalues remain literals and require text search.\n\n**Rust** — functions, structs, unions, enums and variants, traits, impl blocks\nand methods, modules, constants, statics, type declarations, and macros. Impl\nmethods use qualified names such as `Client.send`, and trait impl methods use\n`\u003cClient as Transport\u003e.send`.\n\n**JSON** — object properties are indexed as RFC 6901 JSON Pointers, for example\n`/checkout/errors/payment_failed`. Array-valued properties remain single\naddressable branches instead of expanding every element, which keeps large\nlocale and data files token-efficient. `.jsonc` and JSON5 are not supported.\n\n**Markdown** — headings are the symbols, nested by level, and a symbol spans the\nwhole section rather than the heading line. `read_symbol` with\n`Quick start.Connect your client` returns that section alone; on this README\nthat is 839 bytes instead of 20 KB. Both `#` and underline (setext) headings are\nindexed, `#` inside a fenced code block is not, and repeated headings such as\n`Options` under several commands get `@line:column` selectors so each stays\naddressable. Prose, lists, and code blocks are not indexed separately — this\nfinds sections, not full-text matches.\n\n## Using the tools\n\nAbsolute file paths are the canonical, most reliable input. Relative paths first\nuse an explicit `SYMBOLPEEK_WORKSPACE_ROOT`, then filesystem roots supplied by a\ncompatible MCP client; multi-root workspaces resolve only when exactly one root\ncontains the requested path.\n\nSupported files are parsed from their current contents on every request — there\nis no index to rebuild and no stale cache to invalidate.\n\nUnsupported extensions return `{ \"supported\": false }`. Missing files, parser\nfailures, and unknown symbols are returned as MCP invalid-parameter errors.\n\n## How agents discover the tools\n\nTwo mechanisms nudge a model toward targeted reads:\n\n- **Server instructions, always on.** Every MCP initialization response includes\n  concise instructions to inspect outlines or search first, then retrieve only\n  the required symbol. This works with any MCP client that exposes server\n  instructions to its LLM — nothing to install.\n- **The bundled skill, opt-in.** [`symbolpeek` skill](skills/symbolpeek/SKILL.md)\n  is a stronger, always-loaded hint for Codex and Claude Code, with a trigger\n  description covering code exploration and large JSON locale/configuration\n  files. Install it with\n  [`install-skills`](#optional-agent-guidance) if you want it.\n\nNo MCP server can force a client model to call a tool, but these mechanisms make\nthe intended workflow part of the model's default context. For another agent\nthat consumes neither, copy the short workflow from the bundled skill into that\nclient's global agent instructions.\n\n## Statistics\n\nThe CLI reports lifetime context-avoidance statistics:\n\n```sh\nsymbolpeek stats\nsymbolpeek stats --reset\n```\n\n`--reset` clears lifetime totals only. Session counters belong to the running\nMCP process and are available through `get_statistics()`.\n\nAll numbers compare SymbolPeek with a counterfactual full-source baseline:\n\n- **requests** — successful semantic calls;\n- **files avoided** — distinct source files represented by each result, summed\n  across calls (one `find_callers` request can count several files);\n- **bytes / lines avoided** — full contents of those files minus a compact\n  serialization of the semantic result;\n- **estimated token savings** — avoided bytes at a fixed ~4 bytes/token\n  heuristic;\n- **average context reduction** — size-weighted across all requests.\n\nTreat these as directional context-reduction estimates, not exact model-token\ncounts or billing data.\n\n## Configuration\n\nPrebuilt binaries detect their bundled TypeScript runtime automatically. These\nvariables are for advanced setups only:\n\n| Variable | Purpose |\n| --- | --- |\n| `SYMBOLPEEK_WORKSPACE_ROOT` | Workspace root used to resolve relative source paths. |\n| `SYMBOLPEEK_ALLOW_CWD_FALLBACK` | Allow relative paths to fall back to the process working directory (default `true`). |\n| `SYMBOLPEEK_TYPESCRIPT_ROOT` | Directory containing the TypeScript runtime. |\n| `SYMBOLPEEK_NODE` | Explicit Node.js executable for the parser worker. |\n| `SYMBOLPEEK_STATS_PATH` | Override the lifetime statistics JSON path. |\n\nFor a global MCP installation, do **not** set `SYMBOLPEEK_WORKSPACE_ROOT` to a\nfixed project — use absolute paths, or let the client provide filesystem roots.\nSet `SYMBOLPEEK_ALLOW_CWD_FALLBACK=false` if relative paths must never resolve\nagainst the server's working directory.\n\n## Troubleshooting\n\n**The client shows no SymbolPeek tools.**\nConfirm registration with `codex mcp list` or `/mcp` in Claude Code, and restart\nthe client — MCP servers are discovered at startup. If registration itself\nfailed, re-run the `mcp add` command using the absolute binary path.\n\n**TypeScript/JavaScript calls fail, other languages work.**\nNode.js 20+ is missing or not visible to the server process. Check with\n`node --version`; if Node is installed but not on the client's `PATH`, set\n`SYMBOLPEEK_NODE` to the absolute Node executable.\n\n**`symbolpeek: command not found` after installing on macOS/Linux.**\n`~/.local/bin` is not on your `PATH`:\n\n```sh\nexport PATH=\"$HOME/.local/bin:$PATH\"   # add to your shell profile\n```\n\nThe absolute path `~/.local/share/symbolpeek/symbolpeek` always works.\n\n**Windows: the command is not recognized.**\nThe installer updates the user `PATH`; open a new terminal so the change is\npicked up. If `irm ... | iex` is blocked, run\n`Set-ExecutionPolicy -Scope Process RemoteSigned` first, or download the archive\nmanually.\n\n**macOS blocks the binary.**\nRelease binaries are currently unsigned. If a browser-added quarantine flag\nblocks a manually downloaded package, clear it:\n\n```sh\nxattr -dr com.apple.quarantine \u003cpackage-directory\u003e\n```\n\n**A relative path resolves to the wrong project.**\nUse absolute paths, or set `SYMBOLPEEK_WORKSPACE_ROOT` for a deliberately\nproject-scoped launch. `SYMBOLPEEK_ALLOW_CWD_FALLBACK=false` disables working\ndirectory fallback entirely.\n\n**An operation returns an unsupported-operation error.**\nCheck the [language support matrix](#language-support) — semantic operations are\nTypeScript/JavaScript only.\n\nStill stuck? [Open an issue](https://github.com/pioner92/symbolpeek-mcp/issues)\nwith your OS, client, SymbolPeek version (`symbolpeek --version`), and the failing\ncall.\n\n## Uninstall\n\n```sh\n# macOS / Linux\nrm -rf ~/.local/share/symbolpeek ~/.local/bin/symbolpeek ~/.local/bin/sym\nrm -rf ~/.config/symbolpeek \"$HOME/Library/Application Support/SymbolPeek\"\n```\n\n```powershell\n# Windows\nRemove-Item -Recurse -Force \"$env:LOCALAPPDATA\\SymbolPeek\", \"$env:APPDATA\\SymbolPeek\"\n```\n\nThen remove the server from your client: `codex mcp remove symbolpeek` or\n`claude mcp remove symbolpeek`. On Windows, also drop the SymbolPeek entry from\nyour user `PATH`.\n\nIf you installed the optional agent guidance, remove it too:\n\n```sh\nrm -rf ~/.codex/skills/symbolpeek ~/.claude/skills/symbolpeek\n```\n\n## Direct downloads\n\nPrefer to install manually? Every package contains `symbolpeek`, the `sym`\nalias, and the locked TypeScript runtime.\n\n| Platform | Release package |\n| --- | --- |\n| Linux x86-64 | [Download](https://github.com/pioner92/symbolpeek-mcp/releases/latest/download/symbolpeek-x86_64-unknown-linux-gnu.tar.gz) |\n| Linux ARM64 | [Download](https://github.com/pioner92/symbolpeek-mcp/releases/latest/download/symbolpeek-aarch64-unknown-linux-gnu.tar.gz) |\n| macOS Apple Silicon | [Download](https://github.com/pioner92/symbolpeek-mcp/releases/latest/download/symbolpeek-aarch64-apple-darwin.tar.gz) |\n| macOS Intel | [Download](https://github.com/pioner92/symbolpeek-mcp/releases/latest/download/symbolpeek-x86_64-apple-darwin.tar.gz) |\n| Windows x86-64 | [Download](https://github.com/pioner92/symbolpeek-mcp/releases/latest/download/symbolpeek-x86_64-pc-windows-msvc.zip) |\n\nEvery package has a matching `.sha256` asset. All versions and release notes are\non the [GitHub Releases page](https://github.com/pioner92/symbolpeek-mcp/releases).\n\nA manually extracted archive behaves exactly like an installer-placed one: run\nthe binary directly, register it with your client, and optionally run\n[`install-skills`](#optional-agent-guidance).\n\nSymbolPeek communicates over stdio when used as an MCP server. It normally does\nnot print a terminal interface; an MCP client starts it and exchanges JSON-RPC\nmessages through stdin/stdout.\n\n## Documentation\n\n| Document | Contents |\n| --- | --- |\n| [MCP_TOOLS.md](MCP_TOOLS.md) | Every tool's request shape, options, and response format |\n| [ARCHITECTURE.md](ARCHITECTURE.md) | Internal design, provider boundary, request lifecycle |\n| [CONTRIBUTING.md](CONTRIBUTING.md) | Reporting bugs, source builds, tests, releases |\n| [CHANGELOG.md](CHANGELOG.md) | Release history |\n| [SECURITY.md](SECURITY.md) | Reporting a vulnerability |\n\n## Roadmap\n\nThe current foundation is intentionally focused. Natural next capabilities\ninclude:\n\n- symbol-level editing and replacement;\n- deep type expansion beyond `get_type` hover signatures (fully resolved nested\n  and generic types);\n- JSX component trees and prop-flow analysis;\n- project indexing and incremental parsing;\n- additional language providers (Kotlin, Swift, C++).\n\n## License\n\n[MIT](LICENSE) © Alex Shumihin\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpioner92%2Fsymbolpeek-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpioner92%2Fsymbolpeek-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpioner92%2Fsymbolpeek-mcp/lists"}