关于 MCP Servers
MCP Servers 是一个打包多个 MCP 服务的 Docker 镜像,面向需要为项目接入 Git、PostgreSQL、搜索和跨会话记忆工具的开发者。它还包含检查器,并提供 Docker 与 Podman 启动脚本。
主要功能
- 01Docker 镜像集成多个 MCP 服务
- 02提供 Git 仓库及历史访问
- 03连接 PostgreSQL 数据库
- 04提供互联网搜索与会话记忆
- 05内置服务检查器和 STDIO 代理
适用场景
- 01在项目目录中启动 Git 工具
- 02让 Agent 查询项目 PostgreSQL 数据
- 03使用互联网搜索补充信息
- 04在会话间保存 JSON 记忆
MCP 相关
容器提供 Git、PostgreSQL、互联网搜索和记忆等 MCP 服务,并带有检查器及 STDIO 工具代理。可将服务配置到 Cursor 等 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 服务
本项目提供一个 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 服务检查工具使用的两个端口。我们会将项目映射进容器,并设置大模型存储“记忆”的路径(一个包含数据的 JSON 文件)。我们会读取项目的 .env 文件以获取数据库连接字符串,然后启动包含 MCP 服务的容器。
你可以在 scripts directory 中找到此脚本以及另一个用于 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 服务提供了哪些工具。容器启动后,可以通过以下地址访问检查工具……
我们还提供了一个代理,用于封装使用标准输入输出的工具,让它们更容易与 Cursor 等工具配合使用。
配置 Cursor
在 Cursor 应用菜单的“Settings”子菜单中选择“Cursor Settings”后,你会看到所有 Cursor 设置。在左侧导航菜单中选择“MCP”,主面板将列出所有已配置的 MCP 服务。点击右上角的“+ Add new global MCP Server”按钮后,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"
}
}
}
你还可以设置一组“规则”,让大模型在每次请求时都能收到这些规则。这些规则可用于引导大模型;你可以添加有关这些 MCP 工具的信息,这样就不必在每个提示词中都重复说明。我们附带了一组示例规则,帮助你快速上手。
工具说明
使用这些工具时,请留意以下事项。😉
Git
Git MCP 服务的配置方式是:启动容器时所在的目录(运行 start-mcp-servers 时的工作目录)就是项目目录。该目录会映射到容器中的 /project,而大模型并不总能自行发现这一点。我发现必须先通过提示词告知它,在 Cursor 中加载的项目对于 Git 工具来说是“/project”,类似这样……
你配置了一个名为“git”的 MCP 服务,可以用它来操作此项目。该服务的配置方式是:此项目的路径为“/project”。
这样用起来还不错,但我怀疑还可以做得更好。如果你想到更顺畅的项目映射方式,请提交一个 PR!
PostgreSQL
在项目目录中运行 start-mcp-servers 时,会读取该目录根目录下的 .env 文件。PostgreSQL MCP 服务会查找名为 MCP_DATABASE_URI 的环境变量中的连接字符串,并使用它连接数据库。由于我们在 Docker 容器中运行该工具,数据库主机名需要指向本地计算机:“host.docker.internal”。
MCP_DATABASE_URI=postgresql://DB_ACCOUNT:[email protected]:5432/DB_NAME
env-sample 文件夹中有一个示例。如果项目还没有 .env 文件,你需要为项目创建一个,或者将这个新变量添加到文件末尾。然后就可以启动 MCP 服务,它会获取该连接字符串并连接到数据库。
你可能需要提醒大模型,该工具可用于操作数据库。我发现,以类似下面这段内容开头的提示词效果不错。
这个项目中有很多表,你可以使用“postgres” MCP 工具查看它们。我们的大多数表都在“super_interesting”架构中。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。