MCP服务器模板

一个通用的、生产就绪的FastMCP服务器模板,用于构建、运行和检查MCP服务器,支持通过MCPJam Inspector进行测试和检查。

  • by sandeep-13-dev
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 sandeep-13-dev/MCP-Server

使用说明

🧠 FastMCP通用服务器模板

构建、运行和检查您自己的MCP服务器

此存储库提供 通用、生产就绪的FastMCP服务器 您可以连接到 MCPJam检查员 --用于测试和检查模型上下文协议(MCP)服务器的开发工具。


目录

  1. 概述
  2. 项目结构
  3. 安装
  4. 服务器安装程序
  5. 运行服务器
  6. 使用MCPJam检查员进行测试
  7. Docker设置
  8. 输出示例
  9. 定制
  10. 环境变量
  11. 后续步骤

概述

此项目演示如何创建 FastMCP兼容的HTTP服务器 使用 快速API 和 FastMCP. 它定义了:

  • 工具:可调用功能(例如,汇总器、翻译器)
  • 资源:结构化数据源(例如服务器信息)
  • 提示词:LLM的指令模板

您可以使用以下工具轻松测试和检查此服务器 MCPJam检查员.


项目结构

fastmcp-server/
├── main.py               # MCP Server entry point
├── pyproject.toml        # uv project file
├── docker-compose.yml    # Docker Compose for local container setup
├── Dockerfile            # Lightweight image definition
├── .env                  # Environment configuration
└── README.md             # Technical documentation

安装

1.初始化项目

pip install uv
uv init .

2.添加所需的依赖项

uv add "fastapi>=0.121.0" "fastmcp>=2.13.0.2" "uvicorn>=0.29.0"

3.同步项目

uv sync

服务器安装程序

下面是 通用FastMCP服务器 模板:

"""
FastMCP Generic Server Template
===============================
A reusable template for creating FastMCP-compatible servers.

Author: Your Name
Version: 1.0.0
"""

from fastmcp import FastMCP
from fastmcp.prompts import Prompt
import uvicorn
import os
from datetime import datetime
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

# ============================================================
# MCP SERVER CONFIGURATION
# ============================================================

mcp = FastMCP(
    name="Example MCP Server",
    instructions="""
Welcome to the Example MCP Server!

This server exposes generic tools, resources, and prompts
to demonstrate the MCP protocol.
"""
)

# ============================================================
# TOOLS
# ============================================================

@mcp.tool()
def echo(input_text: str) -> dict:
    """Echoes the input text."""
    return {"result": f"You said: {input_text}"}

@mcp.tool()
def summarize(text: str) -> dict:
    """Returns a short summary of input text."""
    summary = text[:50] + "..." if len(text) > 50 else text
    return {"summary": summary, "original_length": len(text)}

# ============================================================
# RESOURCES
# ============================================================

@mcp.resource("server://info")
def get_server_info() -> dict:
    """Returns information about this MCP server."""
    return {
        "server_name": "Example MCP Server",
        "version": "1.0.0",
        "protocol": "MCP 2025-03-26",
        "transport": "Streamable HTTP",
        "available_tools": ["echo", "summarize"],
        "endpoint": f"http://{os.getenv('MCP_HOST', '127.0.0.1')}:{os.getenv('MCP_PORT', '7007')}/mcp"
    }

@mcp.resource("server://status")
def get_status() -> dict:
    """Provides runtime status."""
    return {
        "status": "active",
        "timestamp": datetime.now().isoformat()
    }

# ============================================================
# PROMPTS
# ============================================================

@mcp.prompt(name="default_prompt")
def default_prompt() -> str:
    """Provides guidance for AI models."""
    return (
        "You are connected to Example MCP Server. Use the tools "
        "'echo' and 'summarize' to process user text efficiently."
    )

# ============================================================
# SERVER STARTUP
# ============================================================

if __name__ == "__main__":
    host = os.getenv("MCP_HOST", "127.0.0.1")
    port = int(os.getenv("MCP_PORT", "7007"))
    path = os.getenv("MCP_PATH", "/mcp")

    print("=" * 60)
    print("🚀 FastMCP Server")
    print("=" * 60)
    print(f"Server Name: {mcp.name}")
    print(f"Transport: Streamable HTTP")
    print(f"Endpoint: http://{host}:{port}{path}")
    print(f"Inspector: MCPJam Inspector (see below)")
    print("=" * 60)

    mcp_app = mcp.http_app(path=path)
    app = FastAPI(lifespan=mcp_app.lifespan)
    app.add_middleware(
        CORSMiddleware,
        allow_origins=["*"],
        allow_credentials=True,
        allow_methods=["GET", "POST", "OPTIONS"],
        allow_headers=["*"],
        expose_headers=["mcp-session-id", "mcp-protocol-version"],
    )
    app.mount("", mcp_app)
    uvicorn.run(app, host=host, port=port, log_level="info")

使用MCPJam检查员进行测试

1.安装MCPJam检查器

npm install -g @mcpjam/inspector
# or
npx @mcpjam/inspector

2.启动服务器

uv run main.py

3.运行检查器

npx @mcpjam/inspector

然后输入:

http://127.0.0.1:7007/mcp

您将看到:

  • 工具: echo, summarize
  • 资源: server://info, server://status
  • 提示: default_prompt

Docker设置

Dockerfile

使用轻量级映像可加快构建速度并降低内存使用率。

# Dockerfile
FROM python:3.11-slim-bookworm

WORKDIR /app

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV UV_PROJECT_ENVIRONMENT=/app/.venv

COPY . /app

RUN pip install uv && uv sync

EXPOSE 7007

CMD ["uv", "run", "python", "main.py"]

docker-compose.yml

通过Docker Compose轻松运行MCP服务器。

version: "3.9"
name: Greet-MCP-Server

services:
  mcp-server:
    container_name: FastMCP-Server
    image: python:3.11-slim-bookworm
    working_dir: /app
    environment:
      - UV_PROJECT_ENVIRONMENT=/app/.venv
      - UV_LINK_MODE=copy
    env_file:
      - .env
    ports:
      - "${MCP_PORT}:${MCP_PORT}"
    volumes:
      - ./:/app
      - venv-data:/app/.venv
    command: >
      sh -c "pip install uv && uv run python main.py"

volumes:
  venv-data:

.env示例

MCP_HOST=0.0.0.0
MCP_PORT=7007
MCP_PATH=/mcp

使用Docker Compose运行

docker compose up --build

输出:

FastMCP-Server  | FastMCP Server
FastMCP-Server  | Endpoint: http://0.0.0.0:7007/mcp
FastMCP-Server  | Inspector: MCPJam Inspector

然后通过以下方式连接:

npx @mcpjam/inspector
# Endpoint: http://127.0.0.1:7007/mcp

输出示例

============================================================
 FastMCP Server
============================================================
Server Name: Example MCP Server
Transport: Streamable HTTP
Endpoint: http://127.0.0.1:7007/mcp
Inspector: MCPJam Inspector
============================================================

定制

特性 描述 示例
添加新工具 定义新 @mcp.tool() 功能 文本分析、翻译
添加资源 提供结构化数据源 系统信息、日志
添加提示 创建AI指令模板 对话角色
修改传输 如果需要,切换到WebSocket mcp.ws_app()

环境变量

创建一个 .env 文件(可选):

MCP_HOST=0.0.0.0
MCP_PORT=7007
MCP_PATH=/mcp

后续步骤

您可以通过以下方式扩展此项目:

  • 数据库或矢量搜索工具
  • Ollama/LangChain集成
  • 代理编排(n8n/FastMCP框架)
  • 通过MCPJam检查器进行监控