mcpscore 1.3.0: audit stdio servers in any language
Local MCP auditing is no longer tied to a file extension. mcpscore 1.3.0 can launch any stdio server command directly, bringing the same deterministic audit to Go, Java, C#, Rust, and every other runtime.
One audit path for every language
Until now, the convenient local-server path recognized Python and JavaScript files. That covered many MCP projects, but a compiled Go binary, a Java JAR, or a .NET project needed a URL transport or custom client code before mcpscore could inspect it.
The new --stdio option takes an executable followed by its arguments. mcpscore starts it directly—without a shell—opens an MCP stdio session, performs the real initialize handshake, and runs the normal audit.
# Go
uvx mcpscore==1.3.0 --stdio ./my-go-server
# Java
uvx mcpscore==1.3.0 --stdio java -jar server.jar
# C#
uvx mcpscore==1.3.0 --stdio dotnet run --project ./serverPut mcpscore’s own options before --stdio. Everything after it belongs to the server command, including the server’s own flags. Existing .py, .js, Streamable HTTP, and SSE targets continue to work as before.
Pass secrets without putting them on the command line
Local servers often need an API key or another environment variable to start. The repeatable --env option can copy a named value from mcpscore’s own environment into the server process:
API_KEY=... uvx mcpscore==1.3.0 --env API_KEY --stdio ./my-go-serverOnly the variable name appears in mcpscore’s arguments; its value stays out of the process command line, logs, and audit report. For non-sensitive configuration, --env NAME=VALUE remains available as a shorter inline form.
The library API speaks generic stdio too
Applications embedding mcpscore can pass a new StdioCommand to MCPClient.detect_and_connect. It carries the executable, an ordered argument list, and optional environment values. Those values are merged over the MCP SDK’s minimal default environment, and are deliberately excluded from the command object’s representation.
Both the CLI and library launch commands directly rather than interpreting a shell string. Arguments therefore stay arguments, and shell expansion or command chaining is never introduced by mcpscore.
More complete catalog and readiness checks
Any-language stdio is the headline, but 1.3.0 also expands what an audit can verify. mcpscore now collects and fully paginates resource templates, preserves partial evidence when collection cannot finish, and checks template URI syntax, identifier uniqueness, and non-blank names without reading resources or invoking tools.
For servers adopting MCP 2026-07-28, a new readiness rule checks that server/discover advertises at least one usable supported protocol version. The unsupported-version check now also validates the complete error payload, including the requested version and the versions a client can retry.
Try 1.3.0
Read the complete release notes, inspect the package on PyPI, or browse the rule reference. Then point the new stdio path at the server you already run locally.
Remote servers can still be scored immediately on mcpscore.dev. Local processes remain in the CLI: the web service never starts or executes code on your machine.
An mcpscore audit is one of several things worth running against a server — how it compares with Conformance, Inspector, and security scanners covers where each one fits.