by GDKsoftware
Native Delphi Server implementation of the Model Context Protocol (MCP)
# Add to your Claude Code skills
git clone https://github.com/GDKsoftware/Delphi-MCP-ServerGuides for using mcp servers skills like Delphi-MCP-Server.
Last scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T16:27:15.665Z",
"npmAuditRan": true,
"pipAuditRan": true
}See how Delphi-MCP-Server compares with popular alternatives.
Delphi-MCP-Server is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by GDKsoftware. Native Delphi Server implementation of the Model Context Protocol (MCP). It has 139 GitHub stars.
Yes. Delphi-MCP-Server passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/GDKsoftware/Delphi-MCP-Server" and add it to your Claude Code skills directory (see the Installation section above).
Delphi-MCP-Server is primarily written in Pascal. It is open-source under GDKsoftware on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh Delphi-MCP-Server against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
A Model Context Protocol (MCP) server implementation in Delphi, designed to integrate with Claude Code, Codex, and other MCP-compatible clients for AI-powered Delphi development workflows.
_meta, server/discover) and the initialize-based revisions 2025-06-18 and 2025-11-25 on the same endpoint and the same stdio process; see Protocol versionsOrigin and Host validation against DNS rebinding on every request, loopback binding by default, CORS headers for browser clients, request size and nesting limits, opt-in bearer authentication with OAuth 2.1 resource-server discoveryInputRequiredResult with signed requestState, progress and log notifications on the response stream, subscriptions/listen for change notificationsbuild.bat and build-tests.bat compile the .dpr directly, so only DELPHI_PATH needs to point at your installation:
set DELPHI_PATH=C:\Program Files (x86)\Embarcadero\Studio\22.0
build.bat
For the IDE and for the Linux64 build, open src/MCPServer.D11.dproj (tests: tests/MCPServerTests.D11.dproj) instead of the Athens project files. They carry the same units and settings, write their output to a separate D11 subdirectory, and exist because Alexandria will not load a ProjectVersion 20.3 project file.
git clone https://github.com/GDKsoftware/delphi-mcp-server.git
cd delphi-mcp-server
build.bat
Or specify configuration and platform:
build.bat Debug Win32
build.bat Release Win64
The script picks up the highest TaurusTLS version installed in the CatalogRepository of the Studio release that DELPHI_PATH points at. To build against a copy somewhere else, set TAURUS_PATH to its Source directory first:
set TAURUS_PATH=C:\path\to\TaurusTLS\Source
build.bat Release Win64
Prerequisites:
From the batch file:
build.bat Release Linux64
Or from RAD Studio IDE:
The server supports two transport modes:
Start the server without arguments for HTTP transport with Server-Sent Events (SSE):
Win32\Debug\MCPServer.exe
The server will listen on http://localhost:3000/mcp by default (configurable via settings.ini).
Use HTTP transport for:
Start the server with --stdio flag for stdin/stdout communication:
Win32\Debug\MCPServer.exe --stdio
The server will:
notifications/cancelled by stopping the named request; it gets no responsenotifications/progress for a request that carries _meta.progressToken, before its response[Server] MaxConcurrentRequests worker threads' drain time (2 seconds by default) once stdin closesUse STDIO transport for:
Supported flag variants: --stdio, -stdio, /stdio
By default requests are answered one at a time, in the order they arrive.
[Server] MaxConcurrentRequests in settings.ini raises the number of worker
threads for a client that issues concurrent requests over the same process; a
stdio server never writes settings.ini on its own, so this and the other
[Server] limits still need explicit configuration when they should differ
from the defaults.
A tool sees the request it is answering through TMCPRequestContext.Current:
CheckCancelled raises once the client cancels, ReportProgress sends a
notifications/progress when the request carries a progress token, and
Log sends a notifications/message when the request carries
_meta.io.modelcontextprotocol/logLevel and the message's level is at or
above it. See test_tool_with_progress and test_logging_tool in
MCPServer.Tool.ContentSamples for worked examples.
Over HTTP the same notifications reach the client on the response: when the
request accepts text/event-stream and a tool sends one, the response turns
into an SSE stream (chunked, X-Accel-Buffering: no) that carries the
notifications first and the JSON-RPC response as its last event. A request
that sends none is answered as before. A client that closes the stream
cancels the request: the server's next write to it fails and the tool sees
IsCancelled. That is the HTTP cancellation. A notifications/cancelled
naming the same request is answered 202 and dropped, because the tracker a
request consults is its own response stream and a notification always arrives
on a connection of its own; only over stdio, where every message shares one
channel, does the notification stop a running request.
subscriptions/listen)A modern client that wants to hear about changes opens a long-lived
subscriptions/listen request with a notifications filter
(toolsListChanged, promptsListChanged, resourcesListChanged,
resourceSubscriptions: a list of URIs). TMCPSubscriptionsManager
(MCPServer.SubscriptionsManager) answers with
notifications/subscriptions/acknowledged carrying the honoured filter and
keeps the stream open: over HTTP as an SSE response with a keep-alive comment
every 15 seconds, over stdio on a thread of its own so the worker threads stay
free. Every message on the subscription carries
_meta.io.modelcontextprotocol/subscriptionId, the JSON-RPC id of the
subscriptions/listen request. Closing the SSE stream, or sending
notifications/cancelled for that id over stdio, ends the subscription;
when the server stops (or stdin closes) it answers the request with a
completion result first.
Notifications are delivered synchronously on the thread that causes the change, so a subscriber that stops reading can hold up that thread until its socket buffer drains.
Assign the manager as ChangeNotifier of the tools, prompts and resources
managers, as MCPServer.dpr does, and the tools, prompts and resources
capabilities announce listChanged (and resources.subscribe) to modern
clients. AddTool, RemoveTool, AddPrompt, RemovePrompt, AddResource,
RemoveResource and AddResourceTemplate then notify the subscribed clients,
and TMCPResourcesManager.ResourceUpdated(Uri) reports a changed resource to
the clients that subscribed to that URI. Without a ChangeNotifier nothing is
announced and nothing is sent.
The server decides per request which protocol era it is speaking; nothing is negotiated per connection and no session is minted.
| Request | Era | Served as |
|---|---|---|
params._meta with io.modelcontextprotocol/protocolVersion |
modern | 2026-07-28. clientCapabilities is required (-32602); an unknown revision gets -32022 with the supported list; initialize, ping, logging/setLevel and resources/subscribe do not exist in this era (-32601). |
initialize without modern _meta |
legacy | The requested revision when it is 2025-06-18 or 2025-11-25, otherwise 2025-11-25. The result carries capabilities and serverInfo only. |
server/discover without _meta |
modern, malformed |