Check which features and MCP tools a sipnab build has
How to list the optional features a sipnab binary contains, and how that list decides which MCP tools the binary offers to an AI agent.
In short
A sipnab binary may include or leave out optional parts, called features.
sipnab --version, the MCP toolserver_capabilitiesand the REST endpointGET /v1/capabilitieseach list the features a binary contains. The three lists come from the same source, so they agree.- sipnab’s MCP server offers only the tools the binary can run. A build
without the
vconfeature does not offerexport_vconorvalidate_vcon. - A build without a feature refuses the command-line flags that need it, and the message names the feature.
This holds from sipnab 0.5.142.
Who this is for
- Anyone who runs sipnab as an MCP server for an AI agent, especially from a build with a reduced feature set.
- Anyone who needs to know which features a given sipnab binary has.
What it does
An MCP client is the AI agent’s side of the connection. It asks a server for
its tools with a tools/list request. The answer is the whole of what the
agent knows about what the server can do.
- Tools follow the build.
- sipnab registers
export_vconandvalidate_vcononly when the binary includes thevconfeature. - A build without it leaves both out of
tools/list. A call to either one gets the MCP errortool not found.
- sipnab registers
- Every surface names the same features.
--versionprints them in build order.server_capabilitiesreturns them, in alphabetical order, in itsfeaturesfield.GET /v1/capabilitieson the REST API serves the same list.
Check the features of a binary
Run:
sipnab --version
sipnab 0.5.222 (16f7b0ea) features: native,tui,audio,tls,hep,api,mcp,mcp-http,metrics,wasm,plugins,bpf,vcon,opus,archive,g729
libpcap version 1.10.4 (with TPACKET_V3); alternate capture backends named: none
Check the features over MCP
This command runs from the root of a sipnab checkout. It sends the MCP
handshake and one server_capabilities call on standard input, and uses jq
to print the features field:
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"demo","version":"1"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"server_capabilities","arguments":{}}}' | sipnab --mcp -N --quiet -I tests/pcap-samples/sip-488-codec-reject.pcapng 2>/dev/null | jq -c 'select(.id==2) | .result.structuredContent.features'
["api","archive","audio","bpf","g729","hep","mcp","mcp-http","metrics","native","opus","plugins","tls","tui","vcon","wasm"]
vcon is in the list, so tools/list on this binary includes the two vCon
tools:
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"demo","version":"1"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | sipnab --mcp -N --quiet -I tests/pcap-samples/sip-488-codec-reject.pcapng 2>/dev/null | jq -r 'select(.id==2) | .result.tools[].name | select(. == "export_vcon" or . == "validate_vcon")'
export_vcon
validate_vcon
On a build without vcon, the same command prints nothing.
Read the refusal from a build without a feature
A build made with the default features has no vcon, mcp, hep, tls or
api. Its --version line reads:
sipnab 0.5.222 (16f7b0ea) features: native,tui,audio,metrics
On that build, a vCon export flag stops the run with exit status 2:
sipnab -N -q -I tests/pcap-samples/sip-488-codec-reject.pcapng --export-vcon-when "response_code == 488" --export-vcon-dir vcons --no-cli-print
2026-10-16T11:48:08.362440Z ERROR sipnab: --export-vcon-when, --export-vcon-dir need the 'vcon' Cargo feature, which this build does not carry. Rebuild with --features vcon (or --features full); `sipnab --version` lists the features a binary was built with
--mcp on the same build stops with:
2026-10-16T11:49:14.538075Z ERROR sipnab::app::bootstrap: --mcp requires the 'mcp' feature (not compiled in)
To get the feature, install a build that carries it, or build sipnab with
--features full. The Feature flags table
lists what each feature adds.
Limits
- Build features and the
--mcp-toolsoption are separate.--mcp-toolsselects which registered tools the server offers. An example is only thevconbundle.- It does not change which features the binary contains, and it cannot add a tool whose feature the build lacks.
- Before sipnab 0.5.142, a build without
vconlistedexport_vconandvalidate_vconand refused every call to them, andserver_capabilitiesdid not namevcon,bpforwasm. Upgrade to get an accurate list.
Terms used here
- MCP: Model Context Protocol, the interface sipnab offers to AI agents.
- Tool: one operation an MCP server offers, such as
export_vcon. tools/list: the MCP request a client sends to learn which tools a server offers.- Feature: an optional part of sipnab that a build includes or leaves out.
- Build: one compiled sipnab binary with a particular set of features.
- vCon: a standard JSON format for a record of a conversation.
- Exit status: the number a program returns when it ends. 0 means success.
- jq: a command-line program that reads JSON and prints selected fields.