Skip to content

Commit 2d72f9f

Browse files
committed
add mcp server
1 parent e35b700 commit 2d72f9f

File tree

40 files changed

+429
-1643
lines changed

40 files changed

+429
-1643
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,6 @@ build/
3232
.vscode/
3333

3434
### Mac OS ###
35-
.DS_Store
35+
.DS_Store
36+
37+
*.log

core/pom.xml

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1818
<kotlin.code.style>official</kotlin.code.style>
1919
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
20+
<docker-java.version>3.7.0</docker-java.version>
2021
</properties>
2122

2223
<build>
@@ -35,25 +36,20 @@
3536
</build>
3637

3738
<dependencies>
38-
<dependency>
39-
<groupId>com.javaaidev.llmcodeexecutor</groupId>
40-
<artifactId>code-executor-model</artifactId>
41-
<version>0.3.0</version>
42-
</dependency>
4339
<dependency>
4440
<groupId>com.github.docker-java</groupId>
4541
<artifactId>docker-java-core</artifactId>
46-
<version>3.4.2</version>
42+
<version>${docker-java.version}</version>
4743
</dependency>
4844
<dependency>
4945
<groupId>com.github.docker-java</groupId>
5046
<artifactId>docker-java-transport-httpclient5</artifactId>
51-
<version>3.4.2</version>
47+
<version>${docker-java.version}</version>
5248
</dependency>
5349
<dependency>
5450
<groupId>ch.qos.logback</groupId>
5551
<artifactId>logback-classic</artifactId>
56-
<version>1.5.16</version>
52+
<version>1.5.21</version>
5753
</dependency>
5854
</dependencies>
5955

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.javaaidev.llmcodeexecutor.executor.core;
2+
3+
public class CodeExecutionConfig {
4+
5+
private String containerImage;
6+
7+
public CodeExecutionConfig() {
8+
}
9+
10+
public CodeExecutionConfig(String containerImage) {
11+
this.containerImage = containerImage;
12+
}
13+
14+
public String getContainerImage() {
15+
return containerImage;
16+
}
17+
18+
public void setContainerImage(String containerImage) {
19+
this.containerImage = containerImage;
20+
}
21+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.javaaidev.llmcodeexecutor.executor.core
2+
3+
interface CodeExecutor {
4+
fun execute(
5+
request: ExecuteCodeParameters
6+
): ExecuteCodeResult
7+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.javaaidev.llmcodeexecutor.executor.core;
2+
3+
public class CopiedFile {
4+
5+
private String path;
6+
7+
public CopiedFile() {
8+
}
9+
10+
public CopiedFile(String path) {
11+
this.path = path;
12+
}
13+
14+
public String getPath() {
15+
return path;
16+
}
17+
18+
public void setPath(String path) {
19+
this.path = path;
20+
}
21+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.javaaidev.llmcodeexecutor.executor.core;
2+
3+
public class ExecuteCodeParameters {
4+
5+
private String code;
6+
private String codeFileName;
7+
private OutputFileCollectionConfig outputFileCollectionConfig;
8+
9+
public ExecuteCodeParameters() {
10+
}
11+
12+
public ExecuteCodeParameters(String code) {
13+
this.code = code;
14+
}
15+
16+
public ExecuteCodeParameters(String code, String codeFileName,
17+
OutputFileCollectionConfig outputFileCollectionConfig) {
18+
this.code = code;
19+
this.codeFileName = codeFileName;
20+
this.outputFileCollectionConfig = outputFileCollectionConfig;
21+
}
22+
23+
public String getCode() {
24+
return code;
25+
}
26+
27+
public void setCode(String code) {
28+
this.code = code;
29+
}
30+
31+
public String getCodeFileName() {
32+
return codeFileName;
33+
}
34+
35+
public void setCodeFileName(String codeFileName) {
36+
this.codeFileName = codeFileName;
37+
}
38+
39+
public OutputFileCollectionConfig getOutputFileCollectionConfig() {
40+
return outputFileCollectionConfig;
41+
}
42+
43+
public void setOutputFileCollectionConfig(
44+
OutputFileCollectionConfig outputFileCollectionConfig) {
45+
this.outputFileCollectionConfig = outputFileCollectionConfig;
46+
}
47+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.javaaidev.llmcodeexecutor.executor.core;
2+
3+
import java.util.List;
4+
5+
public class ExecuteCodeResult {
6+
7+
private String output;
8+
private String error;
9+
private List<LoadedFile> loadedFiles;
10+
private List<CopiedFile> copiedFiles;
11+
12+
public ExecuteCodeResult() {
13+
}
14+
15+
public ExecuteCodeResult(String output, String error, List<LoadedFile> loadedFiles,
16+
List<CopiedFile> copiedFiles) {
17+
this.output = output;
18+
this.error = error;
19+
this.loadedFiles = loadedFiles;
20+
this.copiedFiles = copiedFiles;
21+
}
22+
23+
public String getOutput() {
24+
return output;
25+
}
26+
27+
public void setOutput(String output) {
28+
this.output = output;
29+
}
30+
31+
public String getError() {
32+
return error;
33+
}
34+
35+
public void setError(String error) {
36+
this.error = error;
37+
}
38+
39+
public List<LoadedFile> getLoadedFiles() {
40+
return loadedFiles;
41+
}
42+
43+
public void setLoadedFiles(
44+
List<LoadedFile> loadedFiles) {
45+
this.loadedFiles = loadedFiles;
46+
}
47+
48+
public List<CopiedFile> getCopiedFiles() {
49+
return copiedFiles;
50+
}
51+
52+
public void setCopiedFiles(
53+
List<CopiedFile> copiedFiles) {
54+
this.copiedFiles = copiedFiles;
55+
}
56+
}

core/src/main/kotlin/com/javaaidev/llmcodeexecutor/executor/core/LLMCodeExecutor.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ import com.github.dockerjava.core.DefaultDockerClientConfig
77
import com.github.dockerjava.core.DockerClientConfig
88
import com.github.dockerjava.core.DockerClientImpl
99
import com.github.dockerjava.httpclient5.ApacheDockerHttpClient
10-
import com.javaaidev.llmcodeexecutor.executor.model.CopiedFile
11-
import com.javaaidev.llmcodeexecutor.executor.model.ExecuteCodeParameters
12-
import com.javaaidev.llmcodeexecutor.executor.model.ExecuteCodeReturnType
13-
import com.javaaidev.llmcodeexecutor.executor.model.LoadedFile
1410
import org.slf4j.LoggerFactory
1511
import java.io.Closeable
1612
import java.nio.file.Files
@@ -38,12 +34,13 @@ data class CodeExecutorConfig(
3834
val containerOutputDirectory: String? = null,
3935
)
4036

41-
fun ExecuteCodeParameters.withDefaultIncludedFilePattern(includedFilePattern: String?) {
37+
fun ExecuteCodeParameters.withDefaultIncludedFilePattern(includedFilePattern: String?): ExecuteCodeParameters {
4238
this.outputFileCollectionConfig?.let { config ->
4339
if (config.includedFilePattern == null) {
4440
config.includedFilePattern = includedFilePattern
4541
}
4642
}
43+
return this
4744
}
4845

4946

@@ -70,7 +67,7 @@ class LLMCodeExecutor(
7067
logger.info("Use docker client connecting to {}", dockerClientConfig.dockerHost)
7168
}
7269

73-
fun execute(request: ExecuteCodeParameters): ExecuteCodeReturnType {
70+
fun execute(request: ExecuteCodeParameters): ExecuteCodeResult {
7471
logger.info("Starting to run code: {}", request)
7572
pullImage()
7673
val cmd = dockerClient.createContainerCmd(config.containerImage)
@@ -190,7 +187,7 @@ class LLMCodeExecutor(
190187

191188
dockerClient.removeContainerCmd(containerId).exec()
192189
logger.info("Container removed {}", containerId)
193-
return ExecuteCodeReturnType(
190+
return ExecuteCodeResult(
194191
outputBuilder.toString(),
195192
errorBuilder.toString(),
196193
loadedFiles,
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.javaaidev.llmcodeexecutor.executor.core;
2+
3+
public class LoadedFile {
4+
5+
private String mimeType;
6+
private String data;
7+
8+
public LoadedFile() {
9+
}
10+
11+
public LoadedFile(String mimeType, String data) {
12+
this.mimeType = mimeType;
13+
this.data = data;
14+
}
15+
16+
public String getMimeType() {
17+
return mimeType;
18+
}
19+
20+
public void setMimeType(String mimeType) {
21+
this.mimeType = mimeType;
22+
}
23+
24+
public String getData() {
25+
return data;
26+
}
27+
28+
public void setData(String data) {
29+
this.data = data;
30+
}
31+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.javaaidev.llmcodeexecutor.executor.core;
2+
3+
public class OutputFileCollectionConfig {
4+
5+
private Boolean loadFiles;
6+
private Boolean copyFiles;
7+
private String copiedFilesPath;
8+
private String includedFilePattern;
9+
10+
public OutputFileCollectionConfig() {
11+
}
12+
13+
public OutputFileCollectionConfig(Boolean loadFiles, Boolean copyFiles, String copiedFilesPath,
14+
String includedFilePattern) {
15+
this.loadFiles = loadFiles;
16+
this.copyFiles = copyFiles;
17+
this.copiedFilesPath = copiedFilesPath;
18+
this.includedFilePattern = includedFilePattern;
19+
}
20+
21+
public Boolean getLoadFiles() {
22+
return loadFiles;
23+
}
24+
25+
public void setLoadFiles(Boolean loadFiles) {
26+
this.loadFiles = loadFiles;
27+
}
28+
29+
public Boolean getCopyFiles() {
30+
return copyFiles;
31+
}
32+
33+
public void setCopyFiles(Boolean copyFiles) {
34+
this.copyFiles = copyFiles;
35+
}
36+
37+
public String getCopiedFilesPath() {
38+
return copiedFilesPath;
39+
}
40+
41+
public void setCopiedFilesPath(String copiedFilesPath) {
42+
this.copiedFilesPath = copiedFilesPath;
43+
}
44+
45+
public String getIncludedFilePattern() {
46+
return includedFilePattern;
47+
}
48+
49+
public void setIncludedFilePattern(String includedFilePattern) {
50+
this.includedFilePattern = includedFilePattern;
51+
}
52+
}

0 commit comments

Comments
 (0)