Evolva Deploy
Initial: Evolva Codebase Memory MCP — 54 repos, 6 tools, KG
f161bfe
Raw
History Blame Contribute Delete
20.1 kB
<!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 */
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 */
.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); }
/* Sections */
.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 */
.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); }
/* Architecture */
.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 */
.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 */
.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 */
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 &amp; 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">
<!-- Tools -->
<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>
<!-- Architecture -->
<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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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>
<!-- API Reference -->
<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>
<!-- Quickstart -->
<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 &mdash; v1.0.0 &mdash; 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 &bull; 6 MCP tools &bull; 7-layer architecture &bull; MIT License</p>
</footer>
</body>
</html>