Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Moderne AI-ontwikkeling is in toenemende mate afhankelijk van lokale hulpprogramma's die communiceren via STDIO, met name MCP-servers (Model Context Protocol). Deze servers ontvangen JSON-RPC aanvragen via stdin en verzenden JSON-RPC antwoorden via stdout. Met behulp van Dev Proxy kunt u STDIO-communicatie onderscheppen en mocken om uw AI-clienttoepassingen te testen zonder werkelijke serverlogica uit te voeren.
Vereiste voorwaarden
Gesimuleerde MCP-serverreacties
Als u mcp-serverreacties wilt mocken, gebruikt u de stdio opdracht met de MockStdioResponsePlugin. De invoegtoepassing onderschept stdin en retourneert mock-antwoorden via stdout of stderr.
1. Een Dev Proxy-configuratiebestand maken
Maak een devproxyrc.json bestand met de volgende inhoud:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/rc.schema.json",
"plugins": [
{
"name": "MockSTDIOResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockSTDIOResponsePlugin"
},
{
"name": "DevToolsPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "devTools"
}
],
"devTools": {
"preferredBrowser": "Edge"
},
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json"
}
}
2. Een mocks-bestand maken
Maak een stdio-mocks.json bestand met gesimuleerde antwoorden voor de MCP-server:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "initialize"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{\"tools\":{}},\"serverInfo\":{\"name\":\"Mock MCP Server\",\"version\":\"1.0.0\"}}}\n"
}
},
{
"request": {
"bodyFragment": "tools/list"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"tools\":[{\"name\":\"get_weather\",\"description\":\"Get current weather for a location\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"City name\"}},\"required\":[\"location\"]}}]}}\n"
}
},
{
"request": {
"bodyFragment": "tools/call"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"Mock response from the tool\"}]}}\n"
}
}
]
}
3. Dev Proxy starten
Voer Dev Proxy uit met de STDIO opdracht en geef de opdracht op die moet worden uitgevoerd:
devproxy stdio npx -y @modelcontextprotocol/server-filesystem
Dev Proxy start de MCP-server als een onderliggend proces en onderschept alle stdin/stdout-communicatie. Wanneer stdin tekst bevat die overeenkomt met een mock's bodyFragment, retourneert Dev Proxy het mock-antwoord in plaats van de aanvraag door te sturen naar de werkelijke server.
Tijdelijke aanduidingen gebruiken voor dynamische antwoorden
Als u dynamische antwoorden wilt maken die waarden uit de aanvraag bevatten, gebruikt u @stdin.body.* tijdelijke aanduidingen:
{
"mocks": [
{
"request": {
"bodyFragment": "echo"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"message\":\"You said: @stdin.body.params.text\"}}\n"
}
}
]
}
Beschikbare tijdelijke aanduidingen:
| Placeholder | Description |
|---|---|
@stdin.body.id |
JSON-RPC aanvraag-id |
@stdin.body.method |
JSON-RPC methodenaam |
@stdin.body.params.* |
Toegang tot aanvraagparameters |
Niet-gemockte verzoeken blokkeren
Als u wilt voorkomen dat niet-verwerkte aanvragen het onderliggende proces bereiken, stelt u het volgende in blockUnmockedRequeststrue:
{
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json",
"blockUnmockedRequests": true
}
}
Het blokkeren van niet-verwerkte aanvragen is handig wanneer u de MCP-server volledig wilt bespotten zonder de werkelijke logica uit te voeren.
Gesimuleerde antwoorden laden uit bestanden
Laad de inhoud van externe bestanden voor complexe antwoorden:
{
"mocks": [
{
"request": {
"bodyFragment": "initialize"
},
"response": {
"stdout": "@initialize-response.json"
}
}
]
}
Maak het initialize-response.json-bestand:
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Mock MCP Server","version":"1.0.0"}}}
STDIO-verkeer inspecteren in DevTools
Wanneer u de DevToolsPluginDev Proxy inschakelt, wordt Chrome DevTools geopend, waar u alle STDIO-communicatie kunt inspecteren:
- Tabblad Netwerk: alle stdin/stdout/stderr-berichten weergeven
-
URL's: berichten worden weergegeven als
stdio://command-name -
Methoden: Aanvragen worden weergegeven als
stdin -
Statuscodes:
stdoutwordt weergegeven als 200,stderrals 500 - Timing: Bekijk hoe lang elke aanvraag/reactie duurde
Het gebruik van DevToolsPlugin is van onschatbare waarde bij het opsporen van communicatieproblemen tussen uw AI-client en MCP-servers.
Latentie simuleren
Als u wilt testen hoe uw toepassing trage MCP-serverreacties verwerkt, voegt u het LatencyPluginvolgende toe:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/rc.schema.json",
"plugins": [
{
"name": "LatencyPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "latencyPlugin"
},
{
"name": "MockStdioResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockStdioResponsePlugin"
}
],
"latencyPlugin": {
"minMs": 100,
"maxMs": 500
},
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json"
}
}
Volgende stap
Meer informatie over de functie STDIO-proxy: