Delphi MCP服务器

DMCPServer是一个用Delphi开发的主控制协议服务器,能将Delphi代码注册为MCP服务器,支持HTTP和STDIO传输,并可接入Claude AI等智能助手。

  • by Daniel09Fernandes
  • Pascal
  • 本地部署
  • 37 星标
  • 更新于
在 GitHub 查看 Daniel09Fernandes/DMCPServer

使用说明

Dinos MCPServer - Version 1.0.1


Transform your Delphi code into a MCP-server with DMCPServer.


🎯 About

DMCPServer is a master control protocol server developed in Delphi.

⚙️ Installation

Installation is done using the boss install command:

boss install github.com/Daniel09Fernandes/DMCPServer

or Tools > Options > Language > Delphi > Library > Library Path Add path 'source' this project

⚙️ Protocol

Protocol Supported
HTTP ✅
STDIO ✅

Tested Delphi version

Version Supported
> 10.x ✅
> 11.x ✅
> 12.x ✅
> 13.X ✅

🚀 Register your Action

var     
  lCallbackGetWeather : TMCPAction;
begin
 lCallbackGetWeather :=
       procedure(var Params: TJSONObject; out Result: TDMCPCallToolsResult; out Error: TDMCPCallToolsContent)
       var
         Location: string;
         EnableLog: Boolean;
         WeatherService: IWeatherService;
         WeatherData: string;
       begin
         try
            try
              // Extract parameters
              Location := Params.GetParam('location');
              EnableLog := Params.GetParam('EnableLog', trBool);

              // Validation of required parameters
              if Location.Trim = '' then
                raise Exception.Create('Location parameter is required');

              WeatherService := TMockWeatherService.Create;
              WeatherData := WeatherService.GetWeatherData(Location);


              if EnableLog then
                TDMCPServer.WriteToLog(Format('Weather data requested for %s', [Location]));

              // Assemble the result - There's no need to release it from memory; it's done automatically.
              Result := TDMCPCallToolsResult.Create;
              Result.Content.AddRange(TDMCPCallToolsContent.Create(ptText, WeatherData));

              Error := nil;
            finally
              Params.Free;
            end;
         except
            on E: Exception do
            begin
              // Handles exceptions. to MCPServers Defaults
              Error := TDMCPCallToolsContent.Create(ptText,
                'Weather service error: ' + E.Message);
              TDMCPServer.WriteToLog('Error in get_weather: ' + E.Message);
              Result := nil;
            end;
         end;
        end;
end;

📋 Create and register your server informations

var     
   lDMCP: IDMCPServerRegister;
begin
   lDMCP := TDMCPServerRegister.New
      .SetLogs(True);  //Set Logs Request

    lDMCP
      .RegisterAction('get_weather', 'Get current weather information', lCallbackGetWeather)     
      .ServerInfo
      .SetServerName('DinosMCPServer')
      .SetVersion('0.1.0')        
        .Tools(TMCPServerTools.New
           .SetName('get_weather')
           .InputSchema
              .SetType(ptObject)
              .SetProperties('location', ptString)
              .SetProperties('Conditions', ptString)
              .SetProperties('EnableLog', ptBoolean)
              .SetRequired(['location'])
              .SetAdditionalProperties(False)
           .&End);
    lDMCP.Run;
end;
 .ServerInfo
        .SetServerName('DinosMCPServer')
        .SetVersion('0.1.0')
        .Resources(TMCPServerResources.New
           .SetUri('file:///C:/Users/danie/Downloads/teste/fatura-exemplo.csv')
           .SetName('Model to create sales order')
           .SetDescription('Standard budget template to be followed for sales orders.'))

Attach on Claude AI

Access the configuration on developer and edit config



In mcpServers node, attach your MCPServer(STDIO)


To HTTP:

Flow

Documentation

📖 Read the complete documentation here: DMCPServer-docs

🎬 Watch on Youtube DMCPServer - PT-BR

🎬 Watch on Youtube, Full explanation of MCP DMCPServer - EN-US


O componente é totalmente free, se ele foi muito útil para você, que tal me pagar um café para incentivar o projeto?

PIX:

Star History