Documentation
¶
Index ¶
- Constants
- func EnvBoolValue(value string) bool
- func FirstNonEmpty(values ...string) string
- func IsLoopbackListenAddr(addr string) bool
- func JSONResult(value any) *mcp.CallToolResult
- func NewHTTPServer(addr string, handler http.Handler) *http.Server
- func ParseModes(raw string) map[string]bool
- func RequireMCPToken(token string, next http.Handler) http.Handler
- func ResolveMCPToken(flagValue string) (string, error)
- func ShellQuote(value string) string
- func SiblingStackkitBinary() (string, error)
- func StringMapValue(values map[string]any, key string) string
- func TextResult(text string) *mcp.CallToolResult
- type App
- type Options
Constants ¶
const ( MCPTokenEnv = "STACKKIT_MCP_TOKEN" MCPTokenFileEnv = "STACKKIT_MCP_TOKEN_FILE" )
Dedicated MCP credential sources. The token file lets an installer mint the credential without placing it on a command line or in a process listing.
const DefaultLocalServerURL = "http://localhost:8082"
DefaultLocalServerURL is the loopback-only default for a local stackkit-server when STACKKITS_SERVER_URL and --server-url are unset. Standard Mode binds MCP and the API to the developer machine; it is not a hosted production origin.
Variables ¶
This section is empty.
Functions ¶
func EnvBoolValue ¶
EnvBoolValue parses common truthy environment values.
func FirstNonEmpty ¶
FirstNonEmpty returns the first non-empty value after trimming whitespace.
func IsLoopbackListenAddr ¶
IsLoopbackListenAddr reports whether an HTTP listen address is loopback-only.
func JSONResult ¶
func JSONResult(value any) *mcp.CallToolResult
func NewHTTPServer ¶
NewHTTPServer creates a hardened Streamable HTTP server. WriteTimeout stays disabled because MCP Streamable HTTP may keep responses open.
func ParseModes ¶
ParseModes parses a comma-separated MCP mode list.
func RequireMCPToken ¶
RequireMCPToken admits only requests that present the configured MCP token as a bearer credential or X-StackKit-MCP-Token value. It fails closed: with no configured token every request is denied with configuration guidance.
func ResolveMCPToken ¶ added in v0.45.0
ResolveMCPToken returns the dedicated MCP token from the explicit flag value, STACKKIT_MCP_TOKEN, or the file named by STACKKIT_MCP_TOKEN_FILE, in that order. An empty result means no token is configured. A configured token file that cannot be read or is empty is an error, never a silent fallback.
func ShellQuote ¶
func SiblingStackkitBinary ¶
SiblingStackkitBinary returns the packaged CLI beside stackkit-server or stackkit-mcp, through the shared exact-build local process binding.
func TextResult ¶
func TextResult(text string) *mcp.CallToolResult
Types ¶
type App ¶
type App struct {
// contains filtered or unexported fields
}
App owns the StackKits MCP registration shared by stackkit-mcp and stackkit-server.
func (*App) OpenMCPJSON ¶
OpenMCPJSON returns pretty JSON discovery metadata.
func (*App) ProtectedStreamableHTTPHandler ¶
ProtectedStreamableHTTPHandler requires the dedicated MCP token on every request. Without a configured token it denies every request; it never falls back to an open endpoint or to another credential.
func (*App) StreamableHTTPHandler ¶
StreamableHTTPHandler returns the stateless MCP 2026-07-28 Streamable HTTP handler. Each POST is served from that request alone: the SDK issues no Mcp-Session-Id, ignores one a client sends, and answers GET and DELETE with 405. Clients on older protocol versions are still served, one request at a time, with SDK-synthesized initialization defaults.