创建属于自己的 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 即可使用。