Symvanta is a remote MCP server that gives an AI agent 25 tools, among them add_repository, adr, ask_codebase. It answers at https://mcp.symvanta.com/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 10 September 2026; the last check, on 19 October 2026, succeeded.
Hosted code graph over MCP: exact callers, dependencies, and cross-repo blast radius for AI agents.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
add_repository | Attach a public GitHub repository to the active project (owner + repo_name; clone URL derived). Idempotent. First attach dispatches an indexing job; response carries indexing_status ("queued" | "already_indexed") and indexing_job_id to poll Inputs: owner, repo_name, default_branch, projectId, feedback |
adr | Architecture decision records: the WHY behind code, anchored to a symbol/file/project. Survive reindexes; find_node attaches a node's decisions. Ops: - record: needs title+decision. Anchor with repository+symbolPath or +filePath; omit both Inputs: op, projectId, repository, title, decision, context |
ask_codebase | Synthesis Q&A for behavior/architecture questions: answer + citations in one call. HEAVY (~2-4 s, ~3-5 k tokens): prefer context, find_node, or locate when they suffice. scope:"repo" (default) = ONE repo; scope:"all" = cross-repo (repositor Inputs: projectId, repository, commitSha, query, question, scope |
bundle | Run up to 10 independent tool calls in parallel in one round-trip. Calls share the bundle-level project/repository scope unless a call sets its own args.repository, which scopes that call alone. Supported: locate (args.mode text|symbol|sema Inputs: projectId, repository, commitSha, calls, feedback |
context | First-touch task orientation. Pass a natural-language task; returns the top 5 relevant files with their symbols and best-matching snippets in one call (~1-1.5k tokens, ~500 ms, no LLM). Replaces chaining locate (text) + locate (semantic) + Inputs: task, projectId, repository, commitSha, feedback |
diff_impact | Impact of a diff between two indexed revisions of one repo (base..head): changed files + symbols, union blast radius (layers + cross-repo fallout), affected endpoints, test suites, and co-change reminders. Replaces per-symbol relate (kind:b Inputs: projectId, repository, base, head, includeCrossRepo, expansionLimit |
estimate_scope | Pre-flight estimate before graph traversal: coarse count of files a task likely touches and whether it spans layers (common/browser/node/electron-main/...) or repositories. Decides single-file edit vs consulting the graph. Heuristic, from s Inputs: projectId, description, feedback |
find_http_route | Resolve an HTTP route by path + optional method to endpoint + handler (filePath + line bounds). Use instead of grep/locate for URL paths: follows framework router metadata (Express, Fastify, Hono, Laravel, FastAPI, etc.) and resolves dynami Inputs: projectId, repository, commitSha, path, method, feedback |
find_node | Resolve 1-10 symbols to filePath + line bounds + signature. selectors: array keyed by symbol (bare name) / symbolPath / filePath / nodeId; a flat query/name/single field also works. includeSource=true adds the excerpt, includeSummaries=true Inputs: projectId, repository, commitSha, selectors, limit, includeSummaries |
freshness | Returns lastIndexedSha, lastIndexedAt, and the current remote HEAD sha for a repository: detect index drift from remote. Reports what Symvanta knows, not local git. currentRemoteSha is null when no GitHub credential is configured. Echoes th Inputs: projectId, repository, feedback |
history | Indexed commit history. Ops: - commits: recent commits (metadata + file list); <=200/call, default 50. With a clone prefer git log. - commit: one commit by sha with its diff summary (added/modified/deleted/renamed); null if outside the inde Inputs: op, projectId, repository, sha, since, until |
index_health | Per-project index health. pendingLibraryVersions: cross-repo specifiers still indexing (an empty result may mean "not indexed yet", not "not in code"); call when a query is surprisingly empty. A row with status "skipped" is never going to a Inputs: projectId, repository, feedback |
init | Call first. Returns the active project, repositories, and index health in one call, plus a `usage` field (decision matrix + routing). Non-empty repositories = proceed with graph queries; empty = tell the user to attach repos on the dashboar Inputs: feedback |
library | Library catalog lookups. Ops: - packages: list indexed npm packages (specifier, ecosystem, owner/name, indexed-at, sha). Tenant-scoped, no projectId. - version: one package's resolved version for a project (sha, version, dep type, indexed-a Inputs: op, projectId, specifier, limit, feedback |
list_file_symbols | List symbols in one file (name + kind + line bounds). Step 1 of the two-step read: get line bounds, then pass startLine/endLine to source (op:read) for that slice only (~4-15x fewer tokens). For one symbol + signature, use find_node {symbol Inputs: projectId, repository, commitSha, filePath, feedback |
list_projects | List all projects with indexing summaries. Find a project by name or check which exist. Inputs: feedback |
list_repositories | List repositories in a project. Find repository names to scope a query to one repo. Inputs: projectId, feedback |
list_tests_for | Test suites and cases whose suite name matches a symbol name (case-insensitive substring). Call before adding tests to see existing coverage and mirror its shape. Inputs: projectId, repository, commitSha, selector, feedback |
locate | Search/lookup. Pick a mode, or omit with a bare query to AUTO-ROUTE (text, then semantic on empty; response carries answered_by). Modes: - text (replaces grep): literal identifier/string, one row/occurrence. queries:[...] (<=10 terms) searc Inputs: mode, projectId, repository, commitSha, query, queries |
map | Token-efficient repo (or subtree) skeleton: directory tree with each file's classes (methods in parens), functions, and HTTP endpoints, from the graph. Orient before drilling in. Scope with "path", cap with "maxDepth", density:"full" adds p Inputs: projectId, repository, commitSha, path, maxDepth, density |
quick_lookup | Fast substring lookup of symbol DEFINITIONS by name: rows {name, kind, filePath, startLine, repositoryName} (displayName only when distinct from name), no ranking, no semantic. Cheaper alternative to locate (mode:symbol) for latency-sensiti Inputs: query, repository, projectId, limit, feedback |
ref | Session-scoped branch / working-tree overlay. Ops: - use: pin a repository's reads to a branch (latest indexed revision). Branch must be tracked+indexed (open a PR, or add on the dashboard); else "indexing_in_progress". commitSha overrides. Inputs: op, branch, changedFiles, baseSha, deletedPaths, repository |
reindex_repository | Dispatch a reindex job for an already-attached repository (repositoryId from list_repositories / add_repository). Optional commit_sha pin. force:true re-applies the current parser even when unchanged at HEAD: it bypasses the per-file hash-s Inputs: repositoryId, commit_sha, force, projectId, feedback |
relate | Graph relationship traversal via one kind (real edges, not text). Kinds (1-10 symbols; heritage/chain one): - callers: direct callers. granularity:'file' (default) one row/file, 'site' one row/caller. - dependencies: outgoing calls/imports. Inputs: projectId, repository, commitSha, kind, selectors, limit |
source | Raw file/git access at the indexed commit, for cloud agents with no clone; with a clone prefer your own Read/Grep/git. Ops: - read: content of filePath, whole file or slice startLine..endLine. ifHash (a prior read's hash) returns {unchanged Inputs: projectId, repository, op, filePath, startLine, endLine |
Every block below points at https://mcp.symvanta.com/mcp. Pick your client and copy.
claude mcp add --transport http symvanta https://mcp.symvanta.com/mcp
{
"mcpServers": {
"symvanta": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.symvanta.com/mcp"]
}
}
}{
"mcpServers": {
"symvanta": {
"url": "https://mcp.symvanta.com/mcp"
}
}
}{
"servers": {
"symvanta": {
"type": "http",
"url": "https://mcp.symvanta.com/mcp"
}
}
}{
"context_servers": {
"symvanta": {
"url": "https://mcp.symvanta.com/mcp"
}
}
}{
"mcpServers": {
"symvanta": {
"serverUrl": "https://mcp.symvanta.com/mcp"
}
}
}{
"mcpServers": {
"symvanta": {
"url": "https://mcp.symvanta.com/mcp"
}
}
}name: Symvanta
version: 0.0.1
schema: v1
mcpServers:
- name: Symvanta
type: streamable-http
url: https://mcp.symvanta.com/mcp{
"mcpServers": {
"symvanta": {
"httpUrl": "https://mcp.symvanta.com/mcp"
}
}
}{
"mcpServers": {
"symvanta": {
"type": "http",
"url": "https://mcp.symvanta.com/mcp"
}
}
}{
"mcpServers": {
"symvanta": {
"url": "https://mcp.symvanta.com/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fmcp.symvanta.com%2Fmcp&type=streamable_http&id=symvanta&name=Symvanta
It answered our last check on 19 October 2026 in 174 ms. Over 6 checks since 10 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by symvanta.com and served from mcp.symvanta.com, the vendor's own domain: https://mcp.symvanta.com/mcp.
25, as returned by the server's own tools/list on 11 September 2026: add_repository, adr, ask_codebase, bundle, context, diff_impact, estimate_scope, find_http_route, and 17 more.
It answered our last check on 19 October 2026 in 174 ms. Over 6 checks since 10 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://mcp.symvanta.com/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: com.symvanta. Endpoint host: mcp.symvanta.com. ARD identifier: urn:air:com.symvanta:mcp:code-graph.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.