Add MCP server over Streamable HTTP
Seven read-only tools over the catalog database: list_titles, search_scripts, get_script, get_edition, list_files, find_file and collection_stats. Writing stays in the CLI, where the effect of a command is visible. Transport is Streamable HTTP on the JDK's com.sun.net.httpserver, so Gson is the only new dependency. No sessions are kept: every tool is stateless, so Mcp-Session-Id is omitted and GET returns 405 rather than opening an SSE stream we would never write to. Requests carrying a non-loopback Origin are rejected, since a page in a browser can POST to localhost. Tool results are formatted text rather than JSON. The consumer is a model reading the answer, and prose costs less context than the same data wrapped in objects. Required arguments are validated against each tool's inputSchema before dispatch, so a missing parameter is an explicit tool error instead of a result computed from a default. find_file groups by the canonical lowercase path, otherwise an extracted directory and its ISO look like two files. Database access is serialized on one lock because sqlite-jdbc shares a single connection; the workload is read-only and single-client. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
2a051c561b
commit
393bcde6a8
@@ -29,6 +29,10 @@ dependencies {
|
||||
runtimeOnly "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
|
||||
|
||||
implementation 'org.xerial:sqlite-jdbc:3.46.1.3'
|
||||
|
||||
// JSON-RPC serwera MCP. Transport stoi na com.sun.net.httpserver z JDK,
|
||||
// więc poza parserem nie dokładamy nic.
|
||||
implementation 'com.google.code.gson:gson:2.11.0'
|
||||
}
|
||||
|
||||
application {
|
||||
|
||||
Reference in New Issue
Block a user