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.
Symuluje odpowiedzi dla aplikacji opartych na modelu STDIO, takich jak serwery PROTOKOŁU MCP (Model Context Protocol).
Definicja wystąpienia wtyczki
{
"name": "MockStdioResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mockStdioResponsePlugin"
}
Przykład konfiguracji
{
"$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"
}
],
"mockStdioResponsePlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocksFile": "stdio-mocks.json"
}
}
Właściwości konfiguracji
| Majątek | Description | Default |
|---|---|---|
mocksFile |
Ścieżka do pliku zawierającego odpowiedzi pozorne STDIO | stdio-mocks.json |
blockUnmockedRequests |
Gdy trueprogram uniemożliwia niedopasowane stdin dotarcie do procesu podrzędnego |
false |
Opcje wiersza polecenia
| Name | Description | Default |
|---|---|---|
--no-stdio-mocks |
Wyłączanie ładowania odpowiedzi pozornych STDIO | false |
--stdio-mocks-file |
Ścieżka do pliku zawierającego odpowiedzi pozorne STDIO | - |
Przykłady plików makiety
Poniżej przedstawiono przykłady obiektów pozornych STDIO.
Odpowiadanie za pomocą stdout
Odpowiedz na stdin zawierające określony tekst z odpowiedzią stdout.
Plik: stdio-mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "tools/list"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{\"tools\":[]}}\n"
}
}
]
}
Odpowiadanie za pomocą narzędzia stderr
Odpowiedz na stdin za pomocą komunikatu o błędzie w stderr.
Plik: stdio-mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "invalid_method"
},
"response": {
"stderr": "Error: Unknown method\n"
}
}
]
}
Używanie symboli zastępczych ze stdin
Użyj @stdin.body.* symboli zastępczych, aby dynamicznie dołączać wartości ze stdin w odpowiedzi.
Plik: stdio-mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "tools/list"
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"tools\":[]}}\n"
}
}
]
}
Dostępne są następujące symbole zastępcze:
| Placeholder | Description |
|---|---|
@stdin.body.id |
identyfikator żądania JSON-RPC |
@stdin.body.method |
nazwa metody JSON-RPC |
@stdin.body.params.name |
Dostęp do właściwości zagnieżdżonych |
Ładowanie odpowiedzi z pliku
Załaduj pozorną zawartość odpowiedzi z pliku zewnętrznego przy użyciu @filename składni.
Plik: stdio-mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "initialize"
},
"response": {
"stdout": "@initialize-response.json"
}
}
]
}
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"}}}
Odpowiedz w n-tym wystąpieniu
Odpowiedź dopiero po przechwyceniu pasującego stdin po raz n..
Plik: stdio-mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/mockstdioresponseplugin.schema.json",
"mocks": [
{
"request": {
"bodyFragment": "tools/call",
"nth": 2
},
"response": {
"stdout": "{\"jsonrpc\":\"2.0\",\"id\":@stdin.body.id,\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"Operation completed\"}]}}\n"
}
}
]
}
Makietuje właściwości pliku
| Majątek | Description | Wymagane |
|---|---|---|
request |
Zażądaj obiektu definiującego element stdin do dopasowania | yes |
response |
Obiekt odpowiedzi definiujący odpowiedź do zwrócenia | yes |
Obiekt żądania
Każde żądanie ma następujące właściwości:
| Majątek | Description | Wymagane | Wartość domyślna | Przykładowa wartość |
|---|---|---|---|---|
bodyFragment |
Ciąg, który powinien być obecny w stdin | yes | tools/list |
|
nth |
Odpowiadaj tylko podczas przechwytywania żądania przez n-ty | no | 2 |
Obiekt odpowiedzi
Każda odpowiedź ma następujące właściwości:
| Majątek | Description | Wymagane | Wartość domyślna | Przykładowa wartość |
|---|---|---|---|---|
stdout |
Zawartość do wysłania do elementu stdout | no | empty | {"result": "ok"}\n |
stderr |
Zawartość do wysłania do narzędzia stderr | no | empty | Error: Something went wrong\n |
Uwagi odpowiedzi
Jeśli chcesz załadować zawartość odpowiedzi z pliku, ustaw stdout właściwość or stderr na wartość ciągu, która zaczyna się @ od ścieżki pliku w stosunku do pliku makiety. Na przykład @response.json zwraca zawartość przechowywaną w response.json pliku w tym samym katalogu co plik makiety.
Aby dynamicznie dołączać wartości ze stdin w odpowiedzi, użyj @stdin.body.* symboli zastępczych. Na przykład @stdin.body.id zwraca wartość id właściwości ze stdin JSON.
Uwagi dotyczące wtyczki
Ta wtyczka jest przeznaczona do użycia z poleceniemstdio przechwytywania i pozorowania komunikacji STDIO z lokalnymi plikami wykonywalnymi. Jest to przydatne do testowania i debugowania serwerów protokołu MCP (Model Context Protocol) i innych aplikacji opartych na stDIO.
Gdy blockUnmockedRequests jest ustawiona wartość true, każdy stdin, który nie pasuje do makiety, jest używany i nie jest przekazywany do procesu podrzędnego. Blokowanie niezadokowanych żądań jest przydatne, gdy chcesz w pełni wyśmiewać zachowanie pliku wykonywalnego bez uruchamiania rzeczywistej logiki.