支持自主创建MCP啦!一文带你玩转魔搭MCP广场,从idea到部署自己的MCP到魔搭
如何开发自己的一个MCP server
01.前言
如何开发自己的一个MCP server?
如何贡献自己的MCP到魔搭?
这篇文章教你玩转魔搭MCP广场
继魔搭社区上线了MCP广场后,非常多开发者找到我们,希望分享自己的MCP 服务供大家使用。就在今天,魔搭MCP广场开放了自主创建MCP的入口,支持开发者自己上传MCP server。
在MCP广场创建自己的MCP有两种状态,可托管部署和仅分发展示。如您的MCP不需要依赖本地环境,可以选择用“可托管部署”的方式创建,这将使您拥有一个用魔搭免费资源托管的云端MCP服务器。
MCP广场地址:modelscope.cn/mcp
下面小编用一个案例带大家实现自己的MCP,并将它部署到魔搭 MCP 广场。
02.如何使用 FastMCP 框架构建您自己的 MCP 服务器
FastMCP简介
FastMCP 是构建 MCP 服务器和客户端的标准框架,使用简洁的 Python 代码即可创建工具、公开资源、定义提示词等:
from fastmcp import FastMCP
mcp = FastMCP("Demo 🚀")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
if __name__ == "__main__":
mcp.run()
FastMCP 实现了所有复杂的协议细节和服务器管理,开发者可以专注于MCP服务本身的工具实现。FastMCP 提供高级接口,且是python风格的,在大多数情况下,您只需装饰一个函数即可将您的项目封装为MCP Server。
准备环境,并初始化项目目录
Python版本的MCP servers开发过程用uv管理是最连贯的,本文全程以uv命令演示。
# 1、安装uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 初始化项目目录
uv init mcp-calculator && cd mcp-calculator
# 创建隔离环境并激活
uv venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 安装核心依赖
uv add "mcp[cli]"
另外,您需要一个支持使用 MCP 协议调用工具的 LLM 应用程序,即“MCP 客户端”,例如 Cherry Studio、Claude Desktop、Cursor 或 Cline。
开发您的MCP server
本本文以一个简单的计算器实现,演示如何用FastMCP开发一个MCP服务。
在上一步创建的项目中,创建server.py
文件,放在src/mcp_calculator_kel目录下,server.py
里的内容如下:
from fastmcp import FastMCP
import math
mcp = FastMCP("CalculatorService")
# 算术工具组
@mcp.tool()
def add(a: float, b: float) -> float:
"""执行浮点数加法运算"""
return a + b
@mcp.tool()
def subtract(a: float, b: float) -> float:
"""执行浮点数减法运算"""
return a - b
@mcp.tool()
def multiply(a: float, b: float) -> float:
"""执行浮点数乘法运算"""
return a * b
@mcp.tool()
def divide(a: float, b: float) -> float:
"""执行浮点数除法运算
Args:
b: 除数(必须非零)
"""
if b == 0:
raise ValueError("除数不能为零")
return a / b
# 高级数学工具
@mcp.tool()
def power(base: float, exponent: float) -> float:
"""计算幂运算"""
return base ** exponent
@mcp.tool()
def sqrt(number: float) -> float:
"""计算平方根"""
return math.sqrt(number)
@mcp.tool()
def factorial(n: int) -> int:
"""计算整数阶乘"""
return math.factorial(n)
if __name__ == "__main__":
mcp.run(transport="stdio")
调试您的MCP server
调试服务最快的方式是使用 MCP Inspector,用开发模式启动您的服务,非常方便debug,极力推荐。
# 使用MCP检查器调试
mcp dev server.py
命令运行后,访问 http://localhost:5173 可进行交互测试
客户端测试您的MCP server(可选)
一旦您的服务调试通过后,可用python命令在本地客户端中使用了,例如在Cherry Studio的MCP 服务器页面配置您的MCP服务器:
回到对话界面,打开自己的MCP服务器,即可进行测试
03.打包发布Python库到PyPI
为了后续可以在魔搭MCP广场托管部署您的服务,您需要将您的本地脚本打包,并发布到PyPI官网。如果您的服务需要依赖本地环境,是一个local的MCP Server,则不需要上传到PyPI,可直接去魔搭MCP广场创建MCP。
如何打包发布到PyPI?到目前为止,我们已经有了一个可以运行的MCP server脚本server.py
。
代码开发
打包本地脚本后,可以将这个mcp server作为模块来运行,而不是直接通过脚本运行。
打包本地脚本需要新建两个文件__init__.py 和 __main__.py,还是放在src/mcp_calculator_kel目录下。
新建__init__.py:需要有一个main()函数来运行mcp
import argparse
from .server import mcp
def main():
"""MCP Wiki kel: Read Wikipedia articles and convert them to Markdown."""
parser = argparse.ArgumentParser(
description="Gives you the ability to read Wikipedia articles and convert them to Markdown."
)
parser.parse_args()
mcp.run()
if __name__ == "__main__":
main()
新建__main__.py:脚本调用main()函数,在python包运行的时候作为入口点
from mcp_calculator_kel import main
main()
本地测试
# 以模块运行
uv run -m mcp_calculator_kel
或者也可以在MCP 客户端比如Cherry Studio上配置config测试
"mcp_calculator_kel": {
"isActive": true,
"name": "calculator",
"type": "stdio",
"command": "uv",
"args": [
"--directory",
"/Users/xxx/mcp_calculator_kel/src", # 替换为自己的路径
"run",
"-m",
"mcp_calculator_kel"
]
}
作为一个包发布到PyPI
1、您需要确保在您的项目根目录,存在一个完整的pyproject.toml文件
该.toml文件在前面的步骤中应该已经自动生成,内容包括:
- 包的元信息:名字、版本、描述、作者
- 依赖项
- 构建系统配置
- MCP入口
小编的pyproject.toml文件如下:(可以复制后改成自己的版本)
[project]
name = "mcp-calculator"
version = "0.1.2"
description = "a mcp calculator"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"build>=1.2.2.post1",
"mcp[cli]>=1.9.2",
"twine>=6.1.0",
]
[project.scripts]
mcp_calculator_kel = "mcp_calculator_kel:main"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
2、为您的Python包创建一个README.md
3、构建您Python包
cd mcp_calculator_kel
# 安装构建工具
uv add build twine
# 构建您的Python包
uv run -m build
构建完成后,您将在dist/目录下看见.whl和.tar.gz的两个文件
4、准备PyPI账户,复制token
PyPI官网:
5、上传您的Python包
uv run -m twine upload dist/***.whl
这一步会提示您输入PyPI的token
6、通过inspector快速测试
npx @modelcontextprotocol/inspector uvx mcp_calculator_kel
提示:如果测试不通过,或者后续有更新,需要在pyproject.toml中更新版本号,重复以上3-5步
7、MCP客户端测试
一旦发布完成, 用户就可以通过uvx安装和使用您的 MCP server。uvx会创建一个临时环境,安装依赖并执行这个包,非常的简洁优雅。
{
"mcpServers": {
"mcp_calculator_kel": {
"command": "uvx",
"args": [
"mcp-calculator"
]
}
}
}
托管部署您的MCP服务到魔搭MCP广场
在MCP广场创建自己的MCP,选择“自定义创建”。魔搭也支持从GitHub仓库快速创建,如果您已经将自己的代码托管到GitHub仓库,可以用默认方式快速创建。
接下来进入魔搭MCP广场创建MCP
MCP广场地址:modelscope.cn/mcp
或者直接点击创建链接:https://modelscope.cn/mcp/servers/create?template=customize
创建第一步需要填写中英文名称、来源地址等基础信息,托管类型选择“可托管部署”。
创建第二步填写配置,填写您的MCP服务配置config和环境变量。
创建第三步写一个清晰完整的README。
点击创建之后,后台会自动根据这些信息进行自动托管部署。
Tips:
如果您创建服务的时候选择用“可托管部署”的方式创建,但是您的MCP服务不满足托管部署的条件,或由于服务配置错误的问题导致自动托管部署的流程失败,您的服务会退化至“仅可本地使用”的方式托管到魔搭。
如果您的服务需要依赖本地环境,是一个local的MCP Server,去魔搭MCP广场创建MCP的时候,托管类型选择“仅本地可用”即可。
以下是小编创建的Hosted MCP示例
https://modelscope.cn/mcp/servers/kelseye/mcp_calculator_kel_test
点击链接阅读全文
https://modelscope.cn/mcp/servers/kelseye/mcp_calculator_kel_test
更多推荐
所有评论(0)