apollovm_mcp_io library
Native (dart:io) MCP server extras for ApolloVM.
Re-exports the web-safe apollovm_mcp surface (server,
config, tools) and adds the transports and CLI that need dart:io:
serveStdio— run the server over stdio (the standard local MCP transport).HttpSseTransport— serve over HTTP/SSE for networked use.CommandMcp— theapollovm mcp …command group for the CLI.
Import this on the Dart VM / native. For the web (dart2js / DDC), import
package:apollovm/apollovm_mcp.dart and drive ApolloMcpServer over an
in-process StreamChannel<String> instead.
Classes
- ApolloMcpServer
-
An MCP server exposing ApolloVM as agent tools over a
StreamChannel. - CommandMcp
-
The
mcpcommand group: run the ApolloVM MCP server and inspect/use its tools from the CLI. - CommandMcpCall
-
apollovm mcp call <tool>— invoke one tool once and print its JSON result. - CommandMcpDoctor
-
apollovm mcp doctor— check the MCP server and its capabilities. - CommandMcpInfo
-
apollovm mcp info— print server metadata and capabilities. - CommandMcpList
-
apollovm mcp list— list the available MCP tools (JSON). - CommandMcpSchema
-
apollovm mcp schema [tool]— print the JSON input schema(s) for tools. - CommandMcpServe
-
apollovm mcp serve— run the MCP server over stdio or HTTP/SSE. - GitBlameLine
-
One line of
git blame. - GitCommit
-
One commit from
git log. - GitResult
- The result of a mutating git command.
- GitStatusEntry
-
One entry of
git status(porcelain). - HttpSseTransport
- An MCP transport that exposes ApolloMcpServer over HTTP using the Server-Sent Events (SSE) transport:
- InMemoryRepositoryAdapter
- A web-safe, in-memory RepositoryAdapter backing tests and browser demos.
- LineRange
- A 1-based, inclusive line range for partial file reads.
- LocalRepositoryAdapter
- A RepositoryAdapter backed by a local checkout on disk.
- LspRuntime
-
In-process façade over the ApolloVM Language Server (LspService) used by
the MCP
apollovm.lsp.*tools, so an AI agent can inspect code the way an editor does: diagnostics, outline, hover, go-to-definition, references, completion and workspace-wide symbol search. - McpLimits
- Resource limits enforced by the ApolloVM MCP server.
- Op
-
The op names shared by RepositoryRpc (server) and
RemoteRepositoryAdapter(client) — one source of truth for the wire contract. - PermissionGuard
- A RepositoryAdapter decorator that enforces a RepoConfig over any inner adapter, so the security policy holds regardless of the backend.
- RemoteRepositoryAdapter
- A RepositoryAdapter that talks to a remote repository server over HTTP.
- RepoCapabilities
- What a concrete RepositoryAdapter (as configured) is able and permitted to do. Tools consult this to fail cleanly ("not supported / not permitted") instead of throwing when an operation is unavailable.
- RepoConfig
-
Policy for the repository surface (the
RepositoryAdapteroperations and theapollovm.fs.*/search.*/code.*/git.*MCP tools built on it). - RepoEdit
- The outcome of an RepositoryAdapter.edit (or write).
- RepoEntry
- A directory entry produced by RepositoryAdapter.list.
- RepoFile
- The content of a file (or a line slice of it).
- RepoRuntime
-
The MCP JSON layer over a RepositoryService: it maps the
apollovm.fs.*/apollovm.search.*/apollovm.code.*/apollovm.git.*tool calls to typed service methods and serializes the results to JSON. - RepositoryAdapter
- A pluggable backend for the workspace/repository MCP tools.
- RepositoryRpc
- A tiny, transport-agnostic JSON layer over a RepositoryService.
- RepositoryService
- A high-level, typed façade over a RepositoryAdapter — the entry point for using ApolloVM's repository features from any Dart host (a web IDE, a desktop editor, an agent, a test), independently of MCP.
- RepoStat
- File/directory metadata produced by RepositoryAdapter.stat.
- TextMatch
- A content-search hit produced by RepositoryAdapter.searchText.
Constants
-
allToolNames
→ const List<
String> -
The names of all tools this server exposes, in registration order: the core
VM tools followed by the
apollovm.lsp.*code-inspection tools. -
lspToolNames
→ const List<
String> - The LSP inspection tools this server exposes, in registration order.
-
repoToolNames
→ const List<
String> - All workspace/repository tool names (fs + search + code + git), in registration order.
Functions
-
buildLspTools(
) → List< Tool> -
The
Tooldefinitions for the LSP inspection tools. These are the single source of truth advertised viatools/list. -
buildRepoTools(
) → List< Tool> -
The
Tooldefinitions for every workspace/repository tool. -
computeLspTool(
String name, Map< String, Object?> args, McpLimits limits) → Future<Map< String, Object?> > -
Runs the LSP tool named
namewithargsand returns its JSON result map (always including anisErrorflag). Pure with respect to the host, so it runs identically in-process or inside a spawned isolate. -
computeTool(
String name, Map< String, Object?> args, McpLimits limits) → Future<Map< String, Object?> > -
Runs the tool named
namewithargsand returns its JSON result map. -
computeToolIsolated(
String toolName, Map< String, Object?> args, McpLimits limits) → Future<Map< String, Object?> > -
Runs the tool named
toolNamewith the configured timeout. Convenience wrapper over runToolInIsolate, mirroring the native executor's API. -
isLspTool(
String name) → bool -
Whether
nameis one of the LSP tools handled by computeLspTool. -
isRepoTool(
String name) → bool -
Whether
nameis one of the workspace/repository tools handled by RepoRuntime. -
runToolInIsolate(
String toolName, Map< String, Object?> args, McpLimits limits, Duration timeout) → Future<Map< String, Object?> > -
Runs computeTool for
toolNamein-process, bounding it with a cooperativetimeout(Future.timeout). -
serveStdio(
{McpLimits limits = const McpLimits(), Stream< List< ? input, StreamSink<int> >List< ? output, RepositoryAdapter? repository, RepoConfig repoConfig = const RepoConfig()}) → ApolloMcpServerint> > -
Starts an ApolloMcpServer over stdio (the standard local MCP transport),
reading newline-delimited JSON-RPC from
inputand writing tooutput(defaulting to this process's stdin/stdout).
Exceptions / Errors
- RepoException
-
Raised by a RepositoryAdapter for an expected, reportable failure — a
missing file, a path that escapes the workspace root, a rejected line anchor,
or a git error. RepoRuntime turns these into
{isError: true}tool results rather than letting them crash the server. - RepoPermissionException
- Raised when an operation is not permitted by the adapter's capabilities / RepoConfig (e.g. a write while read-only). A subtype of RepoException so callers can distinguish "forbidden" from "failed".