@vibesdotdev/mcp 1.0.0-rc.1 → 1.0.0-rc.5
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.
- package/README.md +11 -11
- package/dist/adapters/index.d.ts +0 -2
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +0 -2
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/mcp/connection-identity.d.ts +18 -0
- package/dist/adapters/mcp/connection-identity.d.ts.map +1 -1
- package/dist/adapters/mcp/connection-identity.js +26 -0
- package/dist/adapters/mcp/connection-identity.js.map +1 -1
- package/dist/adapters/mcp/dual-era-handler.d.ts +22 -0
- package/dist/adapters/mcp/dual-era-handler.d.ts.map +1 -0
- package/dist/adapters/mcp/dual-era-handler.js +150 -0
- package/dist/adapters/mcp/dual-era-handler.js.map +1 -0
- package/dist/adapters/mcp/index.d.ts +0 -4
- package/dist/adapters/mcp/index.d.ts.map +1 -1
- package/dist/adapters/mcp/index.js +2 -10
- package/dist/adapters/mcp/index.js.map +1 -1
- package/dist/adapters/mcp/mcp-http-session.d.ts +1 -1
- package/dist/adapters/mcp/mcp-http-session.d.ts.map +1 -1
- package/dist/adapters/mcp/mcp-http-session.js +1 -1
- package/dist/adapters/mcp/mcp-http-session.js.map +1 -1
- package/dist/adapters/mcp/projection-doctor.d.ts.map +1 -1
- package/dist/adapters/mcp/projection-doctor.js +11 -4
- package/dist/adapters/mcp/projection-doctor.js.map +1 -1
- package/dist/adapters/mcp/projection.d.ts +1 -1
- package/dist/adapters/mcp/projection.d.ts.map +1 -1
- package/dist/adapters/mcp/projection.js.map +1 -1
- package/dist/adapters/mcp/sampling-context.d.ts.map +1 -1
- package/dist/adapters/mcp/sampling-context.js +1 -1
- package/dist/adapters/mcp/sampling-context.js.map +1 -1
- package/dist/adapters/mcp/sampling.d.ts +1 -1
- package/dist/adapters/mcp/sampling.d.ts.map +1 -1
- package/dist/adapters/mcp/server.consumer.d.ts +1 -1
- package/dist/adapters/mcp/server.consumer.d.ts.map +1 -1
- package/dist/adapters/mcp/server.consumer.js +59 -32
- package/dist/adapters/mcp/server.consumer.js.map +1 -1
- package/dist/adapters/mcp/server.d.ts +1 -22
- package/dist/adapters/mcp/server.d.ts.map +1 -1
- package/dist/adapters/mcp/server.js +232 -266
- package/dist/adapters/mcp/server.js.map +1 -1
- package/dist/adapters/mcp/startup-refusal.d.ts +2 -2
- package/dist/adapters/mcp/startup-refusal.d.ts.map +1 -1
- package/dist/adapters/mcp/startup-refusal.js +10 -10
- package/dist/adapters/mcp/startup-refusal.js.map +1 -1
- package/dist/adapters/mcp/stdio-relay.d.ts +1 -34
- package/dist/adapters/mcp/stdio-relay.d.ts.map +1 -1
- package/dist/adapters/mcp/stdio-relay.js +55 -71
- package/dist/adapters/mcp/stdio-relay.js.map +1 -1
- package/dist/adapters/mcp/tool-approval.d.ts +35 -0
- package/dist/adapters/mcp/tool-approval.d.ts.map +1 -0
- package/dist/adapters/mcp/tool-approval.js +156 -0
- package/dist/adapters/mcp/tool-approval.js.map +1 -0
- package/dist/adapters/mcp/tool-audit-live.d.ts +8 -12
- package/dist/adapters/mcp/tool-audit-live.d.ts.map +1 -1
- package/dist/adapters/mcp/tool-audit-live.js +9 -13
- package/dist/adapters/mcp/tool-audit-live.js.map +1 -1
- package/dist/adapters/mcp/tool-audit.d.ts +5 -0
- package/dist/adapters/mcp/tool-audit.d.ts.map +1 -1
- package/dist/adapters/mcp/tool-audit.js +73 -5
- package/dist/adapters/mcp/tool-audit.js.map +1 -1
- package/dist/adapters/mcp/trust-tag.d.ts.map +1 -1
- package/dist/adapters/mcp/trust-tag.js +5 -0
- package/dist/adapters/mcp/trust-tag.js.map +1 -1
- package/dist/adapters/mcp/web-handler.d.ts +6 -1
- package/dist/adapters/mcp/web-handler.d.ts.map +1 -1
- package/dist/adapters/mcp/web-handler.js +33 -13
- package/dist/adapters/mcp/web-handler.js.map +1 -1
- package/dist/adapters/transport-bun-http.d.ts +7 -3
- package/dist/adapters/transport-bun-http.d.ts.map +1 -1
- package/dist/adapters/transport-bun-http.js +5 -5
- package/dist/adapters/transport-bun-http.js.map +1 -1
- package/dist/adapters/types.d.ts +7 -9
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/zod-mcp.d.ts.map +1 -1
- package/dist/adapters/zod-mcp.js +4 -6
- package/dist/adapters/zod-mcp.js.map +1 -1
- package/dist/cli/mcp/audit/dev.audit.tools.impl.consumer.d.ts.map +1 -1
- package/dist/cli/mcp/audit/dev.audit.tools.impl.consumer.js +6 -1
- package/dist/cli/mcp/audit/dev.audit.tools.impl.consumer.js.map +1 -1
- package/dist/cli/surface-mcp/dev.mcp.serve.impl.consumer.d.ts.map +1 -1
- package/dist/cli/surface-mcp/dev.mcp.serve.impl.consumer.js +2 -0
- package/dist/cli/surface-mcp/dev.mcp.serve.impl.consumer.js.map +1 -1
- package/dist/config/mcp.config.descriptor.d.ts +28 -33
- package/dist/config/mcp.config.descriptor.d.ts.map +1 -1
- package/dist/config/mcp.config.descriptor.js +23 -19
- package/dist/config/mcp.config.descriptor.js.map +1 -1
- package/dist/docs/resources.docs.descriptor.d.ts.map +1 -1
- package/dist/docs/resources.docs.descriptor.js +43 -332
- package/dist/docs/resources.docs.descriptor.js.map +1 -1
- package/dist/docs/server.docs.descriptor.d.ts.map +1 -1
- package/dist/docs/server.docs.descriptor.js +71 -300
- package/dist/docs/server.docs.descriptor.js.map +1 -1
- package/dist/docs/tools.docs.descriptor.d.ts.map +1 -1
- package/dist/docs/tools.docs.descriptor.js +69 -244
- package/dist/docs/tools.docs.descriptor.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/mcp.runtime.plugin.d.ts.map +1 -1
- package/dist/mcp.runtime.plugin.js +3 -1
- package/dist/mcp.runtime.plugin.js.map +1 -1
- package/dist/svelte/tool-widgets/summary.d.ts +2 -2
- package/dist/svelte/tool-widgets/summary.d.ts.map +1 -1
- package/dist/svelte/tool-widgets/summary.js +9 -4
- package/dist/tools/vibes-context/schemas.d.ts +2 -1
- package/dist/tools/vibes-context/schemas.d.ts.map +1 -1
- package/dist/tools/vibes-context/schemas.js +22 -4
- package/dist/tools/vibes-context/schemas.js.map +1 -1
- package/dist/tools/vibes-context/vibes-context.descriptor.d.ts.map +1 -1
- package/dist/tools/vibes-context/vibes-context.descriptor.js +11 -1
- package/dist/tools/vibes-context/vibes-context.descriptor.js.map +1 -1
- package/dist/tools/vibes-context/vibes-context.impl.d.ts.map +1 -1
- package/dist/tools/vibes-context/vibes-context.impl.js +22 -11
- package/dist/tools/vibes-context/vibes-context.impl.js.map +1 -1
- package/dist/types.d.ts +0 -32
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/types.registry.d.ts +0 -59
- package/dist/types.registry.d.ts.map +1 -1
- package/dist/types.registry.js.map +1 -1
- package/package.json +62 -93
- package/dist/adapters/compatibility.d.ts +0 -20
- package/dist/adapters/compatibility.d.ts.map +0 -1
- package/dist/adapters/compatibility.js +0 -57
- package/dist/adapters/compatibility.js.map +0 -1
- package/dist/adapters/host-context.consumer.d.ts +0 -12
- package/dist/adapters/host-context.consumer.d.ts.map +0 -1
- package/dist/adapters/host-context.consumer.js +0 -10
- package/dist/adapters/host-context.consumer.js.map +0 -1
- package/dist/adapters/host-context.d.ts +0 -32
- package/dist/adapters/host-context.d.ts.map +0 -1
- package/dist/adapters/host-context.js +0 -17
- package/dist/adapters/host-context.js.map +0 -1
- package/dist/adapters/mcp/context.d.ts +0 -137
- package/dist/adapters/mcp/context.d.ts.map +0 -1
- package/dist/adapters/mcp/context.js +0 -230
- package/dist/adapters/mcp/context.js.map +0 -1
- package/dist/adapters/mcp/formatters.d.ts +0 -41
- package/dist/adapters/mcp/formatters.d.ts.map +0 -1
- package/dist/adapters/mcp/formatters.js +0 -102
- package/dist/adapters/mcp/formatters.js.map +0 -1
- package/dist/adapters/mcp/from-api-endpoint.d.ts +0 -59
- package/dist/adapters/mcp/from-api-endpoint.d.ts.map +0 -1
- package/dist/adapters/mcp/from-api-endpoint.js +0 -206
- package/dist/adapters/mcp/from-api-endpoint.js.map +0 -1
- package/dist/adapters/mcp/vibes-types.d.ts +0 -115
- package/dist/adapters/mcp/vibes-types.d.ts.map +0 -1
- package/dist/adapters/mcp/vibes-types.js +0 -7
- package/dist/adapters/mcp/vibes-types.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -20
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -19
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp.consumer.plugin.d.ts +0 -4
- package/dist/mcp.consumer.plugin.d.ts.map +0 -1
- package/dist/mcp.consumer.plugin.js +0 -19
- package/dist/mcp.consumer.plugin.js.map +0 -1
- package/dist/schemas/host-adapters.d.ts +0 -14
- package/dist/schemas/host-adapters.d.ts.map +0 -1
- package/dist/schemas/host-adapters.js +0 -7
- package/dist/schemas/host-adapters.js.map +0 -1
- package/dist/schemas/tool.d.ts +0 -8
- package/dist/schemas/tool.d.ts.map +0 -1
- package/dist/schemas/tool.js +0 -8
- package/dist/schemas/tool.js.map +0 -1
|
@@ -2,13 +2,13 @@ const descriptor = {
|
|
|
2
2
|
kind: 'docs/topic',
|
|
3
3
|
id: 'mcp.server',
|
|
4
4
|
title: 'MCP Server',
|
|
5
|
-
summary: 'Model Context Protocol server
|
|
5
|
+
summary: 'Model Context Protocol server composition, transport, and lifecycle',
|
|
6
6
|
body: {
|
|
7
7
|
type: 'markdown',
|
|
8
8
|
sourceType: 'raw',
|
|
9
9
|
source: `---
|
|
10
10
|
title: MCP Server
|
|
11
|
-
summary: Model Context Protocol server
|
|
11
|
+
summary: Model Context Protocol server composition, transport, and lifecycle
|
|
12
12
|
tags: [mcp, server, transport, lifecycle, protocol]
|
|
13
13
|
parent: mcp
|
|
14
14
|
order: 1
|
|
@@ -21,343 +21,114 @@ man:
|
|
|
21
21
|
seeAlso: ["mcp.tools", "dev.mcp.start", "dev.mcp.serve"]
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
-
The
|
|
24
|
+
The MCP server projects the runtime's \`tools/tool\` catalog over the Model
|
|
25
|
+
Context Protocol. One adapter owns tool registration, session admission, error
|
|
26
|
+
projection and trust framing; the surface owns only its transport and lifecycle.
|
|
25
27
|
|
|
26
|
-
##
|
|
28
|
+
## Composition
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
Compose \`@vibesdotdev/mcp/plugin\` on every MCP host. It registers the protocol
|
|
31
|
+
kinds, docs, configuration and the universal \`vibes-context\` orientation loader.
|
|
32
|
+
Adapter-only hosts compose \`./client/plugin\`.
|
|
29
33
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
│ (Claude, etc.) │
|
|
34
|
-
└─────────────────┘
|
|
35
|
-
↓
|
|
36
|
-
┌─────────────────┐
|
|
37
|
-
│ MCP Server │ ←→ Runtime (tools/resources/prompts)
|
|
38
|
-
│ (@vibesdotdev/mcp)
|
|
39
|
-
└─────────────────┘
|
|
40
|
-
\`\`\`
|
|
41
|
-
|
|
42
|
-
## Transport modes
|
|
34
|
+
The consumer serve, the cloud Worker and the shared stdio host use the same
|
|
35
|
+
composition. There is no consumer-specific MCP plugin and no root host-adapter
|
|
36
|
+
compatibility factory.
|
|
43
37
|
|
|
44
|
-
|
|
38
|
+
## Transports
|
|
45
39
|
|
|
46
|
-
|
|
40
|
+
Stdio and HTTP use the tool-aware adapter:
|
|
47
41
|
|
|
48
42
|
\`\`\`ts
|
|
49
43
|
import { createMcpAdapter } from '@vibesdotdev/mcp/adapters/mcp';
|
|
50
44
|
|
|
51
|
-
const adapter = createMcpAdapter(runtime, { mode: 'stdio'
|
|
45
|
+
const adapter = createMcpAdapter(runtime, { mode: 'stdio' }, logger);
|
|
52
46
|
await adapter.start();
|
|
53
|
-
// On host shutdown:
|
|
54
47
|
await adapter.shutdown();
|
|
55
48
|
\`\`\`
|
|
56
49
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
### HTTP transport (Web Standard streamable HTTP)
|
|
60
|
-
|
|
61
|
-
Bun-native HTTP server using Web Standard APIs (not SSE):
|
|
50
|
+
A serverless or edge host uses the Web Standard handler:
|
|
62
51
|
|
|
63
52
|
\`\`\`ts
|
|
64
|
-
import {
|
|
65
|
-
import { createMcpAuthenticator } from '@vibesdotdev/mcp';
|
|
66
|
-
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
67
|
-
import { getRuntimeHttpListener } from '@vibesdotdev/kernel';
|
|
53
|
+
import { createMcpWebStandardHandler } from '@vibesdotdev/mcp/adapters/mcp/web-handler';
|
|
68
54
|
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
buildServer: () => new McpServer({ name: 'my-server', version: '1.0.0' }),
|
|
74
|
-
logger: myLogger,
|
|
75
|
-
lifecycle: runtime.lifecycle,
|
|
76
|
-
authenticate: createMcpAuthenticator({ remote: true, scope: 'mcp' })
|
|
55
|
+
const handle = createMcpWebStandardHandler(runtime, {
|
|
56
|
+
mode: 'http',
|
|
57
|
+
serverName: 'vibes',
|
|
58
|
+
logger
|
|
77
59
|
});
|
|
78
|
-
|
|
79
|
-
await server.start();
|
|
80
60
|
\`\`\`
|
|
81
61
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
62
|
+
The handler serves both protocol eras on one endpoint. A 2026-07-28 request
|
|
63
|
+
carries its per-request \`_meta\` envelope and is served statelessly, with one
|
|
64
|
+
fresh server instance and no session id. A 2025-era request keeps the legacy
|
|
65
|
+
\`initialize\` handshake, \`Mcp-Session-Id\` continuity and its SSE streams.
|
|
66
|
+
The same split applies to stdio: the SDK's \`serveStdio\` pins one factory
|
|
67
|
+
instance per connection and serves either era.
|
|
85
68
|
|
|
86
|
-
|
|
69
|
+
## Identity
|
|
87
70
|
|
|
88
|
-
|
|
71
|
+
\`serverName\` is host-owned. The Vibes hosts pass \`vibes\`; the framework
|
|
72
|
+
default is neutral. \`serverVersion\` defaults to this package's version. The
|
|
73
|
+
\`vibes://diagnostics/projection-birth\` resource carries the build provenance
|
|
74
|
+
and catalog digest.
|
|
89
75
|
|
|
90
|
-
##
|
|
76
|
+
## Tool catalog
|
|
91
77
|
|
|
92
|
-
|
|
78
|
+
The adapter folds \`tools/tool\` once per catalog revision, applies the selected
|
|
79
|
+
preset and registers the selected descriptors. A settled fold excludes tools
|
|
80
|
+
whose loader is unavailable; a required tool without a loader refuses to serve.
|
|
81
|
+
The catalog is not mutated per connection.
|
|
93
82
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
83
|
+
The long tail is discoverable through \`tool-search\`, readable through
|
|
84
|
+
\`tool-help\` and callable through \`tool-call\`. The bridge refuses nested write
|
|
85
|
+
actions; the target tool's own host approval path owns those.
|
|
97
86
|
|
|
98
|
-
|
|
87
|
+
## Sessions and approval
|
|
99
88
|
|
|
100
|
-
|
|
89
|
+
Session owns durable participants and authority. The \`session\` tool mints and
|
|
90
|
+
binds explicit handles; the transport does not invent a role or a capability
|
|
91
|
+
ceiling. A harness is a transport, not a role.
|
|
101
92
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
93
|
+
\`requiresApproval: true\` is enforced through the SDK's multi-round-trip
|
|
94
|
+
input seam. A 2026-07-28 client receives \`input_required\` with a form
|
|
95
|
+
elicitation; a 2025-era client receives the same flow through the real
|
|
96
|
+
\`elicitation/create\` legacy shim. The approval is bound to a signed
|
|
97
|
+
\`requestState\`, so a caller cannot pre-supply an acceptance without the
|
|
98
|
+
prompt. A client without elicitation is refused
|
|
99
|
+
\`UNAVAILABLE / tool-approval-unavailable\`; a decline is
|
|
100
|
+
\`PERMISSION_DENIED / tool-approval-declined\`.
|
|
105
101
|
|
|
106
|
-
|
|
102
|
+
## Configuration
|
|
107
103
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
Gracefully shuts down server.
|
|
115
|
-
|
|
116
|
-
### Restarting server
|
|
117
|
-
|
|
118
|
-
\`\`\`bash
|
|
119
|
-
vibes dev mcp restart
|
|
120
|
-
\`\`\`
|
|
121
|
-
|
|
122
|
-
Stops and restarts server (picks up config changes).
|
|
123
|
-
|
|
124
|
-
## Server configuration
|
|
125
|
-
|
|
126
|
-
### MCP adapter options
|
|
127
|
-
|
|
128
|
-
\`\`\`ts
|
|
129
|
-
import type { McpAdapterOptions } from '@vibesdotdev/mcp';
|
|
130
|
-
import { createMcpAdapter } from '@vibesdotdev/mcp/adapters/mcp';
|
|
131
|
-
import { createMcpAuthenticator } from '@vibesdotdev/mcp';
|
|
132
|
-
|
|
133
|
-
// \`runtime\` is the VibesRuntime handed to your host entry. The token is a credential.
|
|
134
|
-
const token = await runtime.resolveCredential({ source: 'secret', key: 'MCP_TOKEN' });
|
|
135
|
-
if (!token.ok) throw token.error;
|
|
136
|
-
|
|
137
|
-
const options: McpAdapterOptions = {
|
|
138
|
-
mode: 'http', // 'stdio' | 'http'
|
|
139
|
-
mcpClientId: 'claude-desktop', // Client identifier (optional)
|
|
140
|
-
logLevel: 'info', // LogLevel (optional)
|
|
141
|
-
toolExecutionTimeoutMs: 30_000, // Per-tool timeout (optional)
|
|
142
|
-
port: 3001, // http mode only
|
|
143
|
-
authenticate: createMcpAuthenticator({
|
|
144
|
-
apiKeys: [token.value],
|
|
145
|
-
scope: 'mcp'
|
|
146
|
-
}) // optional; omit for unauthenticated
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
const server = createMcpAdapter(runtime, options, logger);
|
|
150
|
-
\`\`\`
|
|
151
|
-
|
|
152
|
-
### Capability negotiation
|
|
153
|
-
|
|
154
|
-
Server advertises capabilities during handshake:
|
|
155
|
-
|
|
156
|
-
\`\`\`ts
|
|
157
|
-
capabilities: {
|
|
158
|
-
tools: { listChanged: true }, // Tool discovery
|
|
159
|
-
resources: { listChanged: true }, // Resource access
|
|
160
|
-
prompts: { listChanged: true } // Prompt templates
|
|
161
|
-
}
|
|
162
|
-
\`\`\`
|
|
163
|
-
|
|
164
|
-
Clients can request specific capabilities.
|
|
165
|
-
|
|
166
|
-
## Tool registration
|
|
167
|
-
|
|
168
|
-
Tools are auto-discovered from runtime:
|
|
169
|
-
|
|
170
|
-
\`\`\`ts
|
|
171
|
-
const descriptors = runtime.query('tools/tool').descriptors();
|
|
172
|
-
for (const descriptor of descriptors) {
|
|
173
|
-
server.registerTool(
|
|
174
|
-
descriptor.id,
|
|
175
|
-
{
|
|
176
|
-
title: descriptor.name,
|
|
177
|
-
description: descriptor.description,
|
|
178
|
-
inputSchema: descriptor.schemas.input,
|
|
179
|
-
outputSchema: descriptor.schemas.output
|
|
180
|
-
},
|
|
181
|
-
async (args) => {
|
|
182
|
-
return invokeTool({ runtime, toolId: descriptor.id, input: args });
|
|
183
|
-
}
|
|
184
|
-
);
|
|
185
|
-
}
|
|
186
|
-
\`\`\`
|
|
187
|
-
|
|
188
|
-
## Resource registration
|
|
189
|
-
|
|
190
|
-
Resources provide read-only data access:
|
|
191
|
-
|
|
192
|
-
\`\`\`ts
|
|
193
|
-
server.registerResource(
|
|
194
|
-
'workspace-files',
|
|
195
|
-
'file://workspace/**',
|
|
196
|
-
{
|
|
197
|
-
description: 'Workspace file contents',
|
|
198
|
-
mimeType: 'text/plain'
|
|
199
|
-
},
|
|
200
|
-
async (uri) => {
|
|
201
|
-
const content = await fs.read(uri.pathname);
|
|
202
|
-
return {
|
|
203
|
-
contents: [{
|
|
204
|
-
uri: uri.href,
|
|
205
|
-
mimeType: 'text/plain',
|
|
206
|
-
text: content
|
|
207
|
-
}]
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
);
|
|
211
|
-
\`\`\`
|
|
212
|
-
|
|
213
|
-
## Prompt registration
|
|
214
|
-
|
|
215
|
-
Prompts provide templated messages:
|
|
216
|
-
|
|
217
|
-
\`\`\`ts
|
|
218
|
-
server.registerPrompt(
|
|
219
|
-
'code-review',
|
|
220
|
-
{
|
|
221
|
-
description: 'Review code for best practices',
|
|
222
|
-
argsSchema: {
|
|
223
|
-
filePath: z.string().describe('File to review')
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
async (args) => {
|
|
227
|
-
const code = await fs.read(args.filePath);
|
|
228
|
-
return {
|
|
229
|
-
messages: [{
|
|
230
|
-
role: 'user',
|
|
231
|
-
content: {
|
|
232
|
-
type: 'text',
|
|
233
|
-
text: \`Review this code:\\n\\n\${code}\`
|
|
234
|
-
}
|
|
235
|
-
}]
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
);
|
|
239
|
-
\`\`\`
|
|
104
|
+
The \`mcp\` config manifest drives the host defaults. \`approvalStateSecret\`
|
|
105
|
+
names the runtime credential that keys approval \`requestState\` (default
|
|
106
|
+
\`MCP_APPROVAL_STATE_KEY\`); when no secret is configured, approval uses a
|
|
107
|
+
per-process key and fails closed across process boundaries. \`sampling:
|
|
108
|
+
'transport' | 'off'\` controls legacy transport sampling; a 2026-07-28
|
|
109
|
+
connection always refuses the removed server-to-client sampling channel.
|
|
240
110
|
|
|
241
111
|
## Authentication
|
|
242
112
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
\`\`\`ts
|
|
248
|
-
import { createMcpAuthenticator } from '@vibesdotdev/mcp';
|
|
249
|
-
|
|
250
|
-
const token = await runtime.resolveCredential({ source: 'secret', key: 'MCP_TOKEN' });
|
|
251
|
-
if (!token.ok) throw token.error;
|
|
252
|
-
|
|
253
|
-
const authenticate = createMcpAuthenticator({
|
|
254
|
-
apiKeys: [token.value],
|
|
255
|
-
scope: 'mcp'
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
// Pass to createBunMcpServer:
|
|
259
|
-
const server = createBunMcpServer({ ..., authenticate });
|
|
260
|
-
|
|
261
|
-
// Or pass to createMcpAdapter:
|
|
262
|
-
const adapter = createMcpAdapter(runtime, { ..., authenticate }, logger);
|
|
263
|
-
\`\`\`
|
|
264
|
-
|
|
265
|
-
### Remote validation (cloud mode)
|
|
266
|
-
|
|
267
|
-
For cloud deployments, configure the host-owned authentication API endpoint:
|
|
268
|
-
|
|
269
|
-
\`\`\`ts
|
|
270
|
-
const authenticate = createMcpAuthenticator({
|
|
271
|
-
remote: true,
|
|
272
|
-
scope: 'mcp',
|
|
273
|
-
authApiBaseUrl: 'https://auth.example.test' // supplied by host composition
|
|
274
|
-
});
|
|
275
|
-
\`\`\`
|
|
113
|
+
\`createMcpAuthenticator\` validates an API key or OAuth token against the
|
|
114
|
+
host-supplied validator. The cloud edge authenticates before routing to a
|
|
115
|
+
session or Durable Object. Local stdio is the user's own process.
|
|
276
116
|
|
|
277
117
|
## Logging
|
|
278
118
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
const logger = getLogger('mcp', runtime);
|
|
285
|
-
logger.info('MCP server started', {
|
|
286
|
-
transport: 'stdio',
|
|
287
|
-
capabilities: ['tools', 'resources']
|
|
288
|
-
});
|
|
289
|
-
\`\`\`
|
|
290
|
-
|
|
291
|
-
**Log levels:**
|
|
292
|
-
- \`debug\` — Protocol messages
|
|
293
|
-
- \`info\` — Lifecycle events
|
|
294
|
-
- \`warn\` — Non-critical errors
|
|
295
|
-
- \`error\` — Critical failures
|
|
296
|
-
|
|
297
|
-
## WRONG: Manual protocol handling
|
|
298
|
-
|
|
299
|
-
\`\`\`ts
|
|
300
|
-
// ❌ NEVER — use createMcpAdapter instead
|
|
301
|
-
const server = new McpServer({ name: 'custom', version: '1.0' });
|
|
302
|
-
// Manual tool registration...
|
|
303
|
-
\`\`\`
|
|
304
|
-
|
|
305
|
-
## RIGHT: Runtime-integrated server
|
|
306
|
-
|
|
307
|
-
\`\`\`ts
|
|
308
|
-
// ✅ Auto-discovers tools/resources/prompts
|
|
309
|
-
const server = createMcpAdapter(runtime, options, logger);
|
|
310
|
-
\`\`\`
|
|
311
|
-
|
|
312
|
-
## MCP client configuration
|
|
313
|
-
|
|
314
|
-
### Claude Desktop
|
|
315
|
-
|
|
316
|
-
\`\`\`json
|
|
317
|
-
{
|
|
318
|
-
"mcpServers": {
|
|
319
|
-
"vibes": {
|
|
320
|
-
"command": "vibes",
|
|
321
|
-
"args": ["dev", "mcp", "start"]
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
\`\`\`
|
|
119
|
+
Every logger is the runtime's (\`getLogger(id, runtime)\`), never a module-level
|
|
120
|
+
default. One INFO line records a catalog fold; per-call stages are DEBUG. A
|
|
121
|
+
session start, a registration failure and a degraded surface are the events
|
|
122
|
+
that deserve INFO/WARN/ERROR.
|
|
326
123
|
|
|
327
|
-
|
|
124
|
+
## Verify
|
|
328
125
|
|
|
329
|
-
\`\`\`
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
"type": "stdio",
|
|
334
|
-
"command": "vibes",
|
|
335
|
-
"args": ["dev", "mcp", "serve", "--mode", "stdio", "--client", "claude"]
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
}
|
|
126
|
+
\`\`\`bash
|
|
127
|
+
vibes dev audit tools # policy reachability + schema/annotation findings
|
|
128
|
+
vibes dev audit tools --live # real serve; served vs authored wire
|
|
129
|
+
vibes dev audit tools --doctor # birth digest, canary, host attestation
|
|
339
130
|
\`\`\`
|
|
340
131
|
|
|
341
|
-
The stdio relay attaches to the shared runtime host, so there is no fixed URL
|
|
342
|
-
to configure. The HTTP transport's port is derived per workspace (there is no
|
|
343
|
-
fixed \`3001\`) — run \`vibes dev mcp status\` to see the port the current
|
|
344
|
-
workspace is serving on before pointing an HTTP client at it. \`--client\` is
|
|
345
|
-
the legacy catalog/harness selector; \`vibes dev mcp serve --help\` lists the
|
|
346
|
-
newer \`--preset\` / \`--harness\` / \`--agent\` knobs.
|
|
347
|
-
|
|
348
|
-
## Monitoring
|
|
349
|
-
|
|
350
|
-
Adapters expose start() and shutdown(). They do not expose an event emitter.
|
|
351
|
-
Pass the runtime logger to observe protocol and listener failures. For tool-call
|
|
352
|
-
instrumentation, supply prepareToolCallContext on the tool-aware adapter; it
|
|
353
|
-
receives the canonical tool id, validated input and prepared context before
|
|
354
|
-
invocation. Return the context to preserve the serving authority.
|
|
355
|
-
|
|
356
|
-
Use the projection doctor and live tool audit to compare the observed wire
|
|
357
|
-
catalog with authored descriptors. They report measured bytes, schema loss and
|
|
358
|
-
description drift; policy audit findings and high-severity wire findings retain
|
|
359
|
-
their distinct verdicts.
|
|
360
|
-
|
|
361
132
|
:::card{title="See also"}
|
|
362
133
|
- [\`mcp.tools\`](mcp.tools) — MCP tool exposure
|
|
363
134
|
- [\`mcp.resources\`](mcp.resources) — MCP resources
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.docs.descriptor.js","sourceRoot":"","sources":["../../src/docs/server.docs.descriptor.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAwB;IACtC,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"server.docs.descriptor.js","sourceRoot":"","sources":["../../src/docs/server.docs.descriptor.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAwB;IACtC,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,qEAAqE;IAC9E,IAAI,EAAE;QACJ,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiIX;KACE;IACD,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC;IAC7D,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;IAClC,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;IAC/B,GAAG,EAAE;QACH,IAAI,EAAE,6CAA6C;QACnD,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,eAAe,CAAC;KACzD;IACD,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.docs.descriptor.d.ts","sourceRoot":"","sources":["../../src/docs/tools.docs.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,QAAA,MAAM,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"tools.docs.descriptor.d.ts","sourceRoot":"","sources":["../../src/docs/tools.docs.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,QAAA,MAAM,UAAU,EAAE,mBA0IjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|