You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 03:08:28