MCP工具服务器工具包

mcp-toolbox是一个轻量级Python工具包,用于构建符合MCP协议的工具服务器,使AI代理能够发现和使用Python函数。

  • by MukundaKatta
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 MukundaKatta/mcp-toolbox

使用说明

相关工作: 这一问题空间的初步发展已经趋同 mcp快速服务 --一个使用装饰器从普通函数创建MCP服务器的最小Python工具包。该回购仍然可用;首先检查规范仓库以获取最新工具。

---#mcp工具箱

使用模型上下文协议(MCP)将Python函数暴露给AI代理。

什么是mcp工具箱?

mcp-toolbox是一个轻量级的Python工具包,用于构建与mcp兼容的工具服务器。它可以轻松地将Python函数作为AI代理(如Claude)可以发现和使用的工具公开。通过类型提示和内置传输支持自动生成JSON模式,您可以在几分钟内从Python函数转到生产就绪的MCP服务器。

特性

  • 基于简单装饰器的注册 -使用@tool、@resource和@prompt装饰器来公开Python函数
  • 自动模式生成 -JSON模式由Python类型提示自动生成
  • 多个传输 -内置支持stdio和HTTP传输
  • 完全符合MCP -实现模型上下文协议规范
  • 类型安全 -类型提示在运行时根据生成的模式进行验证
  • 最小依赖性 -仅使用Python标准库(无严重依赖关系)
  • Docstring集成 -函数文档字符串自动成为工具描述
  • 错误处理 -正确的错误传播和有用的消息

安装

pip install mcp-toolbox

或者从源代码安装:

git clone https://github.com/yourusername/mcp-toolbox.git
cd mcp-toolbox
pip install -e .

快速开始

在5分钟内创建一个简单的天气工具服务器:

from mcp_toolbox import MCPServer

server = MCPServer(name="weather-tools")

@server.tool()
def get_weather(city: str) -> str:
    """Get current weather for a city."""
    # Your implementation here
    return f"Weather in {city}: Sunny, 72F"

if __name__ == "__main__":
    server.run_stdio()

使用示例

基本工具注册

from mcp_toolbox import MCPServer

server = MCPServer(name="math-tools")

@server.tool()
def add(a: int, b: int) -> int:
    """Add two numbers."""
    return a + b

@server.tool()
def multiply(x: float, y: float) -> float:
    """Multiply two numbers."""
    return x * y

server.run_stdio()

高级功能

from mcp_toolbox import MCPServer
from typing import Optional, List

server = MCPServer(
    name="data-tools",
    description="Tools for working with data"
)

@server.tool(
    name="custom_name",
    description="Custom description",
    tags=["data", "processing"]
)
def process_items(
    items: List[str],
    filter_keyword: Optional[str] = None
) -> List[str]:
    """Process a list of items with optional filtering."""
    if filter_keyword:
        return [item for item in items if filter_keyword in item]
    return items

@server.resource()
def get_database_status() -> dict:
    """Get current database connection status."""
    return {"status": "connected", "queries": 42}

server.run_stdio()

HTTP传输

from mcp_toolbox import MCPServer

server = MCPServer(name="api-tools")

@server.tool()
def health_check() -> str:
    """Server health check."""
    return "OK"

# Run on HTTP instead of stdio
server.run_http(host="127.0.0.1", port=8000)

运作原理

  1. 套准功能 -使用装饰器将Python函数标记为工具
  2. 生成模式 -类型提示会自动转换为JSON模式
  3. 启动服务器 -使用stdio或HTTP传输运行服务器
  4. AI代理连接 -客服通过MCP发现您的工具并致电给他们

API 参考

MCP服务器

server = MCPServer(
    name: str,                          # Server name
    description: Optional[str] = None,  # Server description
    version: str = "1.0.0"             # Server version
)

方法:

  • @tool() -将函数注册为MCP工具
  • @resource() -将函数注册为资源
  • @prompt() -注册提示模板
  • run_stdio() -使用stdio传输运行
  • run_http(host, port) -使用HTTP传输运行

建筑

  • 服务器.py -核心MCPServer类和消息处理
  • schema.py -键入JSON模式转换提示
  • 装饰师.py -基于装修商的注册系统
  • transport.py -Stdio和HTTP传输实现

贡献

我们欢迎捐款!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

示例

请参阅 examples/ 完整工作示例目录:

  • weather_server.py -天气工具服务器
  • calculator_server.py -数学计算器服务器