Repository navigation
feat(mcp): add askable-mcp stdio CLI for command-based MCP clients - #349
Merged
Merged
Conversation
Many MCP clients (Claude Desktop, Cursor) launch a stdio command rather than connecting to an HTTP URL. Adds a zero-new-dependency 'askable-mcp' binary that serves the askable context tools/resources over stdio, backed by a remote endpoint (--url) or a static packet file (--file). Reuses the SDK's StdioServerTransport and node:util.parseArgs — no arg-parser or server framework. Also exports createAskableMcpRemoteProvider for programmatic use. @types/node is scoped to this package's tsconfig (types: [node]) so it doesn't leak globals into the other packages' builds. Tests: remote provider (success + non-ok) and CLI header parsing / arg handling.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
@askable-ui/angular
@askable-ui/context
@askable-ui/core
@askable-ui/create-app
@askable-ui/mcp
@askable-ui/qwik
@askable-ui/react
@askable-ui/react-native
@askable-ui/solid
@askable-ui/svelte
@askable-ui/vue
@askable-ui/web-component
commit: |
This was referenced Jul 1, 2026
vamgan
added a commit
that referenced
this pull request
Jul 1, 2026
…col (#360) - Tagline: 'Give your LLM eyes. One attribute for humans, one protocol for agents.' - MCP section now leads with the one-command npx askable-mcp stdio setup for Claude Desktop/Cursor (shipped in #349), with the in-process and web-handler paths as secondary; documents list_context_sources and askable://current - New 'An open protocol, not just a library' section introducing the Context Packet wire format with a link to the spec page - Fix invalid Angular useAskableCompose sample (README + source JSDoc): class bodies cannot destructure; use a field initializer - Refresh stale availability claims (viewport/history now cover Solid/Angular/ Qwik) and the Qwik package row (15+ hooks after the expansion) Co-authored-by: Claude <[email protected]>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
askable-mcp, a turnkey stdio MCP server binary, so MCP clients that launch a command (Claude Desktop, Cursor) — rather than connecting to an HTTP URL — can read your app's UI context.Why
The existing path requires running an HTTP server (Express). Many MCP clients instead spawn a stdio command. This closes that gap with no new runtime dependencies — it reuses the already-present
@modelcontextprotocol/sdk(StdioServerTransport) andnode:util.parseArgs(no arg-parser, no server framework).What's included
askable-mcpbin — serves the askable context tools/resources over stdio, backed by:--url <endpoint>— fetches the current Context packet from an HTTP(S) endpoint, or--file <path>— serves a static packet file--header "K: V"(repeatable),--name,--require-redacted,--helpcreateAskableMcpRemoteProvider({ url, headers })— exported for programmatic use (also what the CLI uses).@types/nodeadded dev-only, scoped to this package's tsconfig viatypes: ["node"]so it does not leak Node globals into the other packages' builds (verified: full 12-package build stays clean).{ "mcpServers": { "my-app": { "command": "npx", "args": ["-y", "@askable-ui/mcp", "--url", "http://localhost:3001/context"] } } }Your app just needs a
GETendpoint returning the latest packet (e.g. viactx.toContextPacket()).Test plan
45/45tests (7 new: remote provider success/non-ok + CLI header parsing / arg handling)tscbuild clean (no@types/nodeleakage)--help, exit-1 on missing source, stdio startup with--file🤖 Generated with Claude Code
Generated by Claude Code