@pancake-apps/server 0.0.0-snapshot-20260125200133

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,104 @@
1
+ import { createAdapter } from './chunk-CVG3DAN6.js';
2
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema } from '@modelcontextprotocol/sdk/types.js';
5
+
6
+ async function startStdioServer(config) {
7
+ const adapter = createAdapter(config.protocol ?? "mcp");
8
+ const server = new Server(
9
+ {
10
+ name: config.name,
11
+ version: config.version
12
+ },
13
+ {
14
+ capabilities: {
15
+ tools: {},
16
+ resources: {}
17
+ }
18
+ }
19
+ );
20
+ server.setRequestHandler(
21
+ ListToolsRequestSchema,
22
+ async () => {
23
+ return {
24
+ tools: Array.from(config.tools.values()).map((tool) => {
25
+ const uiUri = tool.ui ? getUIResourceUri(tool.name, tool.category) : void 0;
26
+ const meta = adapter.buildToolMeta(tool, uiUri);
27
+ return {
28
+ name: tool.name,
29
+ description: tool.description,
30
+ inputSchema: tool.inputSchema,
31
+ annotations: meta.annotations,
32
+ _meta: tool.ui ? meta._meta : void 0
33
+ };
34
+ })
35
+ };
36
+ }
37
+ );
38
+ server.setRequestHandler(
39
+ CallToolRequestSchema,
40
+ async (request) => {
41
+ const { name, arguments: args = {} } = request.params;
42
+ const result = await config.executeTool(name, args);
43
+ return {
44
+ content: [
45
+ {
46
+ type: "text",
47
+ text: JSON.stringify(result)
48
+ }
49
+ ],
50
+ structuredContent: result
51
+ };
52
+ }
53
+ );
54
+ server.setRequestHandler(
55
+ ListResourcesRequestSchema,
56
+ async () => {
57
+ return {
58
+ resources: Array.from(config.uiResources.values()).map((resource) => {
59
+ const meta = adapter.buildUIResourceMeta(resource.definition);
60
+ return {
61
+ uri: resource.uri,
62
+ name: resource.name,
63
+ mimeType: meta.mimeType,
64
+ _meta: meta._meta
65
+ };
66
+ })
67
+ };
68
+ }
69
+ );
70
+ server.setRequestHandler(
71
+ ReadResourceRequestSchema,
72
+ async (request) => {
73
+ const { uri } = request.params;
74
+ const resource = config.uiResources.get(uri);
75
+ if (!resource) {
76
+ throw new Error(`Resource not found: ${uri}`);
77
+ }
78
+ return {
79
+ contents: [
80
+ {
81
+ uri,
82
+ mimeType: "text/html",
83
+ text: resource.definition.html
84
+ }
85
+ ]
86
+ };
87
+ }
88
+ );
89
+ const transport = new StdioServerTransport();
90
+ await server.connect(transport);
91
+ return {
92
+ close: async () => {
93
+ await server.close();
94
+ }
95
+ };
96
+ }
97
+ function getUIResourceUri(toolName, category) {
98
+ const name = toolName.replace(/^(view|action|data|tool):/, "");
99
+ return `pancake://ui/${category}/${name}`;
100
+ }
101
+
102
+ export { startStdioServer };
103
+ //# sourceMappingURL=stdio-ZTUR5PV4.js.map
104
+ //# sourceMappingURL=stdio-ZTUR5PV4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/stdio.ts"],"names":[],"mappings":"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","file":"stdio-ZTUR5PV4.js","sourcesContent":["import { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport {\n ListToolsRequestSchema,\n CallToolRequestSchema,\n ListResourcesRequestSchema,\n ReadResourceRequestSchema,\n} from '@modelcontextprotocol/sdk/types.js';\nimport type { InternalTool } from '../types/tool.js';\nimport type { UIDefinition, Protocol } from '../types/protocol.js';\nimport { createAdapter } from '../adapters/index.js';\n\n/**\n * UI resource for serving\n */\ninterface UIResource {\n name: string;\n uri: string;\n definition: UIDefinition;\n}\n\n/**\n * Stdio server configuration\n */\ninterface StdioServerConfig {\n name: string;\n version: string;\n tools: Map<string, InternalTool>;\n uiResources: Map<string, UIResource>;\n executeTool: (toolName: string, input: unknown, metadata?: Record<string, unknown>) => Promise<unknown>;\n /** Protocol for metadata generation (default: 'mcp') */\n protocol?: Protocol | undefined;\n}\n\n/**\n * Start the MCP server using stdio transport\n */\nexport async function startStdioServer(\n config: StdioServerConfig\n): Promise<{ close: () => Promise<void> }> {\n // Create adapter based on configured protocol (no request headers in stdio)\n const adapter = createAdapter(config.protocol ?? 'mcp');\n\n const server = new Server(\n {\n name: config.name,\n version: config.version,\n },\n {\n capabilities: {\n tools: {},\n resources: {},\n },\n }\n );\n\n // Handle list tools\n server.setRequestHandler(\n ListToolsRequestSchema,\n async () => {\n return {\n tools: Array.from(config.tools.values()).map((tool) => {\n const uiUri = tool.ui ? getUIResourceUri(tool.name, tool.category) : undefined;\n const meta = adapter.buildToolMeta(tool, uiUri);\n\n return {\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n annotations: meta.annotations,\n _meta: tool.ui ? meta._meta : undefined,\n };\n }),\n };\n }\n );\n\n // Handle call tool\n server.setRequestHandler(\n CallToolRequestSchema,\n async (request) => {\n const { name, arguments: args = {} } = request.params;\n const result = await config.executeTool(name, args);\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(result),\n },\n ],\n structuredContent: result,\n };\n }\n );\n\n // Handle list resources\n server.setRequestHandler(\n ListResourcesRequestSchema,\n async () => {\n return {\n resources: Array.from(config.uiResources.values()).map((resource) => {\n const meta = adapter.buildUIResourceMeta(resource.definition);\n\n return {\n uri: resource.uri,\n name: resource.name,\n mimeType: meta.mimeType,\n _meta: meta._meta,\n };\n }),\n };\n }\n );\n\n // Handle read resource\n server.setRequestHandler(\n ReadResourceRequestSchema,\n async (request) => {\n const { uri } = request.params;\n const resource = config.uiResources.get(uri);\n\n if (!resource) {\n throw new Error(`Resource not found: ${uri}`);\n }\n\n return {\n contents: [\n {\n uri,\n mimeType: 'text/html',\n text: resource.definition.html,\n },\n ],\n };\n }\n );\n\n // Connect to stdio transport\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n return {\n close: async () => {\n await server.close();\n },\n };\n}\n\n/**\n * Get the UI resource URI for a tool\n */\nfunction getUIResourceUri(toolName: string, category: string): string {\n const name = toolName.replace(/^(view|action|data|tool):/, '');\n return `pancake://ui/${category}/${name}`;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export { createTunnel, isTunnelProviderAvailable } from './chunk-72LRTGM5.js';
2
+ //# sourceMappingURL=tunnel-AGGQW6IC.js.map
3
+ //# sourceMappingURL=tunnel-AGGQW6IC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tunnel-AGGQW6IC.js"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@pancake-apps/server",
3
+ "version": "0.0.0-snapshot-20260125200133",
4
+ "description": "Pancake SDK server framework for building AI tool UIs",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.cjs",
13
+ "types": "./dist/index.d.ts"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "dependencies": {
20
+ "@modelcontextprotocol/sdk": "^1.0.0",
21
+ "express": "^5.0.0",
22
+ "zod": "^3.24.0",
23
+ "zod-to-json-schema": "^3.24.0"
24
+ },
25
+ "devDependencies": {
26
+ "@types/express": "^5.0.0",
27
+ "tsup": "^8.0.0",
28
+ "typescript": "^5.9.0",
29
+ "vitest": "^4.0.0"
30
+ },
31
+ "peerDependencies": {
32
+ "zod": "^3.20.0"
33
+ },
34
+ "engines": {
35
+ "node": ">=18.0.0"
36
+ },
37
+ "keywords": [
38
+ "mcp",
39
+ "ai",
40
+ "tools",
41
+ "openai",
42
+ "chatgpt",
43
+ "claude"
44
+ ],
45
+ "license": "MIT",
46
+ "homepage": "https://github.com/pancakeapps/pancake/tree/main/packages/server",
47
+ "repository": {
48
+ "type": "git",
49
+ "url": "git+https://github.com/pancakeapps/pancake.git",
50
+ "directory": "packages/server"
51
+ },
52
+ "bugs": {
53
+ "url": "https://github.com/pancakeapps/pancake/issues"
54
+ },
55
+ "publishConfig": {
56
+ "access": "public"
57
+ },
58
+ "scripts": {
59
+ "build": "tsup",
60
+ "dev": "tsup --watch",
61
+ "test": "vitest run",
62
+ "test:watch": "vitest",
63
+ "typecheck": "tsc --noEmit",
64
+ "clean": "rm -rf dist"
65
+ }
66
+ }