如何创建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 即可使用。

相关推荐
Kapaseker2 小时前
扶我起来,Compose Styles API 进阶
android·kotlin
亘元有量-流量变现2 小时前
内外联动精细化运营:解锁安卓APP推广降本增效新路径
android·用户运营·aso优化·亘元有量·方糖试玩
nVisual2 小时前
nVisual:AI驱动的智能排障,平均响应时间缩短40%
android·人工智能·缓存
阿pin2 小时前
Android随笔-神经系统Handler
android·java·开发语言·handler
机智的张尼玛16 小时前
我基于 Kotlin Multiplatform 实现了一套跨平台的弱网离线同步引擎
android·开源·kotlin
安卓修改大师19 小时前
安卓修改大师反编译引擎Apktool深度解析:版本选择、参数说明与实战技巧
android
error:(19 小时前
【系统与实战双精通】VS Code 调试 ROS2 Python 节点与 Launch 系统指南
android·java·python
黄林晴21 小时前
Kuikly 是什么?和KMP有什么关系?
android·前端
帅次1 天前
Android 高级工程师面试:Kotlin 语法基础 近1年高频追问 22 题
android·面试·kotlin·扩展函数·空安全