Squashed 'packages/mcp-typescript/' changes from dcc30be..e665be0

e665be0 Merge pull request #14 from modelcontextprotocol/justin/fix-race-condition
be9c1fe Merge branch 'main' into justin/fix-race-condition
36ba802 Merge pull request #17 from modelcontextprotocol/ashwin/capabilities
a1b8886 yarn build
7b718de Report errors when start() is called multiple times
83a43fd Protocol.connect() can automatically call Transport.start()
8d80cc5 Merge branch 'main' into justin/fix-race-condition
bcb4b21 add server capabilities derivation
e9c64fb Update tests and CLI
2b0599e Update server SSE transport
c39f808 Update client transports
87ae7ff Add start() to Transport interface

git-subtree-dir: packages/mcp-typescript
git-subtree-split: e665be068b9d2baa65f37fd7c2f69f68f77e57b9
This commit is contained in:
Ashwin Bhat 2024-10-16 16:12:48 -07:00
commit 23ca80ed66
No known key found for this signature in database

View file

@ -6,19 +6,25 @@ import { ReadBuffer, serializeMessage } from "../shared/stdio.js";
* This transport is only available in Node.js environments.
*/
export class StdioClientTransport {
constructor() {
constructor(server) {
this._abortController = new AbortController();
this._readBuffer = new ReadBuffer();
this._serverParams = server;
}
/**
* Spawns the server process and prepare to communicate with it.
* Starts the server process and prepares to communicate with it.
*/
spawn(server) {
async start() {
if (this._process) {
throw new Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");
}
return new Promise((resolve, reject) => {
var _a, _b, _c, _d;
this._process = spawn(server.command, (_a = server.args) !== null && _a !== void 0 ? _a : [], {
this._process = spawn(this._serverParams.command, (_a = this._serverParams.args) !== null && _a !== void 0 ? _a : [], {
// The parent process may have sensitive secrets in its env, so don't inherit it automatically.
env: server.env === undefined ? {} : { ...server.env },
env: this._serverParams.env === undefined
? {}
: { ...this._serverParams.env },
stdio: ["pipe", "pipe", "inherit"],
signal: this._abortController.signal,
});