C++ MCP server¶
The C++ MCP server is included in the Windows x64 and Linux x86_64 C++ packages. It communicates with MCP clients using JSON-RPC messages over standard input/output.
Package paths¶
After extracting a release package, launch:
Windows: <package>\bin\streamfind_mcp.exe
Linux: <package>/bin/streamfind_mcp
Keep the package's share/streamfind/catalogue.duckdb available. It is required
runtime data for the server.
Project and Operation flow¶
A typical client or AI agent uses this sequence:
- call
initialize; - call
tools/listto discover callable Operations; - call
createfor a new project; - call
describe,get_domain, orget_metadata; - call a domain Operation with
database_pathandproject_id.
Example requests, one JSON object per line:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"create","arguments":{"database_path":"demo.duckdb","project_id":"demo","domain":"mass_spec"}}}
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"mass_spec.get_analyses_info","arguments":{"database_path":"demo.duckdb","project_id":"demo"}}}
Direct domain Operations are stateless. Include both database_path and
project_id on every applicable request. connect is not required for this
path.
Workflow Methods¶
Workflow Methods are processing steps, not MCP tools. To use them:
- call
connectwith an existingdatabase_pathandproject_id; - call
get_available_methodsto discover Methods and their complete input schemas; - use
add_methodorset_workflowto create the ordered workflow; - call
validate_workflow; - call
run_workfloworrun_method; - call
closewhen finished.
Do not look for Methods in tools/list.
MCP client configuration¶
Configure an MCP client to launch the extracted executable over stdio. The C++ package is appropriate when the client should use the C++ implementation; the Rust package provides the equivalent Rust implementation.
If the catalogue is stored separately, set STREAMFIND_CATALOGUE to the path
of catalogue.duckdb. Otherwise keep the packaged catalogue in place.