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:
Servidores relacionados
Scout Monitoring MCP
patrocinadorPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
patrocinadorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
mcp-server-tibet
TIBET provenance tracking for AI decisions. Cryptographic audit trails with ERIN/ERAAN/EROMHEEN/ERACHTER intent logging for compliance and transparency.
Screeny
A macOS-only server that enables LLMs to capture screenshots of specific application windows, providing visual context for development and debugging.
MCP Configuration Editor
Edit the mcp.json configuration file for tools like AWS Q Developer and Claude Desktop.
Mong MCP Server
A moby-like random name generator for use with tools like Claude Desktop and VS Code Copilot Agent.
AI Intervention Agent
An MCP server for real-time user intervention in AI-assisted development workflows.
Intervals.icu
Connects to the Intervals.icu API to retrieve activities, events, and wellness data.
Authless Remote MCP Server
An example of a remote MCP server without authentication, deployable on Cloudflare Workers or runnable locally via npm.
My MCP Server
A remote MCP server example deployable on Cloudflare Workers without authentication.
UnrealMCP Plugin
An unofficial MCP server plugin for remote control of Unreal Engine using AI tools.
Stackzero Labs MCP
A server for generating Stackzero Labs UI components.