MCP SeriesGenerator
A .NET server for generating and validating vehicle serial numbers.
This is a repository for testing with Model Context Protocol
Instructions for executing the project
Running with docker:
1. Access the root directory folder in the terminal, example:
cd mcp_seriesgenerator
2. Container execution:
docker-compose up -d
3. Then run the below powershell script command, the docker.ps1 file is located in the root directory (The script will copy the files from the docker container to your local machine)
powershell -ExecutionPolicy ByPass -File docker.ps1
Running with Claude desktop app:
1. Open Claude desktop app for configuration
2. Menu - File - Settings - Developer - Edit Config
3. Open config file in location: \user\AppData\Roaming\Claude\claude_desktop_config.json (Save the file, and restart Claude for Desktop)
{
"mcpServers": {
"serialNumberGenerator": {
"command": "dotnet",
"args": [
"run",
"--project",
"C:\\ABSOLUTE\\PATH\\TO\\PROJECT",
"--no-build"
]
}
}
}
4. Look for the "Search & Tools" icon, type something like Upload Vehicle and insert the file with the serial numbers. Example:
series.txt
1313MEXXXA7989-1
0708BRAXXC4014-3
1414ARGXXA5834-9
1213ASMXXC8348-2
0202ARGXXC2614-E
0606BRAXXA6466-8
0606MEXXXA3820-4
5. More information in: https://modelcontextprotocol.io/quickstart/server
Tests with Mcp Server without client applications:
1. The Model Context Protocol (MCP) allows servers to expose tools that can be invoked externally in a standardized way.
1.1. First, it is necessary to configure the Mcp Server and its tools that will be exposed in the application. Here we configure with StdioServerTransport:
//class src/McpSeriesGenerator.App/Program.cs
builder.Services.AddMcpServer()
.WithStdioServerTransport()
.WithTools<VehicleTool>();
builder.Services.AddScoped<VehicleTool>();
1.2. In the project, there are resources created for the Mcp Server tool. Among some of them, we have, for example, ReturnsIfTheSerialNumberIsValid.
//class src/McpSeriesGenerator.App/McpServer/VehicleTool.cs
[McpServerTool(Name = "ReturnsIfTheSerialNumberIsValid"), Description("Validate serial number with check digit.")]
public string ReturnsIfTheSerialNumberIsValid(
[Description("Enter a serial number with check digit")] string SerialNumber)
{
if (string.IsNullOrWhiteSpace(SerialNumber))
{
return "Serial number cannot be empty.";
}
var vehicle = Vehicle.Create(SerialNumber);
if (vehicle.VehicleSerialNumber.ValidateCheckDigit())
{
return "This serial number is valid";
}
return "This serial number is invalid";
}
2. In the integration test project, there is communication via StdioServerTransport for real simulation of an integration between client application and Mcp Server.
2.1. In the following code, in the constructor method, a process instance is created to run the Mcp Server project externally from the integration test project.
//class test/McpSeriesGenerator.Integration/McpServer/ProcessFixture.cs
public ProcessFixture()
{
string appDll = Path.Combine(AppContext.BaseDirectory, "McpSeriesGenerator.App.dll");
_process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "dotnet",
Arguments = $"\"{appDll}\"",
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true
}
};
_process.Start();
if (_process == null)
{
throw new InvalidOperationException("Failed to start MCP server process");
}
}
2.2. Example test method with the ReturnsIfTheSerialNumberIsValid tool:
//class test/McpSeriesGenerator.Integration/McpServer/VehicleToolTest.cs
public async Task MCPServer_ShouldResponseToReturnsIfTheSerialNumberIsValid()
{
Assert.NotNull(_fixture._process);
_ = Task.Run(async () =>
{
string? err;
while ((err = await _fixture._process.StandardError.ReadLineAsync()) != null)
Console.WriteLine("[STDERR] " + err);
});
var jsonString = JsonSerializer.Serialize(new
{
jsonrpc = "2.0",
id = 1,
method = "tools/call",
@params = new
{
name = "ReturnsIfTheSerialNumberIsValid",
arguments = new { SerialNumber = "0202ARGXXC2614-E" }
}
});
await _fixture._process.StandardInput.WriteLineAsync(jsonString);
await _fixture._process.StandardInput.FlushAsync();
if (_fixture._process.StandardOutput.Peek() > 0)
{
var responseOut = await _fixture._process.StandardOutput.ReadLineAsync();
Assert.True(!string.IsNullOrWhiteSpace(responseOut));
Assert.Contains("jsonrpc", responseOut);
JsonNode? node = JsonNode.Parse(responseOut);
Assert.NotNull(node);
Assert.NotNull(node?["result"]);
Assert.NotNull(node?["result"]?["isError"]);
Assert.True(bool.TryParse(node?["result"]?["isError"]?.ToString(), out bool isError));
Assert.False(isError);
}
}
Technologies and tools used:
เซิร์ฟเวอร์ที่เกี่ยวข้อง
Alpha Vantage MCP Server
ผู้สนับสนุนAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
FreeCAD MCP
A server to interact with FreeCAD models using the Model Context Protocol (MCP).
MCP Server Executable
An executable server for running MCP services, featuring tool chaining, multi-service management, and plugin support.
Base64 Encode/Decode
A simple and efficient MCP server for Base64 encoding and decoding of text and images.
conKurrence
AI evaluation toolkit — measure inter-rater agreement (Fleiss' κ, Kendall's W) across multiple LLM providers
mockd
Multi-protocol API mock server with 18 MCP tools — mock HTTP, GraphQL, gRPC, WebSocket, MQTT, SSE, and SOAP APIs with chaos engineering, stateful CRUD, and deterministic seeded responses.
ADT MCP Server
An MCP server for ABAP Development Tools (ADT) that exposes various ABAP repository-read tools over a standardized interface.
MCP Reasoner
A reasoning engine with multiple strategies, including Beam Search and Monte Carlo Tree Search.
Background Process MCP
A server that provides background process management capabilities, enabling LLMs to start, stop, and monitor long-running command-line processes.
APIMatic MCP
APIMatic MCP Server is used to validate OpenAPI specifications using APIMatic. The server processes OpenAPI files and returns validation summaries by leveraging APIMatic’s API.
Contendeo
Give your agent eyes — multimodal video analysis MCP.