MCP服务器模板

一个用于运行MCP(模型上下文协议)服务器的模板,支持认证、PostgreSQL集成和容器化。

  • by SIL0RAK
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 SIL0RAK/mcp-server-template

使用说明

MCP服务器模板

运行的最小模板 MCP(模型上下文协议)服务器 支持身份验证、PostgreSQL集成和容器化。使用 FastMCP.

🚀 特性

  • 🔑 基本认证 (通过API令牌)
  • 🗄 PostgreSQL数据库 整合
  • 🌐 HTTP服务器 用于MCP传输
  • 📦 容器化 使用Docker和Docker Compose
  • 🗄 迁移 用于数据库模式管理

🐳 容器入门

选项1:运行服务器+数据库(建议用于测试)

docker compose up

备注:您需要在系统中设置环境变量

选项2:仅运行服务器

docker build -t mcp-server .
docker run -p 8000:8000 mcp-server

备注:您需要在.env文件中设置环境变量。

🔨 地方发展

在本地运行项目需要python 3.11或更高版本。

uv sync -安装软件包。阅读更多 这里.

cd src -移动到项目根目录

python -m server -运行服务器(别忘了设置 .env 文件)

⚙️ 环境变量

服务器是使用环境变量配置的。

变量 必填 描述
API_TOKEN ❌ 用于基本身份验证的API令牌。如果提供,客户必须将其包含在请求中。
DATABASE_URL ✅ PostgreSQL连接字符串。格式: postgresql://user:password@localhost:5432/mydb

👉 在本地工作时,创建一个 .env 项目根目录中的文件(使用 .env.example 作为模板)。


🔌 连接到MCP客户端

  • 当地: http://localhost:8000
  • 远程: http://<your-server-domain>

认证

如果 API_TOKEN 如果已设置,请将其包含在请求标头中:

Authorization: Bearer ${API_TOKEN}

所需标题

Content-Type: application/json
Accept: application/json, text/event-stream

📐 提示示例

  1. get me record from table data where id is 3
  2. get me all records from table data
  3. get me all records from table data where name is "John Doe"

📡 运输支持

  • ✅ 目前支持: streamable-http
  • 🚧 可扩展以支持其他MCP传输

🖼 架构图

flowchart TD
    A[MCP Client] <-- streamable-http --> B[MCP Server]
    B <-- queries --> C[(PostgreSQL Database)]
    A -.  Call with instructions and headers .-> B:::auth
  • MCP客户端 使用HTTP与服务器通信(streamable-http).
  • MCP服务器 处理身份验证和查询。
  • PostgreSQL数据库 存储和检索持久数据。
  • 可选的 API代币 可用于安全通信。

🔄 序列图(请求流)

sequenceDiagram
    participant Client as MCP Client
    participant Server as MCP Server
    participant DB as PostgreSQL Database

    Client->>Server: HTTP Request (with headers & optional Bearer Token)
    Server->>Server: Validate API Token (if required)
    alt Token invalid
        Server-->>Client: 401 Unauthorized
    else Token valid / not required
        Server->>DB: Execute query
        DB-->>Server: Query result
        Server-->>Client: Response (JSON / Event Stream)
    end

相关文件