如何创建MCP

创建属于自己的 MCP (Model Context Protocol) Server 主要有两种主流途径:本地开发部署和云端托管部署。你可以根据自身的技术储备和业务需求选择合适的方案。

方案一:本地开发部署(以 Python 为例)

这种方式适合个人开发者或希望在本地进行开发调试的场景。

1. 准备运行环境

确保你的电脑已安装 Python 环境,且版本要求 >=3.10

2. 安装依赖包

在终端中运行以下命令安装 MCP 核心库及你需要的第三方库(例如连接数据库的 pymysql):

python 复制代码
python -m pip install mcp pymysql

(注:如果 mcp 包安装遇到问题,也可以尝试使用 fastmcp 替代)

3. 编写 MCP Server 代码

创建一个 Python 文件(例如 server.py),导入 FastMCP 并使用装饰器定义你的自定义工具。例如,定义一个查询数据库表结构的工具:

python 复制代码
import os
import pymysql
from pymysql.cursors import DictCursor
from mcp.server.fastmcp import FastMCP

# 初始化 MCP 服务
mcp = FastMCP("MySQL MCP Server")

# 1. 获取数据库连接配置(优先从环境变量读取)
def get_db_config():
    return {
        "host": os.getenv("MYSQL_HOST", "localhost"),
        "port": int(os.getenv("MYSQL_PORT", "3306")),
        "user": os.getenv("MYSQL_USER", "root"),
        "password": os.getenv("MYSQL_PASSWORD", ""),
        "database": os.getenv("MYSQL_DATABASE", ""),
        "charset": os.getenv("MYSQL_CHARSET", "utf8mb4"),
        "cursorclass": DictCursor,
    }

# 2. 获取数据库连接
def get_connection():
    return pymysql.connect(**get_db_config())

# 3. 工具:列出当前数据库中的所有表
@mcp.tool()
def list_tables() -> str:
    """列出当前数据库中的所有表名"""
    conn = get_connection()
    try:
        with conn.cursor() as cursor:
            cursor.execute("SHOW TABLES")
            rows = cursor.fetchall()
            if not rows:
                return "当前数据库中没有表。"
            table_key = list(rows[0].keys())[0]
            tables = [row[table_key] for row in rows]
            return "数据库中的表:\n" + "\n".join(f"  - {t}" for t in tables)
    finally:
        conn.close()

# 4. 工具:查询指定表的结构信息
@mcp.tool()
def query_table_structure(table_name: str) -> str:
    """查询指定表的结构信息,包括字段名、类型、是否为空、键、默认值、额外信息等。
    Args:
        table_name: 要查询的表名
    """
    conn = get_connection()
    try:
        with conn.cursor() as cursor:
            # 查询表字段信息
            cursor.execute(f"DESCRIBE `{table_name}`")
            columns = cursor.fetchall()
            
            # 查询建表语句
            cursor.execute(f"SHOW CREATE TABLE `{table_name}`")
            create_info = cursor.fetchone()
            create_sql = list(create_info.values())[1] if create_info else ""
            
            # 格式化输出
            lines = [f"表 `{table_name}` 的结构:\n"]
            lines.append(f"{'字段名':<20} {'类型':<20} {'允许为空':<10} {'键':<10} {'默认值':<15} {'额外':<20}")
            lines.append("-" * 95)
            
            for col in columns:
                lines.append(
                    f"{col['Field']:<20} {col['Type']:<20} {col['Null']:<10} "
                    f"{col['Key']:<10} {str(col['Default']):<15} {col['Extra']:<20}"
                )
            lines.append(f"\n建表语句:\n{create_sql}")
            return "\n".join(lines)
    finally:
        conn.close()

# 5. 工具:执行 SELECT 查询
@mcp.tool()
def run_sql(query: str, limit: int = 1000) -> list:
    """执行 SELECT SQL 查询并返回结果。
    Args:
        query: 要执行的 SQL 语句
        limit: 返回的最大行数,默认 1000
    """
    if not query.strip().lower().startswith("select"):
        return {"error": "出于安全考虑,仅支持 SELECT 查询语句。"}
        
    conn = get_connection()
    try:
        with conn.cursor() as cursor:
            cursor.execute(f"{query} LIMIT {limit}")
            return cursor.fetchall()
    except Exception as e:
        return {"error": str(e)}
    finally:
        conn.close()

# 启动 MCP 服务
if __name__ == "__main__":
    mcp.run(transport="stdio")

4. 配置 MCP 客户端

本地开发的 MCP 通常使用 stdio 模式,不能直接在终端运行,需要配置到支持 MCP 的客户端(如 Trae、Claude Desktop)中。在客户端的配置文件(如 mcp.json)中添加:

复制代码
1{
2  "mcpServers": {
3    "my-custom-mcp": {
4      "command": "你的python路径/python.exe",
5      "args": ["你的项目路径/server.py"],
6      "env": {
7        "MYSQL_HOST": "localhost",
8        "MYSQL_PORT": "3306"
9      }
10    }
11  }
12}

效果图:

方案二:云端托管部署(以腾讯云轻量服务器为例)

如果你希望 MCP Server 能够 7×24 小时在线,或者不想在本地配置复杂的运行环境,可以使用云服务商提供的一键部署方案。

1. 选择镜像并创建服务器

在腾讯云轻量应用服务器控制台新建服务器时,直接选择 MCP Server 镜像,或者对已有服务器重装系统选择该镜像。

2. 添加并配置 MCP 服务

服务器启动后,在控制台找到"MCP Server管理"面板。你可以选择官方预设的模板(如高德地图),或者点击"添加自定义MCP服务器"。

3. 获取连接地址

配置完成(如填入相关的 API Key)后,云端会自动帮你完成环境和服务的创建。复制生成的连接地址(URL),然后在你的 AI 客户端(如 Cherry Studio、Trae 等)中添加 MCP 服务器,类型选择 SSE 并粘贴该 URL 即可使用。

相关推荐
天空之城--9 小时前
MT管理器Android逆向工程完全指南:从入门到实战
android
Anhty10 小时前
2026九月最新变声器测评:iOS安卓双端适配,低延迟运行更稳定
android·人工智能·功能测试·ios·智能手机
渡我白衣12 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
Android-Flutter13 小时前
flutter GetX 详解
android·flutter
MyFreeIT15 小时前
Android Manual
android
hai_android16 小时前
AIDL 实现 IPC 进程间通信
android·android studio
AFinalStone17 小时前
Android 7系统无障碍服务(五)AccessibilityNodeInfo 的构建与查询
android·无障碍服务
今天要早睡_18 小时前
C++ 核心语法速过:命名空间、引用、函数重载与 nullptr 深度解析
android·java·c++
啦啦啦~~~22218 小时前
PC端+安卓端阅读器推荐!开源本地小说阅读器软件,
android·论文阅读·windows·开源软件·福昕阅读器
笑梦无境19 小时前
mysql的安装及配置(3)
数据库·mysql·adb