LLM이나 API 키 없이도 코딩 에이전트가 로컬 코드 검색, 심볼 탐색, 변경 영향 분석을 수행할 수 있도록 지원합니다.
다른 이름 eren23/attocode, attocode-code-intel
- 스타
- 17
- Tools
- —
- 다운로드, 30일
- 6,115
- 최신 버전
- 0.1.36
- 마지막 커밋
- 2026년 11월 13일
- 라이선스
- MIT
Attocode Code Intelligence MCP란?
Attocode Code Intelligence은(는) MCP server입니다. LLM이나 API 키 없이도 코딩 에이전트가 로컬 코드 검색, 심볼 탐색, 변경 영향 분석을 수행할 수 있도록 지원합니다.
프로젝트 README에서 생성된 요약
Attocode Code Intelligence MCP server 정보
Attocode Code Intelligence는 코딩 에이전트와 개발자를 위한 로컬 코드 검색 및 탐색 기능을 제공합니다. Claude Code, Cursor, Codex와 같은 클라이언트와 호환되는 MCP server로 작동하거나 독립적인 터미널 명령어로 실행할 수 있습니다. 모든 작업이 로컬 머신에서만 이루어지므로 API 키, 외부 모델, 네트워크 연결이 전혀 필요하지 않습니다.
사용자는 init 명령어를 사용하여 특정 클라이언트에 맞춰 서버를 초기화하거나, 로컬 명령을 지원하는 모든 MCP 클라이언트에서 uvx를 통해 실행할 수 있습니다. 서버는 다양한 도구 프로필을 제공하며, 그중 daily profile은 코드 찾기, 심볼 읽기, 변경 사항 계획을 위한 16가지 도구를 제공합니다. Go, Rust, Java, C, Perl, OCaml을 포함한 다양한 프로그래밍 언어를 지원합니다. 기본적으로 키워드 매칭 방식을 사용하지만, semantic extra를 설치하거나 환경 변수를 통해 OpenAI embeddings를 설정하면 시맨틱 검색 기능을 사용할 수 있습니다.
활용 사례
- 1코드 변경 영향 분석AI 에이전트가 특정 코드 수정으로 인해 영향을 받을 수 있는 파일을 식별할 수 있습니다.
- 2복잡한 심볼 구조 탐색개발자가 단 한 번의 요청으로 심볼 정의, 소스 코드 및 참조 위치를 모두 가져올 수 있습니다.
- 3생소한 저장소 탐색에이전트가 새로운 코드베이스를 파악하여 특정 작업에 필요한 관련 섹션을 찾아낼 수 있습니다.
- 4로컬 시맨틱 검색 수행사용자가 시맨틱 검색 도구를 사용하여 자연어 쿼리로 코드를 검색할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Attocode Code Intelligence MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 Attocode Code Intelligence MCP 설치
$ claude mcp add attocode-code-intel -- uvx attocode-code-intelCursor에 Attocode Code Intelligence MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"attocode-code-intel": {
"command": "uvx",
"args": [
"attocode-code-intel"
]
}
}
}VS Code에 Attocode Code Intelligence MCP 설치
.vscode/mcp.json
{
"servers": {
"attocode-code-intel": {
"type": "stdio",
"command": "uvx",
"args": [
"attocode-code-intel"
]
}
}
}VS Code CLI에 Attocode Code Intelligence MCP 설치
$ code --add-mcp '{"name":"attocode-code-intel","type":"stdio","command":"uvx","args":["attocode-code-intel"]}'Claude Desktop에 Attocode Code Intelligence MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"attocode-code-intel": {
"command": "uvx",
"args": [
"attocode-code-intel"
]
}
}
}Codex에 Attocode Code Intelligence MCP 설치
$ codex mcp add attocode-code-intel -- uvx attocode-code-intelCodex config.toml에 Attocode Code Intelligence MCP 설치
~/.codex/config.toml
[mcp_servers.attocode-code-intel] command = "uvx" args = ["attocode-code-intel"]
Gemini CLI에 Attocode Code Intelligence MCP 설치
$ gemini mcp add -s user attocode-code-intel uvx -- attocode-code-intelGemini settings.json에 Attocode Code Intelligence MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"attocode-code-intel": {
"command": "uvx",
"args": [
"attocode-code-intel"
]
}
}
}자동 검사
2026년 11월 13일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능통과
- 오픈 소스 라이선스 (OSI)통과
- 최근 1년 내 커밋 또는 릴리스통과
- 패키지 이름이 인기 패키지와 유사하지 않음통과
- 원격 엔드포인트가 HTTPS 사용검사되지 않음
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 모델에 대한 숨겨진 지침 없음통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음통과
README
GitHub에서 보기attocode-code-intel
Local code search and navigation for coding agents and for people. It runs as an MCP server for Codex, Claude Code, Cursor and other MCP clients, and as a command in your terminal. It needs no model, no API key and no network.
Status: beta. We measured the search quality (see What we measured). We have not shown that it makes agents faster or more accurate.
Quickstart
You need Python 3.12 or later and Git.
uv tool install attocode-code-intel
cd /path/to/your/project
attocode-code-intel init
Then restart your agent. init configures Codex, Claude Code and Cursor. Use --client claude, --client codex or --client cursor for one client. Codex needs a trusted project for a project configuration. Claude Code can ask you to enable the project MCP server.
To check the setup, run attocode-code-intel doctor. It starts the configured server, calls two tools and shows the result for each client.
The probe also reports the executable and server version returned by
that new probe. An already running client session must be checked separately.
For other clients (VS Code, Zed, Windsurf, Claude Desktop and more), run attocode-code-intel install <target>. attocode-code-intel commands lists the targets.
To run the server without an installation, use uvx. This is a configuration for any MCP client that starts a local command:
{
"mcpServers": {
"attocode-code-intel": {
"command": "uvx",
"args": ["attocode-code-intel", "--project", "/absolute/path/to/your/project"]
}
}
}
You can omit --project if the client sends one workspace root. Otherwise the server looks for a repository marker such as .git in the working folder and its parents, but never selects your home folder. If it finds no repository, it stops with an error.
To use the latest source, install from a clone of this repository: uv tool install /path/to/attocode/packages/code-intel.
What your agent gets
Version 0.1.33 makes remote-settings saves atomic and private, preserves old config bytes on failed writes, and refuses symlink redirects or invalid and oversized data. The existing Perl roots and TOML values survive successful saves. See the release notes for the Linux/macOS contract, refusal behavior and remaining limits.
Version 0.1.32 adds explicit Perl module roots in .attocode/config.toml,
refreshes dependencies after config-only edits, and preserves valid TOML when
saving remote settings. File-discovery exclusions and unresolved module
ambiguity remain conservative. See the release notes.
Version 0.1.31 retains prior vectors during failed live refresh, fences superseded queued writes, and commits file vectors and metadata together. Go receiver identities agree across keyword, body and vector search; optional fusion keeps distinct source spans and preserves vector text when only keyword metadata is available. Future cache formats are refused before journal or permission changes. See the release notes for validation and bounds.
Version 0.1.30 preserves Java, C and Go signature metadata, Go type and receiver ownership, and imports inside declared Go standard modules. Parameter and body-only edits update cached metadata and callers, while startup checks parser and indexer identity before reusing persisted symbols. See the release notes for source-pinned validation and limits.
Version 0.1.29 recognizes Perl .t test scripts in both parser entry points, making native test imports and callers available when a Perl grammar is installed or cached. Source-pinned Carp checks cover real cross-file navigation and scoped inclusion through refresh/restart. See the release notes.
Version 0.1.28 summarizes duplicate compact-search metadata diagnostics after evidence fitting. Full lexical-index details remain at data.ranking.index, with readiness and coverage hints in metadata.ranking.index. Results and source excerpts are unchanged. See the release notes.
Version 0.1.27 fixes a dictionary-size error during symbol inspection when AST hydration changes the cache concurrently. Namespace resolution snapshots cached file membership; later changes appear in the next build. See the release notes.
Version 0.1.26 gives Rust precision lookups a shared five-second budget and fixes cancelled startup cleanup when a child retains inherited pipes. Other languages keep two seconds; longer reloads still return partial evidence.
Version 0.1.25 uses OpenAI embeddings only when you set ATTOCODE_EMBEDDING_MODEL=openai. Before, an OPENAI_API_KEY in the environment was enough to send code chunks to OpenAI at index time. Rust references are also more reliable while rust-analyzer loads.
Version 0.1.24 adds ATTOCODE_INTEL_RANKING_PROVIDER=openrouter, a preset for the opt-in hosted rerank. In a frozen trial with 24 short questions, the rerank found 24 of 26 labeled files in the first five results, against 20 without it; see Hosted rerank. Rerank stays off by default, because it sends source excerpts to OpenRouter.
Version 0.1.23 is listed in the official MCP Registry and documents a uvx quick start. The opt-in hosted rerank now accepts the dated model ID that OpenRouter returns; see Hosted rerank. Rerank stays off by default.
Version 0.1.22 adds an opt-in discovery budget of up to 100,000 files
(ATTOCODE_INTEL_DISCOVERY_MAX_FILES; the default stays 50,000). It also packages
the LLM client, so ATTOCODE_FLAG_CONFIDENCE=llm and LLM rule synthesis work from
a PyPI install when an OpenRouter or Anthropic key is set.
Version 0.1.21 includes configured search-discovery coverage, OCaml interface parsing and more conservative Go/Rust fallback evidence. The existing 100 ms native budget and 50,000-file discovery safety ceiling remain; bounded fallback is heuristic.
Version 0.1.20 improves native OCaml/Perl call candidates and conservative workspace import candidates for OCaml, Perl and Crystal. Physical paths and ambiguity remain guarded; native limits, ranking and dependencies are unchanged. Optional grammars must be explicitly available before analysis; navigation never downloads them.
Version 0.1.19 restores source text into spare space after fitting a complete compact search page. Existing hits, visible text, source lines and continuations remain protected within the same response budget; ranking and retrieval are unchanged.
Version 0.1.7 also provides changes and trace commands: investigate a diff,
follow source-backed caller paths, export JSON/Markdown, and check or refresh saved
evidence. MCP equivalents change_context and trace_flow are local full-profile
tools. Version 0.1.8 adds exact file/symbol selection and bounded changed-class
summaries, with --class-mode expand for class-wide callers. Version 0.1.9 keeps
Python docstrings and parameter types, and lists impact results nearest first.
Version 0.1.10 shows the best test hit second for "tested" searches, and counts
Swift Tests/ folders as tests. Version 0.1.11 counts more test file names as
tests, such as _test.dart and Perl .t scripts and t/ modules. Version
0.1.12 makes doctor --client claude read the local-scope entry that
claude mcp add writes to ~/.claude.json. Version 0.1.13 fills compact search
pages within their budget, offers bounded deeper searches, and repairs stale
navigation indexes after successful restart parsing. Version 0.1.18 restores the ready phase after a failed snapshot load is followed by a complete fallback rebuild. Incomplete recovery stays guarded.
Version 0.1.17 lets a later explicit inspection retry a failed selected-file parse after a one-second cooldown, preserving immediate-repeat and source guards. Version 0.1.16 stabilizes tied symbol pages and reduces the Docker image while preserving runtime contracts. It adds bounded online maintenance evidence; the preview and restart experiments did not justify product changes. Version 0.1.15 adds parser ownership by thread, one language-server stderr reader, bounded native recovery without static callers and release install verification on GitHub runners. Version 0.1.14 adds bounded selected-file recovery, safe navigation publication, guarded Elixir definitions and doctor probe identity. See the change investigation guide.
The agent sees 16 tools (the daily profile):
| Use | Tools |
|---|---|
| Find code | semantic_search, fast_search, search_symbols, bootstrap, relevant_context |
| Read a symbol | inspect_symbol, symbols, cross_references, call_graph |
| See structure | dependencies, explore_codebase, project_summary |
| Plan a change | impact_analysis, suggest_tests, review_change |
| Check the server | capabilities |
- When the agent knows a symbol,
inspect_symbol(symbol_name="...", task_hint="...")gives the definition, the source, the references and candidate tests in one call. - In an unfamiliar repository,
bootstrap(task_hint="...")finds the relevant code and gives a map. impact_analysisandsuggest_testshelp plan the checks for a change.
For all tools (about 140: rules, security scans, history, snapshots and more), add --profile full to init. The tool catalog lists them. The search details page describes ranking, the response format and the experimental rerankers.
Explicit Perl module roots are available from 0.1.32 for static resolution over discovered workspace files.
For an experimental local seven-tool surface (0.1.5 or later), use
init --profile lean and restart your client. It advertises bootstrap,
search_symbols, inspect_symbol, semantic_search, impact_analysis,
suggest_tests and capabilities, with conditional routing instructions
and 2,000-token responses. Without file watching, notify_file_changed
is an eighth tool. Advanced tools require a full-profile session.
This opt-in profile has no demonstrated completion benefit; see the
completed pilot.
Commands for people
Run these in your project:
attocode-code-intel query "parse config" # search the code with its own words
attocode-code-intel symbols src/app.py # the symbols of a file
attocode-code-intel symbols --search greet # find a symbol by name
attocode-code-intel impact src/app.py # the files that a change can affect
attocode-code-intel deps src/app.py # what a file imports, and what imports it
attocode-code-intel hotspots # the files with the most risk or complexity
Search matches the words of the code and its paths. It does not use embeddings unless you install the semantic extra.
What we measured
- Search. We ran the 560 issues of Loc-Bench V1, with the full issue as the query. For 53.2% of them, the first five files held all files of the fix (file Acc@5 0.532). On a mix of 10 public benchmarks, file Acc@5 was 0.425. See the first-stage results and the matrix results.
- Agents. In four studies, Claude Code (Sonnet 5.5) named the files to edit for an issue. The server did not raise file Acc@5. Each run with the server cost 1.4 to 2.1 times as much. When the agent could choose, it seldom called the server. See the agent pilot and study R3.
The R6 review study found no demonstrated review benefit. The completed R7 repair pilot also found no demonstrated benefit; its reviewed decision is to stop expansion. The 2026-10-22 investigation pilot stopped incomplete after its first task pair because structured-output/tool calls failed the frozen protocol. It provides no quality, cost or time benefit evidence.
Limits and troubleshooting
- First search. The first tool call starts the index build. A search waits up to 15 seconds for the index. On a large repository, a search can report that the index is warming. Then search again. An empty result during warm-up does not prove that the code is absent.
- Index location. The index is in
.attocode/in your project. When the server makes that folder, it adds a.gitignore, so the index stays out of commits. - What the index reads. By default the server discovers at most 50,000 eligible files and skips files over 1 MB. From 0.1.22, the discovery budget setting allows an explicit limit up to 100,000; the selected index can be smaller under its independent file limit. It skips files that
.gitignoreignores, and folders that start with a dot. It also skips folders nameddist,build,out,output,target,env,tmp,vendororcoverage, and binary, media and lock files. If a build-named folder contains real source, explicitly re-include it with a root.gitignoreentry such as!dist/; discovery and edit refresh honor that override. - Languages. The base install parses Bash, C, C#, C++, CSS, Elixir, Go, HCL, HTML, Java, JavaScript, JSON, Kotlin, Lua, PHP, Python, Ruby, Rust, Scala, Swift, TOML, TypeScript, YAML and Zig. Optional grammars are loaded only when already installed or cached; installing the
tree-sitter-allextra does not trigger grammar downloads during navigation. A slow grammar falls back after a 100 ms parse budget. Static imports and references are partial evidence, not compiler/type resolution. - Degraded parsing (development builds). Selecting a missing definition in
a file with a recorded native parse failure permits one bounded retry for
that source/parser generation. A failed retry reports partial evidence and
an
attocode-code-intel notifycommand to queue a file refresh. Empty results and ordinary syntax errors do not trigger this recovery. - Test paths. Search and test suggestions recognize conventional test folders and filenames, plus supported Kotlin/Android source sets directly under
src(for examplecommonTest,jvmTest,androidHostTestandandroidDeviceTest). Helpers in those sets count as test code even without a test filename. Custom target or flavor names are not inferred from aTestsuffix alone. Short queries explicitly asking for tests put recognized test files first, preserving order within each group; longer issue descriptions keep source-first behavior. Suggestions can include helpers; verify the actual runnable tests. - Remove the setup. Run
attocode-code-intel init --remove. It restores an entry that existed beforeinit. - Server does not answer. Run
attocode-code-intel doctor. If a client shows "not configured", runinitfor it. After a change, restart the agent. In Claude Code,/mcpshows the server state. - HTTP server.
attocode-code-intel --transport httpneeds thehttpextra. It serves only this computer unless you setATTOCODE_API_KEY.
For one installation for all repositories, use init --global. A global server works on the repository of its working directory, or on the workspace that a tool call names.
Teams and remote agents
Self-hosting and migration covers PostgreSQL, Redis, workers, authentication, and the dashboard. The service serves native Streamable HTTP MCP at /mcp/. The dashboard provides connection snippets and knowledge editing.
attocode-code-intel init --client all --server https://intel.example.com --repo REPOSITORY_UUID
attocode-code-intel doctor --client codex --remote
Set ATTOCODE_API_KEY in the agent's environment. Use intelligence:read for analysis and add intelligence:write for knowledge changes. Every repository operation checks membership and scope before using cached analysis. Results identify repository, source, commit, index coverage, and truncation. PostgreSQL stores shared knowledge with authorship, revision, and file anchors.
Local and remote entries coexist. Remote calls analyze committed branches or explicit revisions. Local edits remain local. To copy a particular learning to your team, review and run an explicit share:
attocode-code-intel share --project . --learning 12 --server https://intel.example.com --repo REPOSITORY_UUID --dry-run
attocode-code-intel share --project . --learning 12 --server https://intel.example.com --repo REPOSITORY_UUID
cross_repo_search searches explicitly selected authorized repositories and retains provenance on each result.
Development
The package is in packages/code-intel of the attocode repository.
uv sync --extra dev --extra code-intel
uv run pytest -c packages/code-intel/pyproject.toml --confcutdir=packages/code-intel/tests packages/code-intel/tests
uv build --package attocode-code-intel
For routine work, use .venv/bin/python -m eval.quality quick (two minutes)
or local (ten minutes). They isolate scratch and caches in a monitored 5 GiB
workspace and report incomplete runs separately from passes. The
quality guide covers pinned multi-language
workflow checks, storage inventory, cleanup and optional CPU cloud batches.
Releases use intel-v* tags (release guide).
Product and operations guide · Tool catalog · Search details · Changelog · MIT license
Attocode Code Intelligence MCP 질문
Attocode Code Intelligence MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add attocode-code-intel -- uvx attocode-code-intel를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Attocode Code Intelligence MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
이 MCP server는 API 키나 LLM이 필요한가요?
아니요, 로컬에서 실행되므로 모델이나 API 키가 필요하지 않습니다.
코딩 에이전트가 사용할 수 있는 도구는 무엇인가요?
daily profile을 통해 시맨틱 검색, 심볼 검사, 콜 그래프, 영향 분석, 프로젝트 요약 등 16가지 도구를 제공합니다.