Claspine
Claspine docs, API reference and code checks for AI agents: guides, recipes, errors, upgrades.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"claspine": {
"command": "npx",
"args": [
"@grahmur-org/claspine-cli"
]
}
}
}可运行的软件包
0.31.0stdio远程端点
https://api.claspine.com/mcpstreamable-http它能做什么
工具清单
工具(12)
🟢what_runs_where(capability)
Which Claspine capabilities exist on Claspine Atlas, the self-hosted engine (any language over HTTP) and self-hosted Spring Boot. Check this before planning any Claspine integration: they differ (for example, Claspine Atlas has no sign-in, permissions or push).
输入模式
{
"type": "object",
"properties": {
"capability": {
"type": "string",
"description": "Optional words to filter by, for example \"sign-in\" or \"payments\"."
}
},
"additionalProperties": false
}🟢plan_integration(stack, project, form, features, login, ...)
An exact, ordered plan for adding Claspine to this project: what the person must do first, then each step with the files and settings to change (current release pinned) and how to prove it worked. Call it after you know the stack, new or existing, and the person's decisions (Atlas or self-hosted, whose login, which features), and follow it step by step.
输入模式
{
"type": "object",
"properties": {
"stack": {
"type": "string",
"description": "The backend.",
"enum": [
"spring-boot",
"node",
"python",
"go",
"other"
]
},
"project": {
"type": "string",
"description": "new: little or no code yet; existing: an app that already runs.",
"enum": [
"new",
"existing"
]
},
"form": {
"type": "string",
"description": "Where Claspine runs: the person's choice.",
"enum": [
"atlas",
"self-hosted"
]
},
"features": {
"type": "array",
"description": "What to add first.",
"items": {
"type": "string",
"enum": [
"sign-in",
"email",
"sms",
"whatsapp",
"push",
"files",
"ai",
"payments"
]
}
},
"login": {
"type": "string",
"description": "Self-hosted: keep the app's own login, or move sign-in to Claspine (default: claspine when sign-in is a feature).",
"enum": [
"keep",
"claspine"
]
},
"database": {
"type": "string",
"description": "Self-hosted: where Claspine keeps its own tables (default postgres).",
"enum": [
"postgres",
"mongo",
"firestore"
]
},
"uses_spring_security": {
"type": "boolean",
"description": "Spring Boot: the project already uses Spring Security."
},
"current_version": {
"type": "string",
"description": "Only if the project already uses Claspine: its version now (grahmur.platform.version or the BOM version), for example 0.12.0. The plan then upgrades first."
}
},
"required": [
"stack",
"project",
"form",
"features"
],
"additionalProperties": false
}🟢search_docs(query, limit)
Search Claspine's guides, recipes, capability table and error fixes with a plain question or keywords. Returns the best matches first, with links; follow up with get_guide or get_recipe.
输入模式
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "A question or keywords, for example \"add sign-in and email to my existing Spring Boot app\"."
},
"limit": {
"type": "integer",
"description": "Maximum results, 1 to 10 (default 5).",
"minimum": 1
}
},
"required": [
"query"
],
"additionalProperties": false
}🟢get_guide(slug)
The full text of one Claspine guide: steps, code, settings, safety notes and troubleshooting.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "The guide's slug, for example \"sign-in-engine\" (see search_docs)."
}
},
"required": [
"slug"
],
"additionalProperties": false
}🟢get_recipe(task, form, language)
Copy-ready HTTP calls for a common task on Claspine Atlas or the self-hosted engine, in curl, Node.js, Python, Go or Java, checked against Claspine's API on every build. Without task: the list.
输入模式
{
"type": "object",
"properties": {
"task": {
"type": "string",
"description": "Recipe slug or words, for example \"file-upload\" or \"refund\"."
},
"form": {
"type": "string",
"description": "Where Claspine runs (default: the first the recipe supports).",
"enum": [
"cloud",
"engine"
]
},
"language": {
"type": "string",
"description": "Code language (default curl; \"all\" for every language).",
"enum": [
"curl",
"node",
"python",
"go",
"java",
"all"
]
}
},
"additionalProperties": false
}🟢upgrade_notes(from, to)
Every Claspine upgrade note after one version up to another, oldest first, with what changed, the checklist for product code and what to do before deploying. Read them all before changing the Claspine version.
输入模式
{
"type": "object",
"properties": {
"from": {
"type": "string",
"description": "The version the application uses now, for example 0.26.0."
},
"to": {
"type": "string",
"description": "The target version (default: the latest release)."
}
},
"required": [
"from"
],
"additionalProperties": false
}🟢check_upgrade(current, target, files)
Finds the Claspine version in project files (pom.xml, build.gradle, package.json, docker-compose.yml) or takes it as given, and lists the checklist items of every upgrade note up to the target.
输入模式
{
"type": "object",
"properties": {
"current": {
"type": "string",
"description": "Current version, if known."
},
"target": {
"type": "string",
"description": "Target version (default: the latest release)."
},
"files": {
"type": "array",
"description": "Project files to read the current version from (path and content).",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"content": {
"type": "string"
}
},
"required": [
"path",
"content"
]
}
}
},
"additionalProperties": false
}🟢api_reference(path, method)
The published HTTP contract shared by Claspine Atlas and the self-hosted engine (paths under /api/v1). Without path: every operation. With path (and method): parameters, request body and responses with schemas resolved.
输入模式
{
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "For example /payments/orders/{orderId}/refund."
},
"method": {
"type": "string",
"description": "HTTP method (default: the path's first).",
"enum": [
"GET",
"POST",
"PUT",
"PATCH",
"DELETE"
]
}
},
"additionalProperties": false
}🟢java_api(capability, type)
The public Java types of a Claspine capability (its api package) and of the foundation, with methods and record fields, from the current platform build. Without arguments: the capabilities.
输入模式
{
"type": "object",
"properties": {
"capability": {
"type": "string",
"description": "For example payments, files, llm, notifications, authorization, foundation."
},
"type": {
"type": "string",
"description": "A type name, for example Payments or RefundPaymentCommand."
}
},
"additionalProperties": false
}🟢explain_error(code)
What a Claspine error code means and how to fix it: HTTP status, the messages it is raised with, where, and the fix for common ones. Every Claspine error response carries its code.
输入模式
{
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "The error's code, for example HOST_NOT_AVAILABLE."
}
},
"required": [
"code"
],
"additionalProperties": false
}🟢check_code(files, diff)
Runs Claspine's Agent Shield rules on files or a unified diff: hardcoded or client-exposed secrets, SQL built from strings, unscoped tenant queries, secrets in logs, buffered uploads, imports of platform internals. Returns file, line, rule and the fix. Code is analysed in memory and not stored. A clean result is not proof of safety; Spring Boot builds also run ProductBoundaryTest.
输入模式
{
"type": "object",
"properties": {
"files": {
"type": "array",
"description": "Files to check (path decides browser vs server code).",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"content": {
"type": "string"
}
},
"required": [
"path",
"content"
]
}
},
"diff": {
"type": "string",
"description": "A unified diff (only added lines are checked)."
}
},
"additionalProperties": false
}🟢check_config(content, format)
Checks application.yml / application.properties or the engine's environment variables: empty values that switch providers on, sandbox sign-in in STAGING/PRODUCTION, IP addresses as hosts, secrets written into settings, and misspelled setting names. Content is not stored.
输入模式
{
"type": "object",
"properties": {
"content": {
"type": "string",
"description": "The settings file's content."
},
"format": {
"type": "string",
"description": "yaml, properties or env (default: guessed).",
"enum": [
"yaml",
"properties",
"env"
]
}
},
"required": [
"content"
],
"additionalProperties": false
}社区
证据