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:
Related Servers
Scout Monitoring MCP
sponsorPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
sponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Luma AI MCP Server
Generate and manipulate AI videos and images using Luma AI's Dream Machine API.
Remote MCP Server (Authless)
An example of a remote MCP server deployable on Cloudflare Workers without authentication.
MCP Server + Asgardeo
A sample MCP server that uses Asgardeo for client authentication and connection.
Remote MCP Server (Authless)
An example of a remote MCP server without authentication, deployable on Cloudflare Workers.
MCP Server + Github OAuth
An MCP server with built-in GitHub OAuth support, designed for deployment on Cloudflare Workers.
MCP Selenium Server
Automate web browsers using Selenium WebDriver via MCP.
Swagger/Postman MCP Server
Ingests and serves Swagger/OpenAPI specifications and Postman collections as MCP tools. Requires a config.json for API and authentication setup.
consult7
Analyze large codebases and document collections using high-context models via OpenRouter, OpenAI, or Google AI -- very useful, e.g., with Claude Code
Remote MCP Server (Authless)
A template for deploying a remote, auth-less MCP server on Cloudflare Workers.
MCP Bridge
A proxy server that enables existing REST APIs to be used as Model Context Protocol (MCP) servers.