MCP server that extracts complete knowledge from any codebase — architecture, patterns, dependencies, API surface
Project description
Ferret MCP
An MCP server that extracts complete knowledge from any codebase — architecture, patterns, dependencies, API surface. Combines static analysis with AI-powered deep interpretation.
Works with any MCP client: Claude Code, Claude Desktop, Cursor, and more.
Give it a repo, get a senior engineer's analysis in 30 seconds for ~$0.09.
Quickstart
Install & run with uvx (no clone needed)
uvx ferret-mcp
Or install with pip
pip install ferret-mcp
MCP Client Setup
Claude Code
claude mcp add ferret -- uvx ferret-mcp
To enable AI-powered tools (deep, ask), set your API key:
claude mcp add ferret -e FERRET_LLM_API_KEY=sk-ant-... -- uvx ferret-mcp
Claude Desktop / Cursor / Windsurf / any MCP client
Add to your MCP config file (claude_desktop_config.json, .cursor/mcp.json, etc.):
{
"mcpServers": {
"ferret": {
"command": "uvx",
"args": ["ferret-mcp"],
"env": {
"FERRET_LLM_API_KEY": "sk-ant-..."
}
}
}
}
Local development
git clone https://github.com/fabdendev/ferret-mcp.git
cd ferret-mcp
cp .env.example .env # Add your API key
uv sync
uv run ferret-mcp
Tools
Static Analysis (free, no LLM required)
| Tool | Description |
|---|---|
scan |
Repository overview — languages, structure, entry points, config files |
dependencies |
External packages + internal import graph with core modules |
architecture |
Layers, architectural patterns, module breakdown |
patterns |
Design patterns, naming conventions, testing, error handling |
api_surface |
REST endpoints, MCP tools, CLI commands, GraphQL, gRPC, exports |
full_extraction |
All of the above in one comprehensive report |
AI-Powered (~$0.09/report with Haiku)
| Tool | Description |
|---|---|
deep |
Comprehensive Knowledge Extraction Report — 10-section expert analysis covering architecture, data flow, strengths, risks, and learning takeaways |
ask |
Ask any question about a repo, answered with full codebase context |
All tools take a path argument — the absolute path to the repository root directory.
Configuration
AI-powered tools (deep, ask) require an LLM. Configure via environment variables:
| Env Var | Default | Description |
|---|---|---|
FERRET_LLM_PROVIDER |
anthropic |
anthropic or openai (for Ollama, vLLM, LM Studio) |
FERRET_LLM_MODEL |
claude-haiku-4-5-20251001 |
Model name |
FERRET_LLM_API_KEY |
— | API key (required for Anthropic; ollama for local) |
FERRET_LLM_BASE_URL |
http://localhost:11434/v1 |
Base URL for OpenAI-compatible providers |
Use with a local LLM (Ollama)
claude mcp add ferret \
-e FERRET_LLM_PROVIDER=openai \
-e FERRET_LLM_BASE_URL=http://localhost:11434/v1 \
-e FERRET_LLM_MODEL=qwen3:8b \
-- uvx ferret-mcp
Example Output
The deep tool produces a ~1000-line Knowledge Extraction Report covering:
- Executive Summary — what it is, what stage, honest assessment
- Architecture Deep Dive — patterns, modules, dependency direction, God Objects
- Technology Stack & Rationale — why each choice was made
- Data & Control Flow — ASCII diagrams, execution model
- Design Patterns & Conventions — with file references
- API & Interface Contracts — REST, CLI, MCP, auth model
- Key Files Reading Guide — ordered reading path for new contributors
- Strengths — what's genuinely well-designed
- Risks & Technical Debt — brutal, specific, with fixes
- Learning Takeaways — what to steal, what to avoid
Limitations
.gitignoreparsing only reads the root-level file (nested.gitignorefiles are not honored)- Maximum 15,000 files scanned per repository
- File content analysis limited to files under 512 KB
- AI analysis quality depends on the LLM model used (Haiku is fast/cheap, Sonnet/Opus for deeper analysis)
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ferret_mcp-0.1.1.tar.gz.
File metadata
- Download URL: ferret_mcp-0.1.1.tar.gz
- Upload date:
- Size: 89.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fbeec28301c3e269ee277717ce1d5ed6dc4640b677bc1e0c4b619a7e2fec7dc
|
|
| MD5 |
3abff101b63fc3b32dcdd17399cdac76
|
|
| BLAKE2b-256 |
e9f8de56896218cc53da348517b932311d578b3704fc134e47b0ec2df0a10992
|
Provenance
The following attestation bundles were made for ferret_mcp-0.1.1.tar.gz:
Publisher:
release.yml on fabdendev/ferret-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ferret_mcp-0.1.1.tar.gz -
Subject digest:
8fbeec28301c3e269ee277717ce1d5ed6dc4640b677bc1e0c4b619a7e2fec7dc - Sigstore transparency entry: 1223586080
- Sigstore integration time:
-
Permalink:
fabdendev/ferret-mcp@756ef3bb797d18d4bc2cc9adeee039c7cabc6160 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/fabdendev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@756ef3bb797d18d4bc2cc9adeee039c7cabc6160 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ferret_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ferret_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 29.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e20781e4f61d2ba283cfcd5cce904bb5f1b331f07237fb5a59e6df264b8677ba
|
|
| MD5 |
8bb5f2146903b92e671b89604c06a6a8
|
|
| BLAKE2b-256 |
04efe326db566df8fe189a888ee6aca7877bcb4717772a4e8d4dc96779d0175f
|
Provenance
The following attestation bundles were made for ferret_mcp-0.1.1-py3-none-any.whl:
Publisher:
release.yml on fabdendev/ferret-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ferret_mcp-0.1.1-py3-none-any.whl -
Subject digest:
e20781e4f61d2ba283cfcd5cce904bb5f1b331f07237fb5a59e6df264b8677ba - Sigstore transparency entry: 1223586237
- Sigstore integration time:
-
Permalink:
fabdendev/ferret-mcp@756ef3bb797d18d4bc2cc9adeee039c7cabc6160 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/fabdendev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@756ef3bb797d18d4bc2cc9adeee039c7cabc6160 -
Trigger Event:
push
-
Statement type: