使用说明
mcp编码模式
此README涵盖了此存储库中围绕MCP构建的后端远程代码执行堆栈。
当前执行路径为:
client -> pyrunner -> coderunner -> agent ->Docker/gVisor容器
范围内的组件
client:可选的FastAPI聊天/编排服务,运行LLM代理并连接到MCP。pyrunner:公开工具的Python MCP服务器,包括execute_code.coderunner:转到通过HTTP接受执行请求并通过gRPC将其转发给workers的控制平面。agent:Go worker服务,管理沙盒容器并远程执行代码。redis:代理流使用的令牌存储。
本文档有意关注远程执行后端路径,并没有描述存储库中的每个应用程序。
建筑
代码执行流程
- 用户消息到达
client通过/chat. - LLM使用MCP工具
pyrunner. - 当模型调用时
execute_code,pyrunner发送POST /run到coderunner. coderunner选择遥控器agent连接来自REMOTE_HOSTS.coderunner使用以下命令通过gRPC转发请求ExecuteCode.- 这
agent验证语言,应用超时,并在托管容器内运行指令。 - Stout、stderr和退出状态通过返回
coderunner到pyrunner,然后发送到MCP客户端。
运行时职责
pyrunner是MCP和工具网关。它不会在当前设置中直接在本地执行代码。coderunner是薄的传输/控制平面层。它接收/run请求并将其发送给员工。agent是执行层。它启动并重用容器,然后使用Docker exec运行命令。
当前状态
- MCP执行当前在Python路径中是无状态的。
- Go执行API支持
sessionId但是pyrunner当前未发送。 agent当前仅验证python和bash用于远程执行。- 工人选择
coderunner是随机的,不感知负载。
服务和港口
pyrunner:MCP端点位于:8000client:FastAPI应用程序已打开:8080默认情况下coderunner:上的HTTP API:8080并打开MCP服务器:8081agent:gRPC工作程序打开:30031默认情况下redis::6379
注: client 和 coderunner 两者均默认为 :8080,因此它们不打算在不更改配置的情况下在同一主机上运行。
运行系统
完整的远程执行堆栈
要将MCP用于远程代码执行,请按以下顺序启动服务:
- 开始
redis - 启动一个或多个
agent工人 - 开始
coderunner - 开始
pyrunner - 可选择启动
client
1.开始 redis
docker pull redis
docker run -p 6379:6379 --name redis -d redis
2.开始 agent
在配置了Docker和gVisor的Linux机器上运行worker:
cd agent
go run .
重要环境变量:
WORKER_PORT违约::30031DOCKER_IMAGE_NAME违约:python:3.14-slimMIN_ACTIVE违约:2
3.开始 coderunner
集 REMOTE_HOSTS 因此,它可以到达一个或多个工人。该值是一个以分号分隔的列表,例如:
REMOTE_HOSTS=127.0.0.1:30031
然后运行:
make run-coderunner
或者:
cd coderunner
go build -o ../build/coderunner .
../build/coderunner
4.启动 pyrunner
点 pyrunner 在 coderunner:
export CODE_EXECUTION_HOST=http://localhost:8080
cd pyrunner
uv run uvicorn main:app
这暴露了:
http://localhost:8000/mcphttp://localhost:8000/mcp-no-code-execute
5.开始 client (可选)
仅当您需要内置的FastAPI代理层时,才启动聊天/编排服务:
cd client
uv run main.py
在中配置MCP端点 client/config.py 或者如果需要,可以使用环境变量。
快速启动变体
仅限MCP
当另一个MCP客户端将直接调用服务器时,请使用此选项:
- 开始
agent - 开始
coderunner - 开始
pyrunner
聊天堆栈
当你想要内置 /chat 端点:
- 开始
redis - 开始
agent - 开始
coderunner - 开始
pyrunner - 开始
client
生成文件目标
从项目根:
make run-pyrunner
make run-client
make build-coderunner
make run-coderunner
备注
- 开始
pyrunner只有在之后coderunner是可达的。 - 开始
coderunner至少一个之后agent可通过以下方式联系REMOTE_HOSTS. - 此根README有意限定在远程执行后端架构的范围内。
- 组件特定的设置细节也存在
pyrunner/README.md,coderunner/README.md,以及agent/README.md.
