该项目提供了一个Docker容器镜像,其中包含了几个可能对各种项目有用的MCP服务器。这是项目的早期阶段,并非所有的服务器都经过了彻底测试,请谨慎使用。 🔍 目前提供了以下功能...
最简单的方法是拉取并运行已发布的镜像。导航到您想要工作的项目的目录,并运行以下Docker命令。
docker run -it --rm \
-p 6274:6274 -p 6277:6277 -p 9099:9099 -p 9098:9098 -p 9097:9097 -p 9096:9096 \
-v ./:/project -v ./.memory:/memory \
-e MEMORY_FILE_PATH=./.memory \
--add-host=host.docker.internal:host-gateway \
--env-file ./.env \
--name mcp-servers ghcr.io/cmiles74/docker-mcp-servers:latest
我们将映射提供给Cursor使用的MCP服务器端口以及MCP服务器检查工具使用的两个端口。我们还将映射我们的项目,并设置LLM存储其“记忆”的路径(一个数据的JSON文件)。我们从项目的.env文件中读取数据库连接字符串,然后启动包含MCP服务器的容器。
您可以在scripts目录中找到此脚本以及其他用于Podman的脚本。
您也可以检出项目并在本地构建镜像,它应该可以正常运行。
./build.sh
这将在您的本地仓库中创建名为docker-mcp-server:latest的镜像。
我们提供了一个启动镜像的Shell脚本start-mcp-servers。您可以从任何地方调用该脚本,如果您将其添加到PATH中会更方便,但不是必须的。
cd ~/path/to/your-project
~/source/repos/docker-mcp-servers/start-mcp-servers
该脚本将当前目录映射到容器中的/project目录。对于使用STDIO协议的工具而言,您的项目将在容器的/project目录下。
最后,启动脚本将容器命名为“mcp-servers”。这使得您可以轻松地调用正在运行的容器中的命令。要获取正在运行的容器中的shell,您可以执行...
docker exec -it mcp-servers bash
除了MCP服务器外,我们还提供了一个运行在6274端口上的检查工具。您可以使用此工具查看MCP服务器提供的工具。一旦容器启动,您可以通过访问以下地址与检查器交互...
我们还提供了一个代理,它可以包装使用标准IO的工具,以便它们可以从诸如Cursor之类的工具中更容易地使用。
当您从Cursor应用程序菜单的“设置”子菜单中选择“Cursor设置”时,您将看到所有Cursor设置。从左侧导航菜单中选择“MCP”,所有已配置的MCP服务器将列在主面板中。当您点击右上角的“+ 添加新的全局MCP服务器”按钮时,MCP配置文件将打开;它只是一个大的JSON块。
您可以替换它或向现有配置添加以下服务器。保存文件后,这些工具将在Cursor设置的“MCP”部分中可用,您需要访问该设置页面并启用每个工具。
{
"mcpServers": {
"git": {
"type": "sse",
"url": "http://localhost:9099/sse"
},
"postgres": {
"type": "sse",
"url": "http://localhost:9098/sse"
},
"ddg-search": {
"type": "sse",
"url": "http://localhost:9097/sse"
},
"knowledge-graph": {
"type": "sse",
"url": "http://localhost:9096/sse"
}
}
}
您还可以设置一组将与每次请求一起提供的规则。这些规则可用于引导LLM,您可以添加一些关于这些MCP工具的信息,这样就不需要在每次提示中包含它们。我们提供了一个示例规则集以帮助您开始。
以下是使用这些工具时需要注意的一些事项。 😄
Git MCP服务器配置为从您启动容器的目录(即您运行start-mcp-servers时的工作目录)作为项目目录。然后将其映射到容器中的/project,而LLM并不总是能自己识别这一点。我发现我需要从一个提示开始,让LLM知道加载到Cursor中的项目路径是"/project",比如...
您已经配置了一个名为"git"的MCP服务器,它可以用来操作这个项目。此服务器配置为项目路径为"/project"。
这工作得还不错,但我怀疑有更好的方法来映射项目。如果您想到了更平滑的方法,请提交PR!
当您在项目目录中运行start-mcp-servers时,该目录根部的.env文件将被读取。PostgreSQL MCP服务器正在寻找一个名为MCP_DATABASE_URI的环境变量中的连接字符串,这就是它用来连接数据库的方式。由于我们在Docker容器中运行此工具,数据库主机名需要指向您的本地机器,“host.docker.internal”。
MCP_DATABASE_URI=postgresql://DB_ACCOUNT:DB_PASSWORD@host.docker.internal:5432/DB_NAME
env-sample文件夹中有示例。您需要为项目创建一个.env文件(如果还没有的话),或者将此新变量添加到文件底部。然后您可以启动MCP服务器,它将拾取该连接字符串并连接到您的数据库。
您可能需要提醒LLM数据库工具的存在,我发现从类似下面的提示开始效果很好。
该项目有很多表,您可以使用"postgres" MCP工具查看它们。大多数表都在"super_interesting"模式中。