返回市场
MCP锻造服务器

MCP锻造服务器

作者:KennyVaneetvelde12 星标更新:2025-11-22

项目介绍

<div align="center"> <img src="docs/images/banner.png" alt="MCP Forge Banner" width="100%" />

🔨 MCP Forge

用于模型上下文协议服务器的终极构建工具

PyPI 版本 Python 版本 下载量 许可证 Discord

几秒钟内生成生产就绪的 MCP 服务器 <br> 快速 • 现代 • 功能齐全

快速开始特性文档示例社区


</div>

🎯 什么是 MCP Forge?

MCP Forge 是一个强大的构建 CLI 工具,它生成具有内置最佳实践的全功能模型上下文协议 (MCP) 服务器。停止编写样板代码,开始构建令人惊叹的人工智能集成!

# 安装
pip install mcp-forge

# 创建一个服务器
mcp-forge new my-awesome-server

# 就这样!🎉

您的服务器已准备好使用工具资源提示身份验证激发采样等!

✨ 特性

<div align="center"> <table> <tr> <td width="50%" valign="top">

🚀 核心特性

  • 多种传输方式 <br>开箱即支持 stdioHTTPSSE(服务器发送事件)。
  • FastMCP 2.0 <br>基于官方高性能 Python MCP 框架构建。
  • 干净架构 <br>服务层、接口和依赖注入以实现可扩展代码。
  • 类型安全 <br>整个代码库中都有完整的 Pydantic 验证和类型提示。
</td> <td width="50%" valign="top">

🔥 高级功能

  • OAuth 2.1 身份验证 <br>通过完整的 OAuth 2.1 支持来保护您的服务器(可选)。
  • 智能功能 <br>包括激发(交互式输入)、采样(人工智能协作)和根目录
  • 开发者体验 <br>附带演示客户端MCP 检查器支持和全面的文档。
  • 生产就绪 <br>内置 RFC 5424 日志记录、错误处理和最佳实践。
</td> </tr> </table> </div>

🚀 快速开始

安装

# 使用 pip
pip install mcp-forge

# 使用 uv(推荐用于生成的项目)
uv tool install mcp-forge

创建您的第一个服务器

# 交互模式(推荐)
mcp-forge new my-server

# 带选项
mcp-forge new my-server \
  --description "我的超棒 MCP 服务器" \
  --with-prompts \
  --with-sampling \
  --with-elicitation

运行它!

cd my-server

# 安装依赖项
uv sync

# 使用交互式演示客户端测试
python demo.py

# 运行自动化测试
python demo.py --mode test

# 启动用于 Claude Desktop 的服务器
python -m my_server.server --transport stdio

# 启动 HTTP 服务器
python -m my_server.server --transport http --port 8000

与 Claude Desktop 一起使用

claude_desktop_config.json 中添加:

{
  "mcpServers": {
    "my-server": {
      "command": "uv",
      "args": ["--directory", "/path/to/my-server", "run", "my_server.server"]
    }
  }
}

重启 Claude Desktop,您的工具就准备好了!🎉

📖 生成了什么?

my-server/
├── my_server/
│   ├── server.py                      # 主入口点(所有传输方式)
│   ├── server_stdio.py                # 仅 stdio 服务器
│   ├── server_http.py                 # 带身份验证的 HTTP 服务器
│   ├── server_sse.py                  # 带 SSL/TLS 的 SSE 服务器
│   ├── interfaces/                    # 抽象基类
│   │   ├── tool.py
│   │   ├── resource.py
│   │   └── prompt.py
│   ├── services/                      # 业务逻辑层
│   │   ├── tool_service.py
│   │   ├── resource_service.py
│   │   ├── prompt_service.py
│   │   ├── auth_service.py           # OAuth 2.1(可选)
│   │   ├── root_service.py           # 根目录(可选)
│   │   └── completion_service.py     # 补全(可选)
│   ├── tools/                         # 工具实现
│   │   ├── add_numbers.py            # 基础算术
│   │   ├── weather_tool.py           # 结构化输出
│   │   ├── reasoning_tool.py         # 采样(可选)
│   │   ├── greeting_elicitation.py   # 激发(可选)
│   │   └── ...
│   ├── resources/                     # 资源实现
│   │   ├── hello_world.py
│   │   └── user_profile.py
│   └── prompts/                       # 提示实现
│       ├── code_review.py
│       └── ...
├── demo.py                            # 交互式演示客户端
├── completions.py                     # 补全处理器(可选)
├── roots_config.py                    # 根目录配置(可选)
├── auth_config.py                     # 身份验证配置(可选)
├── pyproject.toml                     # uv 项目配置
└── README.md                          # 项目文档

💡 示例

添加一个简单的工具

# my_server/tools/calculator.py
from pydantic import BaseModel, Field
from my_server.interfaces.tool import Tool, ToolResponse, ToolContent

class CalculatorInput(BaseModel):
    expression: str = Field(..., description="要评估的数学表达式")

class CalculatorTool(Tool):
    name = "calculator"
    description = "评估数学表达式"
    input_model = CalculatorInput

    async def execute(self, input_data: CalculatorInput) -> ToolResponse:
        try:
            result = eval(input_data.expression)
            return ToolResponse(
                content=[ToolContent.text(f"结果: {result}")]
            )
        except Exception as e:
            return ToolResponse(
                content=[ToolContent.text(f"错误: {e}")],
                is_error=True
            )

tools/__init__.pyserver.py 中注册即可!

具有人工智能协作的工具

from fastmcp import Context

class ResearchTool(Tool):
    name = "research"
    description = "人工智能驱动的研究助手"
    input_model = ResearchInput

    async def execute(self, input_data: ResearchInput, ctx: Context) -> ToolResponse:
        # 请求其他人工智能的帮助
        response = await ctx.sample(
            messages=[{"role": "user", "content": input_data.query}],
            system_prompt="您是一位研究专家。",
            temperature=0.7
        )

        # 报告进度
        await ctx.report_progress(1.0, "研究完成")

        return ToolResponse(content=[ToolContent.text(response.content)])

交互式用户输入(激发)

class TaskTool(Tool):
    name = "create_task"
    description = "创建任务并获得用户确认"
    input_model = TaskInput

    async def execute(self, input_data: TaskInput, ctx: Context) -> ToolResponse:
        # 请求用户确认
        result = await ctx.elicit(
            "创建此任务?",
            response_type=None  # 只需确认
        )

        if result.action == "accept":
            # 创建任务
            return ToolResponse(content=[ToolContent.text("任务已创建!")])
        else:
            return ToolResponse(content=[ToolContent.text("已取消")])

结构化输出

class WeatherData(BaseModel):
    temperature: float
    humidity: int
    condition: str

class WeatherTool(Tool):
    name = "get_weather"
    input_model = WeatherInput
    output_model = WeatherData  # 启用结构化输出!

    async def execute(self, input_data: WeatherInput) -> ToolResponse:
        weather = WeatherData(
            temperature=72.5,
            humidity=65,
            condition="晴朗"
        )
        return ToolResponse.from_model(weather)

🎓 文档

外部资源

🎨 项目模板

MCP Forge 支持不同的模板配置:

功能描述标志
提示可重用的大规模语言模型模板--with-prompts / --no-prompts
采样人工智能到人工智能的协作--with-sampling / --no-sampling
激发交互式用户输入-with-elicitation / --no-elicitation
根目录文件系统边界--with-roots / --no-roots
补全参数自动补全--with-completion / --no-completion
身份验证OAuth 2.1 系统--with-auth / --no-auth

示例配置

# 最小服务器(只有工具和资源)
mcp-forge new minimal-server --no-prompts --no-sampling --no-elicitation

# 全功能服务器(启用所有功能)
mcp-forge new full-server \
  --with-prompts \
  --with-sampling \
  --with-elicitation \
  --with-auth

# API 集成服务器(身份验证 + 补全)
mcp-forge new api-server --with-auth --with-completion

🧪 测试您的服务器

生成的服务器包括多种测试选项:

1. 交互式演示客户端

python demo.py

特点:

  • 菜单驱动界面
  • 浏览和执行所有工具
  • 查看资源
  • 生成提示
  • 自动化测试套件

2. MCP 检查器(官方 GUI)

npx @modelcontextprotocol/inspector uv run -m my_server.server

浏览器端 GUI:

  • 可视化工具执行
  • 架构检查
  • 资源浏览
  • 配置导出

3. 手动测试

# 启动服务器
python -m my_server.server --transport http --port 8000

# 使用 curl 测试
curl -X POST http://localhost:8000/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}'

🚀 部署

Docker

FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install uv && uv sync
EXPOSE 8000
CMD ["uv", "run", "python", "-m", "my_server.server", "--transport", "sse", "--port", "8000"]

systemd

[Unit]
Description=我的 MCP 服务器
After=network.target

[Service]
Type=simple
User=mcp
WorkingDirectory=/opt/my-server
ExecStart=/usr/local/bin/uv run python -m my_server.server --transport sse --port 8443
Restart=always

[Install]
WantedBy=multi-user.target

云平台

  • Railway:从 GitHub 一键部署
  • Fly.iofly launch 并部署
  • DigitalOcean:App Platform 上的 Docker 容器
  • AWS/GCP/Azure:容器服务或无服务器

🌟 展示

使用 MCP Forge 制作了什么酷炫的东西吗?我们很乐意看到!

分享您的项目:

🤝 社区和支持

<div align="center">

💬 加入我们的社区

Discord

获取帮助,分享项目,并与其他 MCP 开发者连接!

❤️ 支持开发

如果 MCP Forge 为您节省了时间和精力,请考虑支持其开发:

PayPal

您的支持有助于维护和改进 MCP Forge,让每个人受益!🙏

</div>

🛠️ 贡献

我们热爱贡献!这里有几种方式可以帮助:

贡献方式

  • 🐛 报告 Bug:打开一个带有详细重现步骤的问题
  • 💡 建议功能:在 GitHub 讨论中分享您的想法
  • 📝 改进文档:修正拼写错误,添加示例,澄清解释
  • 🔧 提交 PR:添加功能,修复 Bug,改进模板
  • 星标仓库:展示您的支持,帮助其他人发现 MCP Forge

开发设置

# 克隆仓库
git clone https://github.com/KennyVaneetvelde/mcp-forge.git
cd mcp-forge

# 安装依赖项
pip install -e ".[dev]"

# 运行测试
pytest

# 检查代码
ruff check .

# 格式化代码
ruff format .

贡献指南

  1. 分叉仓库
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交您的更改 (git commit -m '添加惊人的功能')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开拉取请求

请确保:

  • ✅ 代码遵循项目风格(ruff)
  • ✅ 测试通过
  • ✅ 文档更新
  • ✅ 提交信息清晰

📜 许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

🙏 致谢

  • Anthropic - 创建了模型上下文协议
  • FastMCP - 提供了优秀的 Python MCP 框架
  • MCP 社区 - 推进了人工智能集成标准
  • 所有贡献者 - 感谢您使 MCP Forge 更好!

📞 联系


<div align="center">

由 MCP Forge 团队制作 ❤️

在 GitHub 上星标我们 • 💬 加入 Discord • ❤️ 在 PayPal 上支持

⬆ 返回顶部

</div>

📈 星标历史

<div align="center"> <a href="https://star-history.com/#KennyVaneetvelde/mcp-forge&Date"> <picture> <source media="(prefers-color-scheme: dark)" src