andy
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@andyanalyze our last session and save any learned patterns as rules"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Antigravity Learn MCP Server (andy)
A Model Context Protocol (MCP) server that mimics the Google Antigravity TUI slash command /learn for external agent harnesses like Cursor and Claude Code (Claude CLI).
It allows agents to inspect their own history, propose new rules or skills, and automatically write/update configurations under .cursorrules, .agents/AGENTS.md, or globally in ~/.gemini/config/.
Features
Prompt (
learn): A guide that walks the LLM through the learn workflow (analyzing history, classifying rules/skills, proposing, and applying).Tools:
list_customizations: Lists workspace and global rules and skills.read_customization: Reads any rule or skill file.write_proposal: Writes a draftlearning_proposal.mdfor user review.apply_customization: Persists the rule or skill to disk.
Resources:
rules://workspace: Exposes local.cursorrulesand.agents/AGENTS.mdrules.rules://global: Exposes global~/.gemini/config/AGENTS.mdrules.skills://workspace/list: Summarizes local workspace skills.skills://global/list: Summarizes global skills.
Related MCP server: Memory Crystal MCP Server
Install
You need uv (a fast Python package manager):
brew install uvOption 1 — Assisted setup (recommended)
Copy this prompt and paste it into any AI assistant (Claude Code, Cursor, etc.). It will walk you through the rest:
I want to install andy learn (https://github.com/timtty-sinch/andy_learn_tool) to run the /learn workflow in Claude Code or Cursor. Please guide me step-by-step, including installing it and running the setup wizard.
You can also print this prompt any time with andy prompt.
Option 2 — Manual install
uv tool install git+https://github.com/timtty-sinch/andy_learn_tool
andy setupandy setup is an interactive wizard that asks which agent you use (Claude Code, Cursor, or both) and registers the server for you:
Claude Code → runs
claude mcp add andy --scope user -- andy serveCursor → writes an
andyentry into.cursor/mcp.json(workspace or global)
Verify Claude Code registration with claude mcp list. Restart your agent afterward.
Manual registration (without the wizard)
# Claude Code
claude mcp add andy --scope user -- andy serveFor Cursor, add to .cursor/mcp.json:
{
"mcpServers": {
"andy": { "command": "andy", "args": ["serve"] }
}
}Running from a source checkout (dev)
Without installing, run the script directly — andy setup will register uv run against the script path automatically:
uv run andy_learn_mcp.py setupHow to Trigger the /learn Workflow
In Claude Code
Type the following in your Claude prompt:
Use the learn prompt to analyze this session and persist any rules or skills.Claude will:
Load the
learnprompt instructions.Scan the current terminal session for corrections/successes.
List existing customizations to prevent duplicates.
Call
write_proposalto write a draftlearning_proposal.mdto your workspace root.Present the draft in chat and ask for your approval.
Once you say "yes", call
apply_customizationto save it.
In Cursor Chat
In the chat input, type
@and select Prompts (if available) or simply tell the model:Run the andy prompt to extract and save lessons from our recent work.The agent will read its context, write
learning_proposal.mdfor your review, and wait for your confirmation to save the files.
Available Tools
4 toolsapply_customizationA
Save the rules or skills customizations. Always ensure you have written a proposal and obtained user confirmation before calling this tool.
Args: type: The customization type - either 'rule' or 'skill'. name: The name of the skill (required for skills). For rules, this can be empty or 'cursor'. content: The complete text content to write to the file. workspace_path: Optional path to the workspace root. is_global: Set to True to save globally, False to save to workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | Yes | ||
| content | Yes | ||
| is_global | No | ||
| workspace_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only mentions 'Save' without detailing whether files are overwritten, appended, or validated. There is no information about permissions, error conditions, or side effects, leaving significant behavioral gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise purpose statement, a critical usage guideline, and an enumerated parameter list. Each part serves a distinct role without redundancy, though the parameter descriptions could be slightly more terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, an output schema, and no annotations, the description covers purpose, usage, and parameter semantics. However, it lacks details on error handling, file overwrite behavior, and permission prerequisites, which are important for a mutation tool. It is minimally adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining the type ('rule' or 'skill'), name ('required for skills' and 'can be empty or cursor for rules'), content ('complete text content'), and the purpose of is_global and workspace_path. This adds meaning beyond the schema's basic type and default information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Save the rules or skills customizations,' providing a specific verb and resource. It distinguishes this tool from sibling tools like list_customizations, read_customization, and write_proposal by implying it is for applying/saving, not for listing, reading, or proposing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to 'Always ensure you have written a proposal and obtained user confirmation before calling this tool,' providing clear when-to-use and prerequisite conditions. This guides the agent to use write_proposal first and get confirmation, making the usage context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_customizationsA
List all customization files (rules and skills) in the workspace and global directories.
Args: workspace_path: Optional custom path to the workspace root. Default is CWD.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states the tool lists files in two directories but does not clarify whether subdirectories are traversed, file formats, or that it is read-only. This leaves gaps in understanding behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: three lines with a clear header line and an Args section. Every sentence adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, list operation) and the presence of an output schema, the description covers the essential aspects. However, it could mention whether the listing is recursive, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage (no parameter descriptions), so the description compensates by explaining the workspace_path parameter: 'Optional custom path to the workspace root. Default is CWD.' This adds meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'customization files (rules and skills)', and specifies the scope 'in the workspace and global directories'. It distinguishes from sibling tools like apply_customization, read_customization, and write_proposal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides the optional workspace_path argument and its default, but does not explicitly state when to use this tool versus alternatives like read_customization for viewing content. Usage context is implied but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_customizationA
Read the contents of a rule or skill file.
Args: type: The customization type - either 'rule' or 'skill'. name: For 'rule', name is ignored or set to 'AGENTS.md'/.cursorrules. For 'skill', it's the skill folder name. workspace_path: Optional path to the workspace root. is_global: Set to True to read from global config, False to read from workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | Yes | ||
| is_global | No | ||
| workspace_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided so description carries full burden. It correctly indicates read-only behavior ('Read the contents'), but does not detail return format or potential side effects (though none expected). Adequate but not enriched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Main purpose sentence followed by Args bullet points. Efficiently conveys information without excess. Could be slightly more streamlined but overall well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters (2 required), no enums, and output schema exists, the description covers all necessary context: parameter roles, reading semantics, and location differences. Completeness is high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but description fully explains each parameter: type values ('rule'/'skill'), name behavior (ignored for rule, folder for skill), workspace_path as optional, and is_global as read location flag. Greatly adds value over bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it reads a rule or skill file, with specific verb and resource. Distinguishes from sibling tools (apply, list, write) by focusing on reading content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use (to read customization files) and explains parameter behavior (name meaning for rule vs skill). Lacks explicit when-not or alternative tool mentions, but usage is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_proposalA
Write a learning_proposal.md file to the workspace root for user review.
Args: content: The full markdown content of the proposal. workspace_path: Optional path to the workspace root.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| workspace_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose overwrite behavior, error handling, permissions needed, or side effects beyond writing. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is short with an Args list. Could be more concise by integrating param descriptions into flowing text, but overall efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists but not shown; description lacks key details like overwrite policy, success/failure conditions, and prerequisites. Not fully complete for a write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description explains both parameters: content as full markdown and workspace_path as optional path. This adds significant meaning beyond the schema's type/title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (write), the specific resource (learning_proposal.md), and the location (workspace root). It is distinct from siblings which deal with customizations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for user review' implies use case but no explicit when-to-use vs alternatives or when-not-to-use. Siblings are about customizations, so context makes it usable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: apply_customization saves, list_customizations lists names, read_customization reads content, and write_proposal writes a separate proposal file. No two tools are ambiguous.
All tools follow a verb_noun pattern, but there is a minor pluralization inconsistency (list_customizations vs. singular other tools) and the noun changes from 'customization' to 'proposal'. Overall mostly consistent.
With 4 tools, the count is well-scoped for the domain of managing customizations and proposals. Each tool serves a necessary function without unnecessary duplication.
The toolset covers create/read/update for customizations but lacks a delete tool. Additionally, there is no tool to read or list proposals, only to write them. These gaps are notable but manageable.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Persistent memory and drift detection for AI agents across session restarts.
Adaptive plan/build/review cycles for AI coding assistants, persisted across sessions.
Persistent cross-session memory shared by Codex, Claude Code, ChatGPT, and other AI agents.
Gives your AI assistant persistent memory and intelligence about your work patterns.
Related MCP Servers
- AlicenseAqualityAmaintenanceSelf-learning memory for AI coding agents. Observes tool sequences, user preferences, and recurring fixes — auto-promotes high-confidence patterns into behavioral rules. 22 tools, 2 prompts, SQLite-backed, zero config.232MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to maintain persistent memory across sessions by capturing conversations, extracting durable knowledge, and injecting relevant context, supporting various MCP-compatible platforms.12MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to learn from their work by recording tasks, extracting patterns, detecting mistakes, and proactively surfacing insights, all using the agent's own model through a cooperative intelligence pattern.MIT
- AlicenseNot gradedqualityCmaintenanceProvides coding agents with durable, cross-session lessons-learned memory, enforcing that success or failure verdicts can only come from human approval, human correction, or objective metrics—never from the agent itself.Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/timtty-sinch/andy_learn_tool'
If you have feedback or need assistance with the MCP directory API, please join our Discord server