Token导航 LogoToken导航TokenDH.com
Mormot MCP Server logo
AI代理未说明官方级别未说明来源级核验

Mormot MCP Server

MCP Server

基于mORMot2框架的高性能模型上下文协议(MCP)服务器,支持双向通知和多种传输协议。

工具数

2

提示词数

0

GitHub Stars

13

资源数

0
跨平台Claude实时通信Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

JavierusTk

提供方

JavierusTk

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

mORMot2 MCP服务器

🇪🇸 西班牙语阅读

实施MCP规范2025-06-18 完全支持通过SSE进行双向通知。

特性

核心

  • 纯mORMot2实现 -mORMot2之外没有外部依赖
  • 双重运输支持 -stdio和HTTP与SSE
  • JSON-RPC 2.0 -使用完全协议支持 TDocVariant
  • 模块化架构 -易于使用自定义工具、资源和提示进行扩展
  • 跨平台 -使用Delphi和Free Pascal编译

MCP能力

  • 工具 -使用JSON模式验证注册自定义工具 listChanged 通知
  • 资源 -基于URI访问的列表、读取、模板和订阅
  • 提示 -列出并获取多种内容类型(文本、图像、音频、资源)
  • 日志记录 - setLevel 使用RFC 5424日志级别的方法
  • 完成 -提示和资源的参数自动完成

传输层

  • stdio传输 -JSON-RPC换行符分隔,记录到stderr
  • HTTP传输 -支持服务器端事件(SSE)、CORS和TLS的REST API
  • 会话管理 -加密会话ID(128位)
  • SSE通知 -实时双向通信
  • 保持活跃 -可配置的SSE保活(默认30秒)
  • 平滑关闭 -SIGTERM/SIGINT处理,超时5秒
  • 事件总线 -用于内部通知路由的线程安全发布/订阅

通知

  • notifications/tools/list_changed -工具注册更改
  • notifications/resources/list_changed -资源更改
  • notifications/resources/updated -已订阅的资源更新
  • notifications/prompts/list_changed -快速更改
  • notifications/message -记录消息
  • notifications/progress -进度更新
  • notifications/cancelled -请求取消

需求

  • mORMot2 框架
  • Delphi 10.3+(已测试)或Free Pascal 3.2+(尚未测试)

项目结构

mORMot-MCP-Server/
├── MCPServer.dpr           # Delphi project
├── MCPServer.lpr           # Free Pascal project
├── MCPServer.lpi           # Lazarus project
├── src/
│   ├── Core/
│   │   ├── MCP.Manager.Registry.pas   # Manager registration
│   │   └── MCP.Events.pas             # Event bus (pub/sub)
│   ├── Protocol/
│   │   └── MCP.Types.pas              # Core types and settings
│   ├── Transport/
│   │   ├── MCP.Transport.Base.pas     # Transport abstraction
│   │   ├── MCP.Transport.Stdio.pas    # stdio transport
│   │   └── MCP.Transport.Http.pas     # HTTP + SSE transport
│   ├── Server/
│   │   └── MCP.Server.pas             # Legacy HTTP server
│   ├── Managers/
│   │   ├── MCP.Manager.Core.pas       # initialize, ping
│   │   ├── MCP.Manager.Tools.pas      # tools/list, tools/call
│   │   ├── MCP.Manager.Resources.pas  # resources/*, subscriptions
│   │   ├── MCP.Manager.Prompts.pas    # prompts/list, prompts/get
│   │   ├── MCP.Manager.Logging.pas    # logging/setLevel
│   │   └── MCP.Manager.Completion.pas # completion/complete
│   ├── Tools/
│   │   ├── MCP.Tool.Base.pas          # Base tool class
│   │   ├── MCP.Tool.Echo.pas          # Echo example
│   │   └── MCP.Tool.GetTime.pas       # GetTime example
│   ├── Resources/
│   │   └── MCP.Resource.Base.pas      # Base resource class
│   └── Prompts/
│       └── MCP.Prompt.Base.pas        # Base prompt class

建筑

使用Delphi

打开 MCPServer.dproj 在Delphi IDE中。确保配置了mORMot2源路径。

# Or from command line
msbuild MCPServer.dproj /p:Config=Release /p:Platform=Win64

免费Pascal/Lazarus

lazbuild MCPServer.lpi

用法

stdio传输(适用于克劳德桌面)

MCPServer.exe --transport=stdio

在Claude桌面中配置(claude_desktop_config.json):

{
  "mcpServers": {
    "mormot-server": {
      "command": "C:\\path\\to\\MCPServer.exe",
      "args": ["--transport=stdio"]
    }
  }
}

HTTP传输(用于web客户端)

# Default port 3000
MCPServer.exe --transport=http

# Custom port
MCPServer.exe --transport=http --port=8080

HTTPS/TLS

# Self-signed certificate (development/testing)
MCPServer.exe --transport=http --tls-self-signed

# With certificate files
MCPServer.exe --transport=http --tls --cert=server.crt --key=server.key

# With encrypted private key
MCPServer.exe --transport=http --tls --cert=server.crt --key=server.key --key-password=secret

TLS使用mORMot2的原生支持:Windows上的SChannel(没有额外的DLL),Linux上的OpenSSL。

SSE连接

# Open SSE stream for notifications
curl -N -H "Accept: text/event-stream" http://localhost:3000/mcp

API示例

初始化会话

curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Mcp-Protocol-Version: 2025-06-18" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-06-18",
      "capabilities": {},
      "clientInfo": {"name": "test", "version": "1.0"}
    }
  }'

列出工具

curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Mcp-Session-Id: " \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

呼叫工具

curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Mcp-Session-Id: " \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
      "name": "echo",
      "arguments": {"message": "Hello, World!"}
    }
  }'

添加自定义工具

unit MCP.Tool.MyTool;

{$I mormot.defines.inc}

interface

uses
  mormot.core.base,
  mormot.core.variants,
  MCP.Tool.Base;

type
  TMCPToolMyTool = class(TMCPToolBase)
  protected
    function BuildInputSchema: Variant; override;
  public
    constructor Create; override;
    function Execute(const Arguments: Variant): Variant; override;
  end;

implementation

constructor TMCPToolMyTool.Create;
begin
  inherited;
  fName := 'my_tool';
  fDescription := 'My custom tool';
end;

function TMCPToolMyTool.BuildInputSchema: Variant;
begin
  TDocVariantData(Result).InitFast;
  TDocVariantData(Result).S['type'] := 'object';
  // Add properties...
end;

function TMCPToolMyTool.Execute(const Arguments: Variant): Variant;
begin
  // Return success
  Result := ToolResultText('Done!');

  // Or return error
  // Result := ToolResultText('Error message', True);
end;

end.

注册于 MCPServer.dpr:

ToolsManager.RegisterTool(TMCPToolMyTool.Create);

配置

中的设置 MCP.Types.pas:

Settings.ServerName := 'mORMot-MCP-Server';
Settings.ServerVersion := '1.0.0';
Settings.Port := 3000;
Settings.Host := '0.0.0.0';
Settings.Endpoint := '/mcp';
Settings.SSEKeepaliveIntervalMs := 30000;  // 30 seconds

演出

特性mORMot2 MCP服务器
HTTP服务器THttpAsyncServer (异步I/O)
JSONTDocVariant (零拷贝)
内存最小分配
线程线程池
SSE本地实现

许可证

MIT许可证-请参阅 许可证 文件。

另见

目录标签

目录标签

跨平台Claude实时通信Pascal本地部署高性能服务器模型上下文协议JSON-RPC

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明session部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP