MCP服务器模板

一个最小化、生产就绪的Python MCP服务器模板,帮助用户在30分钟内构建第一个MCP服务器。

  • by NyxToolsDev
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 NyxToolsDev/mcp-server-template

使用说明

MCP服务器模板

用于构建Python MCP服务器的最小、生产就绪的样板。在30分钟内构建您的第一个MCP服务器。

什么是MCP?

模型上下文协议(MCP)是Claude连接到外部工具的方式。MCP服务器描述了Claude可以调用的“工具”,比如检查日历、查询数据库或创建发票。

把它想象成人工智能的USB端口。你插入服务器,克劳德获得了一种新的能力。

此模板中有什么

mcp-server-template/
├── src/
│   └── my_mcp_server/
│       ├── __init__.py        # Package init
│       ├── __main__.py        # Entry point
│       └── server.py          # MCP server with example tools
├── tests/
│   └── test_server.py         # Example tests
├── pyproject.toml              # Package config (ready for PyPI)
├── README.md                   # This file
└── LICENSE                     # MIT

快速开始

1.克隆和重命名

git clone https://github.com/NyxToolsDev/mcp-server-template.git my-mcp-server
cd my-mcp-server

2.安装依赖项

python -m venv venv
venv\Scripts\activate  # Windows
# source venv/bin/activate  # Mac/Linux
pip install -e ".[dev]"

3.运行服务器

python -m my_mcp_server

4.添加到克劳德代码

添加到您的Claude Code MCP配置中(~/.claude/mcp_servers.json):

{
  "my-mcp-server": {
    "command": "python",
    "args": ["-m", "my_mcp_server"],
    "env": {}
  }
}

重新启动克劳德代码。您的工具现在可用。

如何添加自己的工具

打开 src/my_mcp_server/server.py。您将看到一个示例工具:

@server.tool()
async def hello(name: str) -> str:
    """Say hello to someone."""
    return f"Hello, {name}!"

要添加新工具,请执行以下操作:

  1. 编写一个带有类型提示和docstring的函数
  2. 用 @server.tool()
  3. 克劳德会自动发现的

docstring是至关重要的-它告诉克劳德何时以及如何使用该工具。具体点。

示例:天气工具

@server.tool()
async def get_weather(city: str) -> str:
    """Get current weather for a city. Use when the user asks about weather conditions."""
    async with httpx.AsyncClient() as client:
        resp = await client.get(f"https://api.weather.com/{city}")
        data = resp.json()
        return f"{city}: {data['temp']}°F, {data['condition']}"

示例:数据库查询工具

@server.tool()
async def query_users(search: str) -> str:
    """Search for users by name or email. Returns matching user records."""
    results = db.users.find({"$text": {"$search": search}})
    return json.dumps(results, indent=2)

良好MCP服务器的提示

  1. 工具描述比代码更重要。 如果Claude不明白何时使用工具,那么完美的实现是无用的。

  2. 返回字符串,而不是对象。 MCP工具返回Claude读取的文本。将输出格式化为可读文本或JSON字符串。

  3. 优雅地处理错误。 以字符串形式返回错误消息——不要让异常导致服务器崩溃。

  4. 保持工具专注。 一个工具=一个动作。不要制造一个“无所不能”的工具

  5. 与克劳德一起测试。 真正的考验是克劳德是否在正确的时间选择了正确的工具。

发布到PyPI

当您的服务器准备就绪时:

  1. 更新 pyproject.toml 包含您的包名称、描述和URL
  2. 构建: python -m build
  3. 上传: twine upload dist/*

想要生产就绪的MCP服务器?

此模板可帮助您开始。对于具有完全身份验证、错误处理、高级功能和文档的生产MCP服务器:

全开源(MIT)。免费核心+高级功能。


由...建造 NyxTools ·NyxTools