Skip to main content
Glama

codebase_about

Get a quick overview of SocratiCode's MCP tools and their purpose. Displays information about the codebase intelligence server and how to use its tools.

Instructions

Display information about SocratiCode — what it is, its tools and how to use it. Use this to get a quick overview of the MCP tools and their purpose.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • src/index.ts:460-467 (registration)
    Tool 'codebase_about' is registered via server.tool() with description and delegates to handleManageTool('codebase_about', args).
    server.tool(
      "codebase_about",
      "Display information about SocratiCode — what it is, its tools and how to use it. Use this to get a quick overview of the MCP tools and their purpose.",
      {},
      async (args) => ({
        content: [{ type: "text", text: await handleManageTool("codebase_about", args) }],
      }),
    );
  • Handler case for 'codebase_about' in handleManageTool(). Returns a multi-line informational string about SocratiCode, including infrastructure status and quick reference of all tools.
    case "codebase_about": {
      const infraStatus = await getInfraStatusSummary();
      return [
        "SocratiCode — Codebase intelligence MCP server",
        "Hybrid semantic + keyword search, dependency graphs, context artifacts.",
        "",
        ...infraStatus,
        "",
        "━━━ Quick Reference ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
        "",
        "Indexing:",
        "  codebase_index        — Index a project (background). Poll with codebase_status.",
        "  codebase_update       — Incremental re-index (changed files only).",
        "  codebase_stop         — Gracefully stop in-progress indexing.",
        "  codebase_remove       — Delete a project's index.",
        "  codebase_watch        — Start/stop/status of live file watcher.",
        "",
        "Search:",
        "  codebase_search       — Hybrid semantic + BM25 search. Use after indexing.",
        "  codebase_status       — Check index status, progress, watcher state.",
        "",
        "Dependency Graph:",
        "  codebase_graph_build  — Build AST-based dependency graph (background).",
        "  codebase_graph_query  — Imports & dependents for a file.",
        "  codebase_graph_stats  — Graph stats: files, edges, most connected, orphans.",
        "  codebase_graph_circular — Find circular dependencies.",
        "  codebase_graph_visualize — Mermaid diagram (default) or interactive HTML explorer (mode=\"interactive\"), colour-coded by language.",
        "  codebase_graph_status — Poll graph build progress.",
        "  codebase_graph_remove — Delete a project's graph.",
        "",
        "Context Artifacts:",
        "  codebase_context        — List artifacts (.socraticodecontextartifacts.json).",
        "  codebase_context_search — Search schemas, API specs, configs, docs.",
        "  codebase_context_index  — Re-index artifacts (usually automatic).",
        "  codebase_context_remove — Delete indexed artifacts.",
        "",
        "Management:",
        "  codebase_health       — Check Docker, Qdrant, embeddings status.",
        "  codebase_list_projects — List all indexed projects.",
        "",
        "━━━ Typical Workflow ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
        "",
        "1. codebase_index → poll codebase_status until complete.",
        "2. codebase_search to find code. Search before reading files.",
        "3. codebase_graph_query to explore dependencies.",
        "4. codebase_context_search for schemas, API specs, configs.",
        "",
        `v${SOCRATICODE_VERSION} · © 2026 Giancarlo Erra — Altaire Limited · AGPL-3.0`,
        "https://github.com/giancarloerra/socraticode",
      ].join("\n");
    }
  • Helper function getInfraStatusSummary() used by the codebase_about handler to embed infrastructure status (Docker, Qdrant, embeddings) into the output.
    /** Quick infrastructure check for embedding in codebase_about */
    async function getInfraStatusSummary(): Promise<string[]> {
      const lines: string[] = [];
      const config = getEmbeddingConfig();
      try {
        if (QDRANT_MODE === "external") {
          const endpoint = QDRANT_URL ?? `http://${QDRANT_HOST}:${QDRANT_PORT}`;
          try {
            await listCodebaseCollections(); // throws if unreachable
            const provider = await getEmbeddingProvider();
            const health = await provider.healthCheck();
            if (health.available) {
              lines.push(`Infrastructure: ✅ External Qdrant reachable (${endpoint}), ${config.embeddingProvider} embeddings ready`);
            } else {
              lines.push(`Infrastructure: ⚠️ External Qdrant reachable (${endpoint}), but ${config.embeddingProvider} embeddings not ready`);
            }
          } catch {
            lines.push(`Infrastructure: ❌ Cannot reach external Qdrant at ${endpoint}`);
            lines.push("  Check QDRANT_URL / QDRANT_HOST and make sure the server is running.");
          }
        } else {
          const docker = await isDockerAvailable();
          if (!docker) {
            lines.push("Infrastructure: ❌ Docker not available");
            lines.push("  Install from https://docker.com and start Docker Desktop.");
            return lines;
          }
          const qdrant = await isQdrantRunning();
          const provider = await getEmbeddingProvider();
          const health = await provider.healthCheck();
          if (qdrant && health.available) {
            lines.push(`Infrastructure: ✅ All services running (Docker, Qdrant, ${config.embeddingProvider} embeddings)`);
          } else {
            const missing: string[] = [];
            if (!qdrant) missing.push("Qdrant");
            if (!health.available) missing.push(`${config.embeddingProvider} embeddings`);
            lines.push(`Infrastructure: ⚠️ Docker OK, but ${missing.join(" and ")} not running`);
            lines.push("  Run codebase_index or codebase_health to auto-start services.");
          }
        }
      } catch {
        lines.push("Infrastructure: ❓ Could not check status");
      }
      return lines;
    }
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description only says 'Display information' without specifying read-only nature, network calls, or any side effects. Minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no fluff. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and simple purpose, description fully covers what the tool does and when to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has zero parameters; baseline 4 according to guidelines. Description adds no parameter info, but not needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool displays information about SocratiCode, its tools, and usage. It distinguishes from sibling tools like codebase_context or codebase_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use for a quick overview of MCP tools and purpose. Does not mention when not to use or alternatives, but context implies it's for initial orientation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/giancarloerra/SocratiCode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server