| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <title>Evolva Codebase Memory MCP — Documentation</title> |
| <meta name="description" content="MCP server providing codebase memory and knowledge graph access for 54 Evolva repositories across a 7-layer architecture." /> |
| <style> |
| :root { |
| --bg: #0d1117; |
| --surface: #161b22; |
| --surface2: #21262d; |
| --border: #30363d; |
| --text: #e6edf3; |
| --text-muted: #8b949e; |
| --accent: #58a6ff; |
| --accent2: #bc8cff; |
| --green: #3fb950; |
| --orange: #d29922; |
| --red: #f85149; |
| --font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; |
| --mono: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; |
| } |
| * { box-sizing: border-box; margin: 0; padding: 0; } |
| body { background: var(--bg); color: var(--text); font-family: var(--font); line-height: 1.6; } |
| |
| |
| nav { background: var(--surface); border-bottom: 1px solid var(--border); padding: 0 2rem; display: flex; align-items: center; justify-content: space-between; height: 60px; position: sticky; top: 0; z-index: 100; } |
| .nav-brand { font-size: 1.1rem; font-weight: 700; color: var(--text); text-decoration: none; display: flex; align-items: center; gap: 0.5rem; } |
| .nav-brand span { color: var(--accent); } |
| .nav-links { display: flex; gap: 1.5rem; } |
| .nav-links a { color: var(--text-muted); text-decoration: none; font-size: 0.9rem; transition: color 0.2s; } |
| .nav-links a:hover { color: var(--text); } |
| .badge { background: var(--green); color: #000; font-size: 0.7rem; font-weight: 700; padding: 2px 8px; border-radius: 20px; } |
| |
| |
| .hero { padding: 5rem 2rem 4rem; text-align: center; max-width: 900px; margin: 0 auto; } |
| .hero-tag { display: inline-flex; align-items: center; gap: 0.5rem; background: var(--surface2); border: 1px solid var(--border); border-radius: 20px; padding: 4px 14px; font-size: 0.8rem; color: var(--text-muted); margin-bottom: 1.5rem; } |
| .hero-tag .dot { width: 8px; height: 8px; background: var(--green); border-radius: 50%; animation: pulse 2s infinite; } |
| @keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.4} } |
| h1 { font-size: 3rem; font-weight: 800; line-height: 1.2; margin-bottom: 1rem; } |
| h1 .gradient { background: linear-gradient(135deg, var(--accent), var(--accent2)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } |
| .hero-desc { font-size: 1.15rem; color: var(--text-muted); max-width: 600px; margin: 0 auto 2rem; } |
| .hero-stats { display: flex; justify-content: center; gap: 3rem; margin-bottom: 2.5rem; } |
| .stat { text-align: center; } |
| .stat-num { font-size: 2.5rem; font-weight: 800; color: var(--accent); } |
| .stat-label { font-size: 0.85rem; color: var(--text-muted); } |
| .hero-actions { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; } |
| .btn { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.65rem 1.5rem; border-radius: 8px; font-size: 0.95rem; font-weight: 600; text-decoration: none; transition: all 0.2s; cursor: pointer; border: none; } |
| .btn-primary { background: var(--accent); color: #000; } |
| .btn-primary:hover { background: #79b8ff; } |
| .btn-secondary { background: var(--surface2); color: var(--text); border: 1px solid var(--border); } |
| .btn-secondary:hover { border-color: var(--accent); color: var(--accent); } |
| |
| |
| .container { max-width: 1100px; margin: 0 auto; padding: 0 2rem; } |
| section { padding: 4rem 0; border-top: 1px solid var(--border); } |
| .section-label { font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--accent); margin-bottom: 0.5rem; } |
| h2 { font-size: 2rem; font-weight: 700; margin-bottom: 0.75rem; } |
| .section-desc { color: var(--text-muted); max-width: 600px; margin-bottom: 2.5rem; } |
| |
| |
| .tools-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1.25rem; } |
| .tool-card { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 1.5rem; transition: border-color 0.2s; } |
| .tool-card:hover { border-color: var(--accent); } |
| .tool-header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; } |
| .tool-icon { width: 36px; height: 36px; background: linear-gradient(135deg, var(--accent), var(--accent2)); border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 1rem; } |
| .tool-name { font-family: var(--mono); font-size: 0.95rem; font-weight: 700; color: var(--accent); } |
| .tool-desc { color: var(--text-muted); font-size: 0.9rem; margin-bottom: 1rem; } |
| .tool-params { display: flex; flex-wrap: wrap; gap: 0.4rem; } |
| .param { background: var(--surface2); border: 1px solid var(--border); border-radius: 4px; padding: 2px 8px; font-family: var(--mono); font-size: 0.75rem; color: var(--text-muted); } |
| .param.required { border-color: var(--accent); color: var(--accent); } |
| |
| |
| .arch-grid { display: grid; gap: 1rem; } |
| .layer-card { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 1.25rem 1.5rem; display: grid; grid-template-columns: 60px 1fr auto; align-items: center; gap: 1rem; transition: border-color 0.2s; } |
| .layer-card:hover { border-color: var(--accent2); } |
| .layer-num { width: 44px; height: 44px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 1.2rem; font-weight: 800; } |
| .layer-info h3 { font-size: 1rem; font-weight: 700; margin-bottom: 0.2rem; } |
| .layer-info p { font-size: 0.85rem; color: var(--text-muted); } |
| .layer-repos { font-size: 0.85rem; color: var(--text-muted); white-space: nowrap; } |
| .layer-repos strong { color: var(--text); } |
| |
| |
| .api-table { width: 100%; border-collapse: collapse; } |
| .api-table th { text-align: left; padding: 0.75rem 1rem; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-muted); border-bottom: 1px solid var(--border); } |
| .api-table td { padding: 0.85rem 1rem; border-bottom: 1px solid var(--border); font-size: 0.9rem; vertical-align: top; } |
| .api-table tr:last-child td { border-bottom: none; } |
| .method { font-family: var(--mono); font-size: 0.75rem; font-weight: 700; padding: 2px 8px; border-radius: 4px; } |
| .method.get { background: rgba(63,185,80,0.15); color: var(--green); } |
| .method.post { background: rgba(88,166,255,0.15); color: var(--accent); } |
| .endpoint-path { font-family: var(--mono); font-size: 0.85rem; color: var(--text); } |
| .endpoint-desc { color: var(--text-muted); } |
| |
| |
| .code-block { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; overflow: hidden; margin: 1.5rem 0; } |
| .code-header { background: var(--surface2); padding: 0.6rem 1rem; display: flex; justify-content: space-between; align-items: center; font-size: 0.8rem; color: var(--text-muted); border-bottom: 1px solid var(--border); } |
| .code-body { padding: 1.25rem; overflow-x: auto; } |
| pre { font-family: var(--mono); font-size: 0.85rem; line-height: 1.7; color: var(--text); } |
| .kw { color: var(--accent2); } |
| .str { color: var(--green); } |
| .num { color: var(--orange); } |
| .cmt { color: var(--text-muted); } |
| |
| |
| footer { background: var(--surface); border-top: 1px solid var(--border); padding: 2rem; text-align: center; color: var(--text-muted); font-size: 0.85rem; } |
| footer a { color: var(--accent); text-decoration: none; } |
| |
| @media (max-width: 768px) { |
| h1 { font-size: 2rem; } |
| .hero-stats { gap: 1.5rem; } |
| .stat-num { font-size: 2rem; } |
| .layer-card { grid-template-columns: 50px 1fr; } |
| .layer-repos { display: none; } |
| } |
| </style> |
| </head> |
| <body> |
|
|
| <nav> |
| <a class="nav-brand" href="#">🧠 <span>Evolva</span> Codebase Memory MCP</a> |
| <div class="nav-links"> |
| <a href="#tools">Tools</a> |
| <a href="#architecture">Architecture</a> |
| <a href="#api">API</a> |
| <a href="#quickstart">Quickstart</a> |
| <span class="badge">v1.0.0</span> |
| </div> |
| </nav> |
|
|
| <div class="hero"> |
| <div class="hero-tag"><span class="dot"></span> Live & Deployed on Hugging Face Spaces</div> |
| <h1>Codebase Memory<br><span class="gradient">MCP Server</span></h1> |
| <p class="hero-desc"> |
| Model Context Protocol server providing AI agents with deep knowledge of the Evolva codebase — |
| 54 repositories, 7 architecture layers, full dependency graph. |
| </p> |
| <div class="hero-stats"> |
| <div class="stat"><div class="stat-num">54</div><div class="stat-label">Repos Indexed</div></div> |
| <div class="stat"><div class="stat-num">6</div><div class="stat-label">MCP Tools</div></div> |
| <div class="stat"><div class="stat-num">7</div><div class="stat-label">Arch Layers</div></div> |
| <div class="stat"><div class="stat-num">17</div><div class="stat-label">Relationships</div></div> |
| </div> |
| <div class="hero-actions"> |
| <a class="btn btn-primary" href="https://huggingface.co/spaces/Pippinlitli/evolva-codebase-memory" target="_blank">🚀 Open Space</a> |
| <a class="btn btn-secondary" href="#quickstart">📖 Quickstart</a> |
| <a class="btn btn-secondary" href="#api">🔌 API Reference</a> |
| </div> |
| </div> |
|
|
| <div class="container"> |
|
|
| |
| <section id="tools"> |
| <div class="section-label">MCP Tools</div> |
| <h2>6 Powerful Tools</h2> |
| <p class="section-desc">Every tool is callable via the MCP protocol or directly via REST POST to <code>/mcp/call</code>.</p> |
| <div class="tools-grid"> |
| <div class="tool-card"> |
| <div class="tool-header"> |
| <div class="tool-icon">🔍</div> |
| <div class="tool-name">search_repos</div> |
| </div> |
| <p class="tool-desc">Search repositories by name, topic, language, or architecture layer with relevance scoring.</p> |
| <div class="tool-params"> |
| <span class="param required">query*</span> |
| <span class="param">layer</span> |
| <span class="param">language</span> |
| <span class="param">limit</span> |
| </div> |
| </div> |
| <div class="tool-card"> |
| <div class="tool-header"> |
| <div class="tool-icon">📦</div> |
| <div class="tool-name">get_repo_details</div> |
| </div> |
| <p class="tool-desc">Get detailed information about a specific repository including all metadata and dependency relationships.</p> |
| <div class="tool-params"> |
| <span class="param required">repo_name*</span> |
| </div> |
| </div> |
| <div class="tool-card"> |
| <div class="tool-header"> |
| <div class="tool-icon">🏗️</div> |
| <div class="tool-name">get_architecture</div> |
| </div> |
| <p class="tool-desc">Get the full 7-layer architecture overview with all repositories organized by layer.</p> |
| <div class="tool-params"> |
| <span class="param">layer_id</span> |
| </div> |
| </div> |
| <div class="tool-card"> |
| <div class="tool-header"> |
| <div class="tool-icon">🔗</div> |
| <div class="tool-name">get_dependencies</div> |
| </div> |
| <p class="tool-desc">Get the dependency graph for a repository — what it depends on (upstream) and what depends on it (downstream).</p> |
| <div class="tool-params"> |
| <span class="param required">repo_name*</span> |
| <span class="param">direction</span> |
| </div> |
| </div> |
| <div class="tool-card"> |
| <div class="tool-header"> |
| <div class="tool-icon">📊</div> |
| <div class="tool-name">get_stats</div> |
| </div> |
| <p class="tool-desc">Get aggregate statistics: language distribution, layer sizes, star counts, and topic frequency analysis.</p> |
| <div class="tool-params"> |
| <span class="param">metric</span> |
| </div> |
| </div> |
| <div class="tool-card"> |
| <div class="tool-header"> |
| <div class="tool-icon">🌐</div> |
| <div class="tool-name">find_related</div> |
| </div> |
| <p class="tool-desc">Find repositories related to a given repo based on shared topics, language, layer proximity, or dependency graph.</p> |
| <div class="tool-params"> |
| <span class="param required">repo_name*</span> |
| <span class="param">strategy</span> |
| <span class="param">limit</span> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="architecture"> |
| <div class="section-label">Architecture</div> |
| <h2>7-Layer Architecture</h2> |
| <p class="section-desc">54 repositories organized into 7 logical layers from infrastructure to research.</p> |
| <div class="arch-grid"> |
| <div class="layer-card"> |
| <div class="layer-num" style="background:rgba(248,81,73,0.15);color:#f85149;">L1</div> |
| <div class="layer-info"><h3>Foundation & Infrastructure</h3><p>Core infrastructure, DevOps, CI/CD, containerization, and base platform services</p></div> |
| <div class="layer-repos"><strong>7</strong> repos</div> |
| </div> |
| <div class="layer-card"> |
| <div class="layer-num" style="background:rgba(210,153,34,0.15);color:#d29922;">L2</div> |
| <div class="layer-info"><h3>Data & Storage Layer</h3><p>Databases, vector stores, knowledge graphs, and data persistence systems</p></div> |
| <div class="layer-repos"><strong>7</strong> repos</div> |
| </div> |
| <div class="layer-card"> |
| <div class="layer-num" style="background:rgba(63,185,80,0.15);color:#3fb950;">L3</div> |
| <div class="layer-info"><h3>AI & ML Core</h3><p>Machine learning models, training pipelines, inference engines, and AI primitives</p></div> |
| <div class="layer-repos"><strong>7</strong> repos</div> |
| </div> |
| <div class="layer-card"> |
| <div class="layer-num" style="background:rgba(88,166,255,0.15);color:#58a6ff;">L4</div> |
| <div class="layer-info"><h3>Agent Framework</h3><p>Agent orchestration, multi-agent systems, memory management, and tool use</p></div> |
| <div class="layer-repos"><strong>7</strong> repos</div> |
| </div> |
| <div class="layer-card"> |
| <div class="layer-num" style="background:rgba(188,140,255,0.15);color:#bc8cff;">L5</div> |
| <div class="layer-info"><h3>MCP & Integration Layer</h3><p>Model Context Protocol servers, API integrations, and connector ecosystem</p></div> |
| <div class="layer-repos"><strong>9</strong> repos</div> |
| </div> |
| <div class="layer-card"> |
| <div class="layer-num" style="background:rgba(88,166,255,0.1);color:#79b8ff;">L6</div> |
| <div class="layer-info"><h3>Applications & Services</h3><p>End-user applications, web services, dashboards, and product interfaces</p></div> |
| <div class="layer-repos"><strong>7</strong> repos</div> |
| </div> |
| <div class="layer-card"> |
| <div class="layer-num" style="background:rgba(63,185,80,0.1);color:#56d364;">L7</div> |
| <div class="layer-info"><h3>Research & Experimental</h3><p>Research projects, experimental features, prototypes, and innovation lab</p></div> |
| <div class="layer-repos"><strong>8</strong> repos</div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="api"> |
| <div class="section-label">API Reference</div> |
| <h2>REST Endpoints</h2> |
| <p class="section-desc">All endpoints are available at the Hugging Face Space URL.</p> |
| <table class="api-table"> |
| <thead> |
| <tr><th>Method</th><th>Endpoint</th><th>Description</th></tr> |
| </thead> |
| <tbody> |
| <tr><td><span class="method get">GET</span></td><td class="endpoint-path">/health</td><td class="endpoint-desc">Health check — returns status and repos_indexed count</td></tr> |
| <tr><td><span class="method get">GET</span></td><td class="endpoint-path">/mcp/tools</td><td class="endpoint-desc">List all 6 MCP tool definitions</td></tr> |
| <tr><td><span class="method post">POST</span></td><td class="endpoint-path">/mcp/call</td><td class="endpoint-desc">Execute an MCP tool call with JSON body</td></tr> |
| <tr><td><span class="method get">GET</span></td><td class="endpoint-path">/v1/repos</td><td class="endpoint-desc">List all 54 repositories (supports ?layer, ?language, ?topic filters)</td></tr> |
| <tr><td><span class="method get">GET</span></td><td class="endpoint-path">/v1/repos/{name}</td><td class="endpoint-desc">Get details for a specific repository</td></tr> |
| <tr><td><span class="method get">GET</span></td><td class="endpoint-path">/v1/architecture</td><td class="endpoint-desc">Get the 7-layer architecture (supports ?layer_id filter)</td></tr> |
| <tr><td><span class="method get">GET</span></td><td class="endpoint-path">/v1/stats</td><td class="endpoint-desc">Get aggregate codebase statistics</td></tr> |
| <tr><td><span class="method get">GET</span></td><td class="endpoint-path">/v1/relationships</td><td class="endpoint-desc">Get all dependency relationships</td></tr> |
| <tr><td><span class="method get">GET</span></td><td class="endpoint-path">/docs</td><td class="endpoint-desc">This documentation site</td></tr> |
| <tr><td><span class="method get">GET</span></td><td class="endpoint-path">/api/docs</td><td class="endpoint-desc">Interactive Swagger UI</td></tr> |
| </tbody> |
| </table> |
| </section> |
|
|
| |
| <section id="quickstart"> |
| <div class="section-label">Quickstart</div> |
| <h2>Get Started in 60 Seconds</h2> |
| <p class="section-desc">Connect to the MCP server or call the REST API directly.</p> |
|
|
| <div class="code-block"> |
| <div class="code-header"><span>MCP Configuration (Claude Desktop / Cursor)</span></div> |
| <div class="code-body"><pre>{ |
| <span class="str">"mcpServers"</span>: { |
| <span class="str">"evolva-codebase-memory"</span>: { |
| <span class="str">"url"</span>: <span class="str">"https://pippinlitli-evolva-codebase-memory.hf.space"</span>, |
| <span class="str">"transport"</span>: <span class="str">"http"</span> |
| } |
| } |
| }</pre></div> |
| </div> |
|
|
| <div class="code-block"> |
| <div class="code-header"><span>Python — Search Repositories</span></div> |
| <div class="code-body"><pre><span class="kw">import</span> requests |
|
|
| BASE = <span class="str">"https://pippinlitli-evolva-codebase-memory.hf.space"</span> |
|
|
| <span class="cmt"># Search for agent-related repos</span> |
| resp = requests.post(f<span class="str">"{BASE}/mcp/call"</span>, json={ |
| <span class="str">"name"</span>: <span class="str">"search_repos"</span>, |
| <span class="str">"arguments"</span>: {<span class="str">"query"</span>: <span class="str">"agent"</span>, <span class="str">"layer"</span>: <span class="num">4</span>} |
| }) |
| <span class="kw">print</span>(resp.json()) |
|
|
| <span class="cmt"># Get architecture overview</span> |
| arch = requests.get(f<span class="str">"{BASE}/v1/architecture"</span>).json() |
| <span class="kw">print</span>(f<span class="str">"Layers: {arch['total_layers']}, Repos: {arch['total_repos']}"</span>)</pre></div> |
| </div> |
|
|
| <div class="code-block"> |
| <div class="code-header"><span>cURL — Health Check</span></div> |
| <div class="code-body"><pre>curl https://pippinlitli-evolva-codebase-memory.hf.space/health |
| <span class="cmt"># {"status":"up","repos_indexed":54,"version":"1.0.0","layers":7}</span> |
|
|
| curl https://pippinlitli-evolva-codebase-memory.hf.space/mcp/tools | jq '.count' |
| <span class="cmt"># 6</span></pre></div> |
| </div> |
| </section> |
|
|
| </div> |
|
|
| <footer> |
| <p>Evolva Codebase Memory MCP — v1.0.0 — Deployed on <a href="https://huggingface.co/spaces/Pippinlitli/evolva-codebase-memory" target="_blank">Hugging Face Spaces</a></p> |
| <p style="margin-top:0.5rem;">54 repositories • 6 MCP tools • 7-layer architecture • MIT License</p> |
| </footer> |
|
|
| </body> |
| </html> |
|
|