gravity-agent-mcp
Click on "Deploy 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., "@gravity-agent-mcpQuery wallet 0x1234 for token balances"
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.
gravity-agent-mcp
A next-generation Omni-Agent system built on the Model Context Protocol (MCP). gravity-agent-mcp is an intelligent, secure, context-aware assistant that bridges local cultural nuance (Khmer / Cambodian) with automation and Web3 capabilities, exposed to clients like Claude Desktop over a stdio transport.
1. The 7 Core Pillars
# | Pillar | Status | Where it lives |
1 | Localization & Khmer Culture Agent | β Implemented |
|
2 | Hyper-Personalized Productivity | π§© Stub (see note) |
|
3 | Decentralized / Web3 Agent | β Implemented |
|
4 | Cross-Platform Automation Agent | π Playbook |
|
5 | Security & Privacy Guard | β Implemented |
|
6 | Intelligent Routing | β Implemented |
|
7 | Zero-Configuration | β One-line config |
|
Note: Pillars 2/4 are not yet shipped as live tools.
create_calendar_event(productivity) andkhmer_greetingwere scaffolding and were removed during the modular refactor; the Automation Agent is currently documented as an orchestration playbook rather than a meta-tool. Add them assrc/tools/*.tsmodules to complete the set.
Related MCP server: Tyra Advanced Memory MCP Server
2. Tech Stack
Language: TypeScript (strict) / Node.js β₯ 18
Framework:
@modelcontextprotocol/sdkTransport: JSON-RPC 2.0 over Stdio
Client: Claude Desktop (or any MCP-compatible client)
3. Project Structure
gravity-agent-mcp/
βββ src/
β βββ index.ts # Entry point: Server init + Stdio transport
β βββ router.ts # Pillar 6 β dispatch (switch-case) + tool registry
β βββ core/
β β βββ types.ts # Shared contract (ToolMeta, ToolResult, ToolHandlerβ¦)
β βββ middleware/
β β βββ security.ts # Pillar 5 β withSecurityGuard() interceptor
β βββ tools/
β βββ khmerCulture.ts # Pillar 1 β get_khmer_culture_context
β βββ web3.ts # Pillar 3 β web3_blockchain_query
βββ docs/
β βββ automation-playbook.md# Pillar 4 β orchestration guide
βββ build/ # Compiled output (generated by tsc)
βββ package.json
βββ tsconfig.jsonThe entry point (src/index.ts) does only three things: initialize the
Server, attach ListTools/CallTool handlers (delegating to src/router.ts),
and connect over Stdio. All tool logic, guarding, and routing live in src/.
4. Tools
Tool | Category | Sensitive? | Description |
| culture | No | Returns localized Cambodian context for a topic ( |
| web3 | Yes | Inspects a wallet address on Ethereum/Solana; returns simulated native + token balances. Address format is regex-validated. |
Sensitive tools pass through the Security & Privacy Guard, which logs the intercept and runs a (simulated) confirmation gate before executing.
5. Setup
Prerequisites
Node.js β₯ 18 and npm.
Install & build
npm install # install dependencies (SDK + TypeScript)
npm run build # compile src/ β build/ (tsc)Run (stdio)
npm start # node build/index.jsThe server reads JSON-RPC requests from stdin and writes responses to stdout. All diagnostics (server/security/routing logs) go to stderr so the JSON-RPC stream on stdout stays clean β this is required for stdio MCP.
6. Connect to Claude Desktop (Zero-Config, Pillar 7)
Edit your claude_desktop_config.json (macOS:
~/Library/Application Support/Claude/claude_desktop_config.json;
Windows: %APPDATA%\Claude\claude_desktop_config.json). Add a mcpServers
entry pointing at the compiled build/index.js with an absolute path:
{
"mcpServers": {
"gravity-agent-mcp": {
"command": "node",
"args": [
"/absolute/path/to/gravity-agent-mcp/build/index.js"
]
}
}
}Common pitfalls (these cause the "pipe broke" error / no tool icon):
Pointing
argsatindex.tsinstead of the compiledbuild/index.js(Node can't run TypeScript directly).Using a relative path β Claude Desktop launches from a different cwd, so always use an absolute path.
Any
console.log/process.stdout.writein tool code corrupts the JSON-RPC stream. This project logs only viaconsole.error.Forgetting to run
npm installbeforenpm run build(missing SDK).
Restart Claude Desktop after editing the config; the tools/plug icon appears once the server handshakes successfully.
7. Example: call a tool over JSON-RPC
Send newline-delimited JSON-RPC messages on stdin:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"cli","version":"1.0"}}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_khmer_culture_context","arguments":{"topic":"khmer_etiquette"}}}Expected tools/call result (truncated):
{
"content": [
{ "type": "text", "text": "{ \"topic\": \"khmer_etiquette\", \"title\": \"β¦\", \"dos\": [β¦], \"donts\": [β¦] }" }
]
}For web3_blockchain_query, the server logs a [SECURITY] Intercepted β¦ (sensitive: true)
line to stderr and runs the simulated confirmation before returning balances.
8. Development notes
Add a tool: create
src/tools/<name>.tsexportingdefinition: ToolMetaandexecute(args), then add acaseto theswitchinsrc/router.ts(wrap the call inwithSecurityGuard). Export itsdefinitionfromtoolDefinitionsforListTools.Security policy: mark a tool sensitive by setting
category: "web3"or"productivity"inSENSITIVE_CATEGORIES(src/core/types.ts). SetSECURITY_MODE.interactiveConfirmation = trueinsrc/middleware/security.tsto require a real client "Allow" prompt instead of the simulation.Build output:
build/is generated; it is safe to delete and regenerate withnpm run build.
Available Tools
2 toolsget_khmer_culture_contextA
Returns localized Cambodian context for a topic. Topics: legal_business_registration, khmer_etiquette, phnom_penh_zones.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | The Khmer cultural / localization topic to look up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose whether the tool is read-only, side effects, or any behavioral traits beyond the basic function.
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?
One sentence with a list of topics, no unnecessary words.
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?
Adequate for a simple lookup tool with a single enumerated parameter; lacks details on return format but sufficient given no output schema.
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 coverage is 100% with enum and description; the description redundantly lists the enum values, adding minimal extra meaning.
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 it returns localized Cambodian context for specific topics, and the sibling tool 'web3_blockchain_query' is unrelated, so no ambiguity.
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?
Implies usage when Cambodian cultural context is needed for the listed topics, but no explicit guidance on when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web3_blockchain_queryA
Inspects an on-chain wallet address on a given network (Ethereum, Solana). Returns simulated native + token balances.
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | Target blockchain network. | |
| walletAddress | Yes | The wallet address to inspect. |
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 mentions 'simulated' balances, hinting at non-real data, but does not explicitly state that the tool is read-only, has no side effects, or any rate limits or authentication requirements. More transparency could improve agent decision-making.
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 a single, well-structured sentence that front-loads the action and key details. Every word adds value, with no redundancy or filler.
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?
For a simple query tool with 2 parameters and no output schema, the description covers inputs (wallet address, network) and output (balances). However, it could briefly mention that the tool is read-only and safe to use, especially given no annotations. Still, it is largely complete.
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 coverage is 100%, so both parameters are documented. The description restates the network enum and wallet address but adds no new meaning beyond the schema. It does provide output context (returns balances) which is not param-related, but that doesn't enhance param semantics.
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 tool's action: 'Inspects an on-chain wallet address' and specifies the supported networks 'Ethereum, Solana'. It also mentions the return value 'simulated native + token balances'. This is specific and distinguishes it from the unrelated sibling tool.
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 explains what the tool does but provides no guidance on when to use it versus alternatives, no prerequisites, and no exclusions. Since only one sibling exists and it's unrelated, the lack of usage context is less critical, but still a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.0- First observed
get_khmer_culture_context - First observed
web3_blockchain_query
TDQS
Scored across 2 tools
The two tools are completely unrelated: one provides Cambodian cultural context, the other queries blockchain wallets. There is no overlap in purpose or functionality, so an agent can easily distinguish them.
Both tools use descriptive names with underscores, but one starts with 'get_' and the other with 'web3_', introducing a slight inconsistency in naming style. However, both are clear and predictable.
With only 2 tools covering disparate domains (culture and blockchain), the server feels underdeveloped. Either the server should focus on one domain with more tools, or additional related tools should be added to justify the mix.
Each individual tool appears adequate for its narrow purpose, but the server lacks a coherent domain, making it impossible to assess full lifecycle coverage. There are no obvious gaps within each tool, but the set as a whole is not comprehensive.
Maintenance
Related MCP Connectors
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
Hosted MCP server for AI agent identity, permissions, verification, and reusable proof.
An MCP memory server. One memory your agents share β across models, devices and apps.
Hosted AgentLux MCP server for marketplace, identity, creator, services, and social flows.
Related MCP Servers
AlicenseCqualityCmaintenanceAn MCP server providing unified access to blockchain operations, bridging, swapping, and crypto trading strategies for AI agents.37179GPL 3.0- -licenseNot gradedqualityNot gradedmaintenanceA sophisticated MCP server providing advanced memory capabilities with RAG, hallucination detection, and enterprise-grade AI infrastructure for intelligent agent ecosystems.-
- AlicenseAqualityDmaintenanceAn MCP server that powers AI agents with indexed blockchain data from The Graph.3MIT
- AlicenseAqualityDmaintenanceA local-first MCP server that enables AI agents to query the Sui blockchain using gRPC, GraphQL, and Archival Service, with auto-routing and LLM-friendly responses.2930 npm5Apache 2.0