The Codebase Map for AI Agents, Teams and Applications.
A production-grade Model Context Protocol (MCP) server for the Code-Fundi API: a codebase map and blast-radius engine for AI coding agents. Enables any MCP-compatible AI assistant (Claude, Claude Code, Cursor, Windsurf, VS Code Copilot, and more) to search, research, index, and scan code repositories through natural language, and see what a change breaks before it ships.
Built with FastMCP (TypeScript) and Zod for schema validation.
If you are an AI agent (or configuring one) and no CODEFUNDI_API_KEY is set, you must self-authenticate before using search, repos, chat, or other authenticated tools. The auth tools (code-fundi-auth-*) work without a pre-existing key.
| Situation | Action |
|---|---|
CODEFUNDI_API_KEY is set in MCP config |
Use any tool immediately — the server sends it as X-API-Key on every request |
| No API key configured | Run the OTP self-auth flow below (recommended) or password sign-in |
You can start the MCP server without CODEFUNDI_API_KEY and authenticate at runtime:
{
"mcpServers": {
"code-fundi": {
"command": "npx",
"args": ["-y", "@codefundi/code-fundi-mcp"]
}
}
}Code-Fundi uses Supabase-backed auth (POST /v2/auth/authenticate, /v2/auth/verify, /v2/auth/resend). OTP emails contain a 6-digit code — magic links are not supported on this path.
- Ask the human user for their email address.
- Call
code-fundi-auth-authenticatewith:auth_mode:"otp"email: the user's emailshould_create_user:truefor a new account,falsefor a returning user
- Tell the user to check their inbox for a 6-digit code. The API may return
verification_required: trueandapi_key.key_state: "agent_pending"until verification completes. - Ask the user for the 6-digit OTP (human-in-the-loop — you cannot guess or bypass this step).
- Call
code-fundi-auth-verifywith the sameemailand thetoken(6 digits). - On success, the MCP server automatically configures the API key in memory for all subsequent tool calls in this session.
If the code expired or was not received, call code-fundi-auth-resend with the same email, then repeat step 5.
Example dialogue:
Agent: What email should I use to sign in to Code-Fundi?
User: dev@example.com
Agent: [calls code-fundi-auth-authenticate] I've sent a 6-digit code to dev@example.com. Please paste it here.
User: 482913
Agent: [calls code-fundi-auth-verify] You're signed in. I can now search and index your repositories.
For existing accounts with a password, call code-fundi-auth-authenticate with auth_mode: "password", the user's email, should_create_user: false, and the password parameter. The MCP client sends the password only in the X-CodeFundi-Auth-Password header (never in the JSON body). Production requires HTTPS. Returning users may receive an active API key immediately without a separate verify step.
- The API key is held in memory for the lifetime of the MCP server process. It is not persisted across IDE or MCP restarts.
- Recommend the user add the key to their MCP config as
CODEFUNDI_API_KEYso future sessions start authenticated. - A FREE-tier account and API key are created automatically on first signup.
| HTTP status | What to do |
|---|---|
| 401 Unauthorized | No valid key — run the OTP flow above, or set CODEFUNDI_API_KEY |
| 429 Too many requests | Auth endpoints are rate-limited per IP; wait for Retry-After seconds, then retry |
Every tool below is backed by the same codebase map: structural dependencies, call graph, and blast radius, indexed once and queried in milliseconds.
- 🔍 Semantic & grep code search across your indexed codebase map
- 🧠 AI-powered research: search plus AI analysis in a single call
- 📦 Repository management: index, status, README, listing, public catalog
- 🛰️ Repository intelligence: cross-repo dependency map, blueprint, Blast-Radius Guard (impact analysis before you merge)
- 📄 File documentation: AI-generated docs for any indexed file
- 📊 Usage statistics: query usage, activity, language breakdowns
- 🔐 Agent-driven authentication: sign up/sign in via OTP without pre-configured keys
- 💬 AI chat & model insight: direct conversation with Code-Fundi AI, model catalog, and per-tier limits
Install the package (includes a pre-built dist/). The code-fundi-mcp binary is on your PATH when installed globally, or available via npx without cloning the repo:
npm install -g @codefundi/code-fundi-mcpOr add it to a project:
npm install @codefundi/code-fundi-mcpgit clone https://github.com/Code-Fundi/code-fundi-mcp.git
cd code-fundi-mcp
npm install
npm run buildOption A — API key (fastest): set your key as an environment variable:
export CODEFUNDI_API_KEY=your_api_key_hereOption B — no API key: skip the env var and let the agent self-authenticate at runtime. See Getting started for AI agents.
Zero-config MCP example (no env block):
{
"mcpServers": {
"code-fundi": {
"command": "npx",
"args": ["-y", "@codefundi/code-fundi-mcp"]
}
}
}After a global install (npm i -g @codefundi/code-fundi-mcp), point MCP at the published binary (no path to dist/index.js required):
{
"mcpServers": {
"code-fundi": {
"command": "@codefundi/code-fundi-mcp",
"env": {
"CODEFUNDI_API_KEY": "your_api_key_here"
}
}
}
}If the binary is not on your PATH, use npx (downloads or uses the local package and runs the same entrypoint):
{
"mcpServers": {
"code-fundi": {
"command": "npx",
"args": ["-y", "@codefundi/code-fundi-mcp"],
"env": {
"CODEFUNDI_API_KEY": "your_api_key_here"
}
}
}
}Same pattern as Claude: command plus optional args only, no manual path to the repo:
{
"mcpServers": {
"code-fundi": {
"command": "npx",
"args": ["-y", "@codefundi/code-fundi-mcp"],
"env": {
"CODEFUNDI_API_KEY": "your_api_key_here"
}
}
}
}When developing inside this repo, you can run npm run dev or npx tsx src/index.ts without building first.
npm run dev # Run with tsx (no build needed)
npx fastmcp inspect src/index.ts # Open MCP Inspector UI
npx fastmcp dev src/index.ts # Test with MCP CLICovers the Code-Fundi V2 API for codebase mapping and blast-radius analysis: search (including search-with-chat / research), repositories (list, index, status, readme, public catalog), repository intelligence (map, blueprint, radius), files, history, statistics, API keys, authentication, plus Fundi chat (POST /v1/fundi/chat) and the V2 model catalog / limits (GET /v2/models, GET /v2/models/limits).
| Tool | Description |
|---|---|
code-fundi-search |
Semantic and grep search across your indexed codebase map, with filters |
code-fundi-research |
Search plus AI-synthesized analysis of matching code |
| Tool | Description |
|---|---|
code-fundi-list-repos |
List indexed repositories with pagination |
code-fundi-index-repo |
Index a new GitHub repository into your codebase map |
code-fundi-repo-status |
Check repository indexing status |
code-fundi-repo-readme |
Get repository README documentation (deprecated, prefer blueprint) |
code-fundi-list-public-repos |
Browse the global catalog of indexed public repositories (no key needed) |
| Tool | Description |
|---|---|
code-fundi-repo-map |
Cross-repository dependency map: how services and packages actually connect |
code-fundi-repo-blueprint |
README plus dependency and convention overview (successor to repo-readme) |
code-fundi-repo-radius |
Blast-Radius Guard: every file and function that breaks before you merge (PRO+) |
| Tool | Description |
|---|---|
code-fundi-list-files |
List files in a repository |
code-fundi-file-docs |
Get AI-generated file documentation |
| Tool | Description |
|---|---|
code-fundi-list-history |
List query history with filters |
code-fundi-history-item |
Get full details of a history entry |
code-fundi-conversation |
Get conversation thread messages |
| Tool | Description |
|---|---|
code-fundi-usage-stats |
Query-type usage breakdown |
code-fundi-activity-stats |
Daily activity statistics |
code-fundi-language-stats |
Programming language usage |
| Tool | Description |
|---|---|
code-fundi-auth-authenticate |
Start OTP/password auth flow (no key needed) |
code-fundi-auth-verify |
Verify OTP code and obtain API key |
code-fundi-auth-resend |
Resend OTP verification email |
code-fundi-list-api-keys |
List API keys (masked) |
code-fundi-regenerate-api-key |
Regenerate API key |
code-fundi-disable-api-key |
Disable an API key by ID (DELETE /v2/keys/{key_id}) |
| Tool | Description |
|---|---|
code-fundi-chat |
Fundi AI chat (POST /v1/fundi/chat; streamed responses are collected to text) |
code-fundi-list-models |
List the curated chat model catalog (GET /v2/models) |
code-fundi-model-limits |
Get AI model limits and tier configuration (GET /v2/models/limits) |
Two modes: pre-configured API key (CODEFUNDI_API_KEY in MCP config) or agent-driven OTP/password auth at runtime. Full step-by-step instructions, tool names, and error handling are in Getting started for AI agents at the top of this README.
| Variable | Required | Default | Description |
|---|---|---|---|
CODEFUNDI_API_KEY |
No* | — | API key for authentication |
CODEFUNDI_BASE_URL |
No | https://api.codefundi.app |
API base URL override |
* Required unless using agent-driven auth tools.
MIT
.png?raw=true)