Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Nowoczesne tworzenie sztucznej inteligencji coraz częściej opiera się na lokalnych narzędziach komunikujących się za pośrednictwem stDIO, szczególnie serwerów protokołu MCP (Model Context Protocol). Te serwery odbierają żądania JSON-RPC za pośrednictwem narzędzia stdin i wysyłają odpowiedzi JSON-RPC za pośrednictwem funkcji stdout. Dzięki Dev Proxy można przechwytywać i symulować komunikację STDIO, aby testować aplikacje klienckie sztucznej inteligencji bez potrzeby uruchamiania właściwej logiki serwera.
Wymagania wstępne
Symulowanie odpowiedzi serwera MCP
Aby symulować odpowiedzi serwera MCP, należy użyć polecenia stdio z MockStdioResponsePlugin. Wtyczka przechwytuje stdin i zwraca pozorne odpowiedzi za pośrednictwem stdout lub stderr.
1. Tworzenie pliku konfiguracji serwera proxy dewelopera
devproxyrc.json Utwórz plik z następującą zawartością:
{
"$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. Tworzenie pliku makiety
stdio-mocks.json Utwórz plik z pozornymi odpowiedziami dla serwera MCP:
{
"$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. Uruchamianie serwera proxy deweloperskiego
Uruchom serwer proxy deweloperski za pomocą komendy STDIO, określając polecenie do uruchomienia:
devproxy stdio npx -y @modelcontextprotocol/server-filesystem
Serwer "Dev Proxy" uruchamia serwer MCP jako proces podrzędny i przechwytuje całą komunikację stdin/stdout. Gdy stdin zawiera tekst pasujący do makiety bodyFragment, serwer proxy dewelopera zwraca pozorną odpowiedź zamiast przekazywać żądanie do rzeczywistego serwera.
Użyj elementów zastępczych dla odpowiedzi dynamicznych
Aby utworzyć odpowiedzi dynamiczne zawierające wartości z żądania, użyj @stdin.body.* symboli zastępczych:
{
"mocks": [
{
"request": {
"bodyFragment": "echo"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"message\":\"You said: @stdin.body.params.text\"}}\n"
}
}
]
}
Dostępne symbole zastępcze:
| Placeholder | Description |
|---|---|
@stdin.body.id |
identyfikator żądania JSON-RPC |
@stdin.body.method |
nazwa metody JSON-RPC |
@stdin.body.params.* |
Dostęp do parametrów żądania |
Blokuj niezadokowane żądania
Aby zapobiec dotarciu niezamockowanych żądań do procesu podrzędnego, ustaw wartość blockUnmockedRequeststrue:
{
"mockStdioResponsePlugin": {
"mocksFile": "stdio-mocks.json",
"blockUnmockedRequests": true
}
}
Blokowanie niezadokowanych żądań jest przydatne, gdy chcesz w pełni wyśmiewać serwer MCP bez uruchamiania rzeczywistej logiki.
Ładowanie szablonowych odpowiedzi z plików
W przypadku złożonych odpowiedzi załaduj zawartość z plików zewnętrznych:
{
"mocks": [
{
"request": {
"bodyFragment": "initialize"
},
"response": {
"stdout": "@initialize-response.json"
}
}
]
}
Utwórz plik initialize-response.json:
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"Mock MCP Server","version":"1.0.0"}}}
Inspekcja ruchu STDIO w narzędziu DevTools
Po włączeniu DevToolsPlugin Dev Proxy, zostanie otwarty program Chrome DevTools, w którym można sprawdzić całą komunikację STDIO.
- Karta Sieć: Wyświetlanie wszystkich komunikatów stdin/stdout/stderr
-
Adresy URL: Komunikaty są wyświetlane jako
stdio://command-name -
Metody: żądania są wyświetlane jako
stdin -
Kody stanu:
stdoutsą wyświetlane jako 200,stderrjako 500 - Czas: Zobacz, jak długo trwało każde żądanie/odpowiedź
Użycie elementu DevToolsPlugin jest bezcenne w przypadku debugowania problemów z komunikacją między klientem sztucznej inteligencji a serwerami MCP.
Symulowanie opóźnienia
Aby sprawdzić, jak aplikacja obsługuje powolne odpowiedzi serwera MCP, dodaj element LatencyPlugin:
{
"$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"
}
}
Następny krok
Dowiedz się więcej o funkcji serwera proxy STDIO: