这是一个模板项目,供那些想要构建自己的MCP服务器的人使用。我设计它是为了简单易懂且易于适应——代码非常直接,并附有MCP文档,以便您快速上手。
简而言之——这是一种编写AI插件的方式
模型上下文协议(MCP)是一种标准方法,用于LLMs与外部工具和数据进行交互。简而言之:
这个PostgreSQL MCP服务器实现了以下功能:
工具
execute_query - 对您的数据库运行SQL查询test_connection - 验证数据库连接是否正常工作资源
db://tables - 模式中的所有表列表db://tables/{table_name} - 特定表的模式信息db://schema - 数据库中所有表的完整模式信息提示
创建虚拟环境并安装依赖项:
# 使用uv创建虚拟环境
uv venv
# 激活虚拟环境
source .venv/bin/activate # 在Windows上:.venv\Scripts\activate
# 安装依赖项
uv pip install -r requirements.txt
使用MCP Inspector运行服务器:
# 替换为您实际的数据库凭据
npx @modelcontextprotocol/inspector uv --directory . run postgres -e DSN=postgresql://username:password@hostname:port/database -e SCHEMA=public
注意:如果您第一次运行npx,系统会提示您批准安装。输入'y'继续。
运行此命令后,您将在浏览器中看到MCP Inspector界面。您应该看到类似的消息:
MCP Inspector正在http://localhost:5173运行
如果浏览器没有自动打开,请将URL复制粘贴到您的浏览器中。您应该看到类似这样的界面:

使用Inspector:
查阅官方文档
官方服务器开发者指南:https://modelcontextprotocol.io/quickstart/server
更多关于Inspector的信息:https://modelcontextprotocol.io/docs/tools/inspector
您可以通过创建一个MCP配置文件来配置您的AI助手的MCP服务器:
{
"mcpServers": {
"postgres": {
"command": "/path/to/uv",
"args": [
"--directory",
"/path/to/simple-psql-mcp",
"run",
"postgres"
],
"env": {
"DSN": "postgresql://username:password@localhost:5432/my-db",
"SCHEMA": "public"
}
}
}
}
或者,您可以使用包含的脚本生成此配置文件:
# 将脚本设为可执行
chmod +x generate_mcp_config.sh
# 运行配置生成器
./generate_mcp_config.sh
当提示时,输入您的PostgreSQL DSN和模式名称。
现在您可以使用自然语言向LLM询问有关您的数据的问题:
对于测试,Claude Desktop原生支持MCP,并且开箱即用支持所有功能(工具、资源和提示)。
如果您还没有准备好数据库或遇到连接问题,可以使用包含的示例数据库:
# 将脚本设为可执行
chmod +x example-db/create-db.sh
# 运行数据库设置脚本
./example-db/create-db.sh
此脚本创建一个Docker容器,其中包含预填充了样本用户和地址表的PostgreSQL数据库。运行后,您可以使用以下方式连接:
npx @modelcontextprotocol/inspector uv --directory . run postgres -e DSN=postgresql://postgres:postgres@localhost:5432/user_database -e SCHEMA=public
要扩展此项目并添加您自己的MCP服务器:
/src目录下创建一个新的目录(例如,/src/my-new-mcp)pyproject.toml中添加您的新MCP:[project.scripts]
postgres = "src.postgres:main"
my-new-mcp = "src.my-new-mcp:main"
然后,您可以使用以下命令运行新的MCP:
npx @modelcontextprotocol/inspector uv --directory . run my-new-mcp
这是一个实验项目,旨在帮助开发人员创建自己的MCP服务器。我已经做了最少的工作,确保它不会立即崩溃,但请注意——使用此工具很容易导致SQL注入。服务器会检查查询是否以SELECT开头,但除此之外没有任何保证。简而言之——除非您是创始人并且没有付费客户,否则不要在生产环境中运行。
MIT