Publish Forma Engine 0.3.0 source with documentation and CI
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
||||
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
||||
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
||||
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
||||
import {
|
||||
ListToolsRequestSchema,
|
||||
CallToolRequestSchema,
|
||||
ListResourcesRequestSchema,
|
||||
ReadResourceRequestSchema,
|
||||
ListPromptsRequestSchema,
|
||||
GetPromptRequestSchema,
|
||||
} from "@modelcontextprotocol/sdk/types.js";
|
||||
import { readFile } from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
const value = (f: string) => {
|
||||
const i = process.argv.indexOf(f);
|
||||
return i >= 0 ? process.argv[i + 1] : undefined;
|
||||
};
|
||||
const projectDir = path.resolve(value("--project") || "projects/MyGame"),
|
||||
endpoint = value("--url") || "http://127.0.0.1:4318/mcp",
|
||||
token =
|
||||
process.env.FORMA_MCP_TOKEN ||
|
||||
(await readFile(path.join(projectDir, ".mcp-token"), "utf8")).trim();
|
||||
const client = new Client({ name: "forma-stdio-bridge", version: "0.3.0" });
|
||||
await client.connect(
|
||||
new StreamableHTTPClientTransport(new URL(endpoint), {
|
||||
requestInit: { headers: { Authorization: "Bearer " + token } },
|
||||
}),
|
||||
);
|
||||
const server = new Server(
|
||||
{ name: "forma-engine", version: "0.3.0" },
|
||||
{ capabilities: { tools: {}, resources: {}, prompts: {} } },
|
||||
);
|
||||
server.setRequestHandler(ListToolsRequestSchema, () => client.listTools());
|
||||
server.setRequestHandler(CallToolRequestSchema, (r) =>
|
||||
client.callTool(r.params),
|
||||
);
|
||||
server.setRequestHandler(ListResourcesRequestSchema, () =>
|
||||
client.listResources(),
|
||||
);
|
||||
server.setRequestHandler(ReadResourceRequestSchema, (r) =>
|
||||
client.readResource(r.params),
|
||||
);
|
||||
server.setRequestHandler(ListPromptsRequestSchema, () => client.listPrompts());
|
||||
server.setRequestHandler(GetPromptRequestSchema, (r) =>
|
||||
client.getPrompt(r.params),
|
||||
);
|
||||
await server.connect(new StdioServerTransport());
|
||||
process.once(
|
||||
"SIGINT",
|
||||
() =>
|
||||
void Promise.all([client.close(), server.close()]).then(() =>
|
||||
process.exit(0),
|
||||
),
|
||||
);
|
||||
Reference in New Issue
Block a user