-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.java
More file actions
50 lines (47 loc) · 2.51 KB
/
Copy pathMain.java
File metadata and controls
50 lines (47 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package liquidjava.mcp;
import io.modelcontextprotocol.json.McpJsonDefaults;
import io.modelcontextprotocol.json.McpJsonMapper;
import io.modelcontextprotocol.server.McpServer;
import io.modelcontextprotocol.server.McpSyncServer;
import io.modelcontextprotocol.server.transport.StdioServerTransportProvider;
import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities;
import java.io.PrintStream;
import liquidjava.mcp.tools.verification.VerifyTool;
import liquidjava.mcp.tools.smt.CheckSatisfiabilityTool;
import liquidjava.mcp.tools.smt.CheckValidityTool;
import liquidjava.mcp.tools.smt.SmtChecker;
import liquidjava.mcp.tools.smt.ValidityChecker;
import liquidjava.mcp.tools.context.GetLocalsTool;
import liquidjava.mcp.tools.context.GetGlobalsTool;
import liquidjava.mcp.tools.context.GetContractsTool;
import liquidjava.mcp.tools.verification.GetDiagnosticsTool;
import liquidjava.mcp.tools.verification.LiquidJavaVerifier;
import liquidjava.mcp.tools.context.ContextInspector;
import liquidjava.mcp.tools.fsm.GetStateMachineTool;
public final class Main {
private Main() {}
public static void main(String[] args) {
PrintStream protocolOutput = System.out;
System.setOut(System.err);
McpJsonMapper mapper = McpJsonDefaults.getMapper();
StdioServerTransportProvider transport = new StdioServerTransportProvider(mapper, System.in, protocolOutput);
LiquidJavaVerifier verifier = new LiquidJavaVerifier();
ContextInspector inspector = new ContextInspector();
McpSyncServer server = McpServer.sync(transport)
.serverInfo("liquidjava-mcp", "0.1.0-SNAPSHOT")
.capabilities(ServerCapabilities.builder().tools(false).build())
.validateToolInputs(false)
.tools(
new VerifyTool(verifier, mapper).specification(),
new GetDiagnosticsTool(verifier, mapper).specification(),
new GetLocalsTool(inspector, mapper).specification(),
new GetGlobalsTool(inspector, mapper).specification(),
new GetContractsTool(inspector, mapper).specification(),
new CheckValidityTool(new ValidityChecker()::check, mapper).specification(),
new CheckSatisfiabilityTool(new SmtChecker()::check, mapper).specification(),
new GetStateMachineTool(mapper).specification()
)
.build();
Runtime.getRuntime().addShutdownHook(new Thread(server::close, "mcp-shutdown"));
}
}