PostgreSQL MCP Server运行失败,工具调用报错排查求助
PostgreSQL MCP Server运行失败,工具调用报错排查求助
各位好,我最近在搭建PostgreSQL MCP Server的时候遇到了问题——启动服务器后,不管是在Cursor还是Claude Desktop里调用相关工具都会报错。下面是我的相关代码、配置和错误日志,麻烦大家帮我看看问题出在哪?
一、MCP Server核心代码
from contextlib import asynccontextmanager from collections.abc import AsyncIterator from dataclasses import dataclass import asyncpg from mcp.server.fastmcp import FastMCP, Context # Async PostgreSQL wrapper using asyncpg class Database: def __init__(self, pool: asyncpg.Pool): self.pool = pool @classmethod async def connect(cls) -> "Database": pool = await asyncpg.create_pool( user="postgres", password="rohan", database="company", host="localhost", port=5432, ) return cls(pool) async def disconnect(self): await self.pool.close() async def query(self, query: str) -> list: async with self.pool.acquire() as conn: try: return await conn.fetch(query) except Exception as e: print(f"Query error: {e}") return [] async def fetch_schema(self) -> list: query = """ SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' """ return await self.query(query) @dataclass class AppContext: db: Database @asynccontextmanager async def app_lifespan(server: FastMCP) -> AsyncIterator[AppContext]: db = await Database.connect() try: yield AppContext(db=db) finally: await db.disconnect() mcp = FastMCP("PostgresMCPServer", lifespan=app_lifespan) @mcp.tool("fetch_schema") async def fetch_schema(ctx: Context) -> str: db = ctx.request_context.lifespan_context.db schema = await db.fetch_schema() return str([record["table_name"] for record in schema]) @mcp.tool("fetch_all_tables") async def fetch_all_tables(ctx: Context) -> str: db = ctx.request_context.lifespan_context.db query = "SELECT * FROM information_schema.tables WHERE table_schema='public'" tables = await db.query(query) return str(tables) @mcp.tool("run_query") async def run_query(ctx: Context, query: str) -> str: db = ctx.request_context.lifespan_context.db result = await db.query(query) return str(result) if __name__ == "__main__": # Initialize and run the server mcp.run()
二、已安装的依赖
我已经通过包管理器安装了以下依赖,并且它们都在pyproject.toml中正确声明:
- mcp
- httpx
- mcp[cli]
- asyncpg
三、工具启动配置
这是我在客户端中配置的MCP工具启动参数:
"PostgresMCPServer": { "command": "uv", "args": [ "run", "--with", "mcp[cli]", "mcp", "run", "C:/mylocalpath/server.py" ] }
四、Claude端错误日志
启动服务器后,Claude返回的部分错误日志如下:
2025-07-21T12:05:43.760Z [PostgresMCPServer] [info] Initializing server... { metadata: undefined } 2025-07-21T12:05:43.801Z [PostgresMCPServer] [info] Using MCP server command: C:\Users\Rohan\AppData\Local\com.Langflow\uv\uv.exe with args and path: { metadata: { args: [ 'run', '--with', 'mcp[cli]', 'mcp', 'run', 'C:/Users/Rohan/Desktop/MCP_newProjects/postgress-mcp/server.py', [length]: 6 ], paths: [ 'C:\\Program Files\\nodejs', 'C:\\Python312\\Scripts\\', 'C:\\Python312\\', 'C:\\WINDOWS\\system32', 'C:\\WINDOWS', 'C:\\WINDOWS\\System32\\Wbem', 'C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\', 'C:\\WINDOWS\\System32\\OpenSSH\\', 'C:\\Program Files\\nodejs\\', 'C:\\ProgramData\\chocolatey\\bin', 'C:\\Terraform', 'C:\\Program Files\\Amazon\\AWSCLIV2\\', 'C:\\Program Files\\PuTTY\\', 'C:\\Program Files\\Git\\cmd', 'C:\\ProgramData\\miniconda3\\Library\\bin\\conda.bat', 'C:\\ProgramData\\miniconda3\\Scripts\\conda.exe', 'C:\\ProgramData\\miniconda3\\condabin\\conda.bat', 'C:\\ProgramData\\miniconda3', 'C:\\ProgramData\\miniconda3\\Library\\bin', 'C:\\ProgramData\\miniconda3\\Scripts', '', 'c:\\Users\\Rohan\\AppData\\Local\\Programs\\cursor\\resources\\app\\bin', 'c:\\Users\\Rohan\\AppData\\Local\\Programs\\cursor\\resources\\app\\bin', 'C:\\Users\\Rohan\\AppData\\Local\\com.Langflow\\uv', 'C:\\Users\\Rohan\\.local\\bin', 'C:\\Users\\Rohan\\AppData\\Local\\Microsoft\\WindowsApps', 'C:\\Users\\Rohan\\AppData\\Roaming\\npm', 'C:\\Users\\Rohan\\AppData\\Local\\Programs\\Microsoft VS Code\\bin', 'C:\\Terraform', 'C:\\ProgramData\\miniconda3\\Library\\bin\\conda.bat', 'C:\\ProgramData\\miniconda3\\Scripts\\conda.exe', 'C:\\ProgramData\\miniconda3\\condabin\\conda.bat', 'C:\\ProgramData\\miniconda3', 'C:\\ProgramData\\miniconda3\\Library\\bin', 'C:\\ProgramData\\miniconda3\\Scripts', 'C:\\Users\\Rohan\\AppData\\Local\\Programs\\Ollama', 'C:\\Users\\Rohan\\AppData\\Local\\Programs\\cursor\\resources\\app\\bin', [length]: 37 ] } } %o 2025-07-21T12:05:43.812Z [PostgresMCPServer] [info] Server started and connected successfully { metadata: undefined } 2025-07-21T12:05:43.861Z [PostgresMCPServer] [info] Message from client: {"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"claude-ai","version":"0.1
目前我已经确认本地PostgreSQL服务是正常运行的,依赖也没有缺失,但工具调用就是失败,希望有经验的朋友能帮我分析一下可能的问题点,比如协议版本不兼容?或者启动命令有问题?
内容来源于stack exchange
相关产品推荐
相关产品推荐

