模型上下文协议服务器库

一个用于构建模型上下文协议(MCP)服务器的Swift库,提供核心协议处理、传输层和请求处理基础设施。

  • by chrisjeane
  • Swift
  • 本地部署
  • 更新于
在 GitHub 查看 chrisjeane/MCPServer

使用说明

MCP服务器

用于构建模型上下文协议(MCP)服务器的Swift库。该库提供核心MCP协议处理、传输层和请求处理基础设施。

特性

  • MCP协议实现:完全支持基于JSON-RPC 2.0的MCP协议
  • 多个传输:内置对TCP和Stdio传输的支持
  • 可扩展设计:用于实现领域特定功能的委托模式
  • 类型安全:具有Codable支持的强类型消息处理

组件

核心协议

  • MCPMessages.swift:协议定义和类型
    • MCPRequest:JSON-RPC请求结构
    • MCPResponse:JSON-RPC响应结构
    • MCPParams:各种方法的参数枚举
    • MCPResult:响应的结果枚举
    • 工具定义和功能

请求处理

  • MCP请求处理程序:处理MCP请求的基本参与者
    • 处理系统协议方法(初始化、功能、工具/列表)
    • 将特定于域的请求委托给处理程序实现
    • 管理初始化状态和错误处理

传输层

  • TCPServer.swift:基于TCP套接字的传输

    • 使用Content-Length标头实现MCP消息帧
    • 处理多个并发客户端连接
    • 跨平台插座支撑
  • StdioTransport.swift:标准输入/输出传输

    • 在stdin/stdout上实现MCP消息帧
    • 适用于工具集成和CLI使用

错误处理

  • 错误s.swift:带有JSON-RPC错误代码的MCP错误类型

用法

要构建MCP服务器,请实现 MCPRequestHandlerDelegate 协议:

import MCPServer

struct MyServerDelegate: MCPRequestHandlerDelegate {
    func getServerInfo() -> ServerInfo {
        return ServerInfo(name: "MyServer", version: "1.0.0")
    }

    func buildToolDefinitions() -> [Tool] {
        // Define your tools here
        return []
    }

    func handleDomainSpecificRequest(_ request: MCPRequest) async throws -> MCPResponse? {
        // Handle your domain-specific methods
        return nil
    }
}

// Create and run the server
let delegate = MyServerDelegate()
let handler = MCPRequestHandler(delegate: delegate)
let transport = StdioTransport(handler: handler)
try await transport.start()

设置和安装

先决条件

  • Swift 6.2或更高版本
  • macOS 15或更高版本
  • Xcode 16或更高版本(用于开发)

建设图书馆

要构建MCPServer库,请执行以下操作:

cd MCPServer
swift build

要构建一个特定的示例(例如DiceServer):

swift build --product DiceServer

与Claude MCP一起跑步

Claude CLI与MCP服务器集成以扩展其功能。以下是如何使用MCPServer claude mcp:

1.构建您的MCP服务器

首先,构建MCP服务器可执行文件:

swift build -c release

可执行文件将位于 .build/release/YourServerName.

2.配置Claude CLI

将您的MCP服务器添加到Claude的配置文件中 ~/.claude/mcp-servers.json:

{
  "mcpServers": {
    "dice": {
      "command": "/path/to/.build/release/DiceServer"
    }
  }
}

替换 /path/to/.build/release/DiceServer 带有构建的可执行文件的完整路径。

3.使用MCP服务器运行Claude

使用MCP服务器启动Claude CLI:

claude mcp start

这将启动加载了配置的MCP服务器的Claude CLI。然后,您可以与Claude交互,并使用MCP服务器提供的工具。

4.在Claude中使用工具

一旦您的MCP服务器运行,您可以要求Claude使用其工具:

> roll_dice sides:6

Claude将把工具调用路由到您的MCP服务器并返回结果。

需求

  • Swift 6.2或更高版本
  • macOS 15或更高版本

许可证

[您的许可证在这里]