Klever VM MCP Server
आधिकारिकMCP server for [Klever](https://klever.org) blockchain smart contract development, on-chain data exploration, and VM interaction. Public remote server available at `https://mcp.klever.org/mcp`.
दस्तावेज़
Klever MCP सर्वर
Klever ब्लॉकचेन स्मार्ट अनुबंध विकास के लिए अनुकूलित एक मॉडल संदर्भ प्रोटोकॉल (MCP) सर्वर। यह सर्वर Klever VM SDK के साथ काम करने वाले डेवलपर्स के लिए कोड पैटर्न, सर्वोत्तम प्रथाओं और रनटाइम व्यवहार सहित प्रासंगिक ज्ञान को बनाए रखता है और प्रस्तुत करता है।
विशेषताएँ
- 🚀 ट्रिपल मोड संचालन: HTTP API सर्वर, MCP stdio सर्वर, या सार्वजनिक होस्टेड MCP सर्वर के रूप में चलाएँ
- 💾 लचीला भंडारण: इन-मेमोरी या Redis बैकएंड समर्थन
- 🔍 स्मार्ट संदर्भ पुनर्प्राप्ति: प्रकार, टैग या अनुबंध प्रकार द्वारा क्वेरी करें
- 📝 स्वचालित पैटर्न निष्कर्षण: उदाहरण और पैटर्न निकालने के लिए Klever अनुबंधों का विश्लेषण करें
- 🎯 प्रासंगिकता रैंकिंग: संदर्भ की बुद्धिमान स्कोरिंग और रैंकिंग
- 🔄 लाइव अपडेट: वास्तविक समय में संदर्भ जोड़ें और अपडेट करें
- 🛡️ प्रकार सुरक्षा: Zod सत्यापन के साथ पूर्ण TypeScript
- 📚 व्यापक ज्ञान आधार: Klever VM पैटर्न, सर्वोत्तम प्रथाओं और उदाहरणों के साथ पूर्व-लोडेड
- 🔧 अनुबंध सत्यापन: सामान्य मुद्दों और एंटी-पैटर्न का स्वचालित पता लगाना
- 🚀 परिनियोजन स्क्रिप्ट: अनुबंध परिनियोजन, उन्नयन और क्वेरी के लिए उपयोग के लिए तैयार स्क्रिप्ट
त्वरित शुरुआत
npx के माध्यम से तुरंत इंस्टॉल करें और चलाएँ — क्लोनिंग की आवश्यकता नहीं:
npx -y @klever/mcp-server
या होस्टेड सार्वजनिक सर्वर से कनेक्ट करें:
claude mcp add -t http klever-vm https://mcp.klever.org/mcp
क्लाइंट-विशिष्ट कॉन्फ़िगरेशन के लिए MCP क्लाइंट एकीकरण देखें।
आर्किटेक्चर
mcp-klever-vm/
├── src/
│ ├── api/ # HTTP API routes with validation
│ ├── context/ # Context management service layer
│ ├── mcp/ # MCP protocol server implementation
│ ├── parsers/ # Klever contract parser and validator
│ ├── storage/ # Storage backends (memory/Redis)
│ │ ├── memory.ts # In-memory storage with size limits
│ │ └── redis.ts # Redis storage with optimized queries
│ ├── types/ # TypeScript type definitions
│ ├── utils/ # Utilities and ingestion tools
│ └── knowledge/ # Modular knowledge base (95+ entries)
│ ├── core/ # Core concepts and imports
│ ├── storage/ # Storage patterns and mappers
│ ├── events/ # Event handling and rules
│ ├── tokens/ # Token operations and decimals
│ ├── modules/ # Built-in modules (admin, pause)
│ ├── tools/ # CLI tools (koperator, ksc)
│ ├── scripts/ # Helper scripts
│ ├── examples/ # Complete contract examples
│ ├── errors/ # Error patterns
│ ├── best-practices/ # Optimization and validation
│ └── documentation/ # API reference
├── tests/ # Test files
└── docs/ # Documentation
किए गए मुख्य सुधार
-
भंडारण परत
- InMemoryStorage में OOM को रोकने के लिए मेमोरी सीमाएँ जोड़ी गईं
- O(N) KEYS कमांड से बचने के लिए Redis क्वेरीज़ को अनुकूलित किया गया
- Redis संचालन के लिए परमाणु लेन-देन जोड़े गए
- त्रुटि प्रबंधन और सत्यापन में सुधार किया गया
-
API सुरक्षा
- सभी एंडपॉइंट के लिए इनपुट सत्यापन जोड़ा गया
- बैच संचालन आकार सीमाएँ
- आंतरिक जानकारी लीक किए बिना उचित त्रुटि प्रतिक्रियाएँ
- पर्यावरण-जागरूक त्रुटि संदेश
-
प्रकार सुरक्षा
- केंद्रीकृत स्कीमा सत्यापन
- विकल्पों के लिए उचित TypeScript इंटरफ़ेस
- संग्रहीत डेटा का रनटाइम सत्यापन
-
प्रदर्शन
- Redis MGET का उपयोग करके बैच संचालन
- पूर्ण स्कैन के बजाय इंडेक्स-आधारित क्वेरीज़
- अनुकूलित गणना संचालन
इंस्टॉलेशन
- रिपॉजिटरी क्लोन करें:
git clone https://github.com/klever-io/mcp-klever-vm.git
cd mcp-klever-vm
- निर्भरताएँ इंस्टॉल करें:
pnpm install
- पर्यावरण कॉन्फ़िगरेशन कॉपी करें:
cp .env.example .env
- Klever SDK उपकरण इंस्टॉल करें (लेन-देन के लिए आवश्यक):
chmod +x scripts/install-sdk.sh && ./scripts/install-sdk.sh
- प्रोजेक्ट बनाएँ:
pnpm run build
कॉन्फ़िगरेशन
सर्वर को कॉन्फ़िगर करने के लिए .env फ़ाइल संपादित करें:
# Server Mode (http, mcp, or public)
MODE=http
# HTTP Server Port (only for http mode)
PORT=3000
# Storage Backend (memory or redis)
STORAGE_TYPE=memory
# Maximum contexts for in-memory storage (default: 10000)
MEMORY_MAX_SIZE=10000
# Redis URL (only if STORAGE_TYPE=redis)
REDIS_URL=redis://localhost:6379
# Node environment (development or production)
NODE_ENV=development
MCP क्लाइंट एकीकरण
Claude Code
# Add via npx (recommended)
claude mcp add klever-vm -- npx -y @klever/mcp-server
# Or connect to the public hosted server
claude mcp add -t http klever-vm https://mcp.klever.org/mcp
Claude Desktop
अपने claude_desktop_config.json में जोड़ें:
{
"mcpServers": {
"klever-vm": {
"command": "npx",
"args": ["-y", "@klever/mcp-server"]
}
}
}
विस्तृत सेटअप के लिए, Claude Desktop इंस्टॉलेशन गाइड देखें।
Cursor
अपनी Cursor MCP सेटिंग्स (.cursor/mcp.json) में जोड़ें:
{
"mcpServers": {
"klever-vm": {
"command": "npx",
"args": ["-y", "@klever/mcp-server"]
}
}
}
VS Code (GitHub Copilot)
अपने प्रोजेक्ट में .vscode/mcp.json में जोड़ें:
{
"servers": {
"klever-vm": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@klever/mcp-server"]
}
}
}
विस्तृत सेटअप के लिए, VS Code इंस्टॉलेशन गाइड देखें।
सार्वजनिक MCP सर्वर
Klever MCP सर्वर को एक सार्वजनिक साझा सेवा के रूप में होस्ट किया जा सकता है, जिससे कोई भी डेवलपर इसे स्थानीय रूप से चलाए बिना कनेक्ट कर सकता है।
सार्वजनिक सर्वर से कनेक्ट करना
# Add permanently (user-level)
claude mcp add -t http klever-vm https://mcp.klever.org/mcp
# Add for current project only
claude mcp add -t http -s project klever-vm https://mcp.klever.org/mcp
उपलब्ध उपकरण (सार्वजनिक मोड)
सार्वजनिक सर्वर सुरक्षा के लिए उपकरणों का एक केवल-पढ़ने योग्य उपसमूह प्रस्तुत करता है:
| उपकरण | विवरण |
|---|---|
query_context | Klever VM ज्ञान आधार खोजें |
get_context | ID द्वारा एक विशिष्ट संदर्भ पुनर्प्राप्त करें |
find_similar | दिए गए संदर्भ के समान संदर्भ खोजें |
get_knowledge_stats | ज्ञान आधार आँकड़े प्राप्त करें |
enhance_with_context | प्रासंगिक Klever VM संदर्भ के साथ क्वेरीज़ बढ़ाएँ |
लेखन संचालन (add_context) और शेल-आधारित उपकरण (init_klever_project, add_helper_scripts) सार्वजनिक मोड में अक्षम हैं।
Docker के साथ स्व-होस्टिंग
# Build and run
docker build -t mcp-klever-vm .
docker run -p 3000:3000 mcp-klever-vm
# Or using docker compose
docker compose up -d
फिर कनेक्ट करें:
claude mcp add -t http klever-vm-local http://localhost:3000/mcp
Docker के बिना स्व-होस्टिंग
pnpm install
pnpm run build
pnpm run start:public
पर्यावरण चर (सार्वजनिक मोड)
| चर | डिफ़ॉल्ट | विवरण |
|---|---|---|
MODE | http | होस्टेड मोड के लिए public पर सेट करें |
PORT | 3000 | सर्वर पोर्ट |
CORS_ORIGINS | (अनसेट) | अल्पविराम से अलग किए गए अनुमत ऑरिजिन। अनसेट या * सभी ऑरिजिन की अनुमति देता है |
RATE_LIMIT_MCP | 60 | MCP एंडपॉइंट अनुरोध/मिनट प्रति IP |
RATE_LIMIT_API | 30 | API एंडपॉइंट अनुरोध/मिनट प्रति IP |
BODY_SIZE_LIMIT | 1mb | अधिकतम अनुरोध बॉडी आकार |
परिनियोजन नोट्स
mcp.klever.org पर उत्पादन के लिए:
- TLS समाप्ति के लिए रिवर्स प्रॉक्सी (nginx/Caddy/क्लाउड LB) के पीछे Docker कंटेनर परिनियोजित करें
- सुनिश्चित करें कि प्रॉक्सी
mcp-session-idहेडर पास करता है और SSE का समर्थन करता है (प्रतिक्रिया बफरिंग अक्षम करें) - एकल इंस्टेंस पर्याप्त है क्योंकि सर्वर इन-मेमोरी ज्ञान आधार के साथ केवल-पढ़ने योग्य है
- DDoS सुरक्षा के लिए Cloudflare पर विचार करें (SSE समर्थित है)
उपयोग
ज्ञान आधार लोडिंग
सर्वर आपके भंडारण प्रकार के आधार पर Klever ज्ञान आधार को स्वचालित रूप से लोड करता है:
मेमोरी भंडारण (डिफ़ॉल्ट)
- सर्वर शुरू होने पर ज्ञान स्वचालित रूप से लोड होता है
pnpm run ingestको अलग से चलाने की आवश्यकता नहीं है- डेटा केवल तब तक मौजूद रहता है जब तक सर्वर चल रहा है
- विकास और परीक्षण के लिए सर्वोत्तम
Redis भंडारण
# First, ingest the knowledge base (one time)
pnpm run ingest
# Then start the server
pnpm run dev
- ज्ञान Redis डेटाबेस में बना रहता है
- सर्वर पुनरारंभ से बचा रहता है
- उत्पादन उपयोग के लिए सर्वोत्तम
यह लोड करेगा:
- स्मार्ट अनुबंध टेम्पलेट और उदाहरण
- एनोटेशन नियम और सर्वोत्तम प्रथाएँ
- स्टोरेज मैपर पैटर्न और तुलनाएँ
- परिनियोजन और क्वेरी स्क्रिप्ट
- सामान्य त्रुटियाँ और समाधान
- परीक्षण पैटर्न
- API संदर्भ दस्तावेज़ीकरण
HTTP सर्वर के रूप में चलाना
# Development mode
pnpm run dev
# Production mode
pnpm run build && pnpm start
HTTP API http://localhost:3000/api पर उपलब्ध होगा
MCP सर्वर के रूप में चलाना
MODE=mcp pnpm start
किसी भी MCP-संगत क्लाइंट के साथ उपयोग करें।
API एंडपॉइंट
POST /api/context
सिस्टम में नया संदर्भ शामिल करें।
{
"type": "code_example",
"content": "contract code here",
"metadata": {
"title": "Token Contract Example",
"description": "ERC20-like token implementation",
"tags": ["token", "fungible"],
"contractType": "token"
}
}
GET /api/context/:id
ID द्वारा विशिष्ट संदर्भ पुनर्प्राप्त करें।
POST /api/context/query
फ़िल्टर के साथ संदर्भ क्वेरी करें।
{
"query": "transfer",
"types": ["code_example", "best_practice"],
"tags": ["token"],
"contractType": "token",
"limit": 10,
"offset": 0
}
PUT /api/context/:id
मौजूदा संदर्भ अपडेट करें।
DELETE /api/context/:id
संदर्भ हटाएँ।
GET /api/context/:id/similar
समान संदर्भ खोजें।
POST /api/context/batch
एकाधिक संदर्भ बैच में शामिल करें।
MCP उपकरण
MCP सर्वर के रूप में चलने पर, निम्नलिखित उपकरण उपलब्ध हैं:
query_context: प्रासंगिक Klever विकास संदर्भ खोजेंadd_context: ज्ञान आधार में नया संदर्भ जोड़ेंget_context: ID द्वारा विशिष्ट संदर्भ पुनर्प्राप्त करेंfind_similar: दिए गए संदर्भ के समान संदर्भ खोजेंget_knowledge_stats: ज्ञान आधार के बारे में आँकड़े प्राप्त करेंinit_klever_project: सहायक स्क्रिप्ट के साथ एक नया Klever स्मार्ट अनुबंध प्रोजेक्ट आरंभ करेंenhance_with_context: प्रासंगिक Klever VM संदर्भ के साथ क्वेरीज़ को स्वचालित रूप से बढ़ाएँ
संदर्भ प्रकार
code_example: कार्यशील कोड स्निपेट और उदाहरण (Rust स्मार्ट अनुबंध कोड)best_practice: अनुशंसित पैटर्न और प्रथाएँsecurity_tip: सुरक्षा विचार और चेतावनियाँoptimization: प्रदर्शन अनुकूलन तकनीकेंdocumentation: सामान्य दस्तावेज़ीकरण और गाइडerror_pattern: सामान्य त्रुटियाँ और समाधानdeployment_tool: परिनियोजन स्क्रिप्ट और उपयोगिताएँ (bash स्क्रिप्ट, उपकरण)runtime_behavior: रनटाइम व्यवहार स्पष्टीकरण
पूर्व-लोडेड ज्ञान आधार
MCP सर्वर में 11 श्रेणियों में व्यवस्थित 95+ प्रविष्टियों के साथ एक व्यापक ज्ञान आधार शामिल है:
महत्वपूर्ण पैटर्न
- भुगतान प्रबंधन और टोकन संचालन
- दशमलव रूपांतरण और गणनाएँ
- ईवेंट उत्सर्जन और पैरामीटर नियम
- CLI उपकरण उपयोग और सर्वोत्तम प्रथाएँ
अनुबंध पैटर्न और उदाहरण
- बुनियादी अनुबंध संरचना टेम्पलेट
- पूर्ण लॉटरी गेम कार्यान्वयन
- पुरस्कारों के साथ स्टेकिंग अनुबंध
- क्रॉस-अनुबंध संचार पैटर्न
- रिमोट स्टोरेज एक्सेस पैटर्न
- टोकन मैपर सहायक मॉड्यूल
विकास उपकरण
- Koperator: तर्क एन्कोडिंग के साथ पूर्ण CLI संदर्भ
- KSC: बिल्ड कमांड और प्रोजेक्ट सेटअप
- परिनियोजन, उन्नयन और क्वेरी स्क्रिप्ट
- इंटरैक्टिव अनुबंध प्रबंधन उपकरण
- सामान्य उपयोगिताएँ लाइब्रेरी (bech32, नेटवर्क प्रबंधन)
भंडारण और अनुकूलन
- प्रदर्शन तुलना के साथ स्टोरेज मैपर चयन गाइड
- नेमस्पेस संगठन पैटर्न
- कुशल क्वेरीज़ के लिए व्यू एंडपॉइंट
- गैस अनुकूलन तकनीकें
- OptionalValue बनाम Option पैटर्न
सर्वोत्तम प्रथाएँ और सुरक्षा
- इनपुट सत्यापन पैटर्न
- त्रुटि प्रबंधन रणनीतियाँ
- एडमिन और पॉज़ मॉड्यूल उपयोग
- एक्सेस कंट्रोल पैटर्न
- सामान्य गलतियाँ और समाधान
अनुबंध शामिल करना
Klever अनुबंधों को पार्स और आयात करने के लिए अंतर्निहित अंतर्ग्रहण उपयोगिताओं का उपयोग करें:
import { StorageFactory } from './storage/index.js';
import { ContextService } from './context/service.js';
import { ContractIngester } from './utils/ingest.js';
const storage = StorageFactory.create('memory');
const contextService = new ContextService(storage);
const ingester = new ContractIngester(contextService);
// Ingest a single contract
await ingester.ingestContract('./path/to/contract.rs', 'AuthorName');
// Ingest entire directory
await ingester.ingestDirectory('./contracts', 'AuthorName');
// Add common patterns
await ingester.ingestCommonPatterns();
विकास
# Run tests
pnpm test
# Lint code
pnpm run lint
# Format code
pnpm run format
# Watch mode
pnpm run dev
# Ingest/update knowledge base
pnpm run ingest
अनुबंध सत्यापन
सर्वर स्वचालित रूप से Klever अनुबंधों को मान्य कर सकता है और मुद्दों का पता लगा सकता है:
import { KleverValidator } from './parsers/validators.js';
const issues = KleverValidator.validateContract(contractCode);
// Returns array of detected issues with suggestions
सत्यापन जाँच में शामिल हैं:
- ईवेंट एनोटेशन प्रारूप (दोहरे उद्धरण, camelCase)
- प्रबंधित प्रकार API पैरामीटर
- स्थानांतरण में शून्य पता सत्यापन
- इष्टतम स्टोरेज मैपर चयन
- मॉड्यूल नामकरण परंपराएँ
उदाहरण उपयोग मामले
1. स्मार्ट अनुबंध विकास सहायक
Klever अनुबंध विकास के लिए संदर्भ-जागरूक सुझाव प्रदान करने के लिए अपने IDE के साथ एकीकृत करें।
2. कोड समीक्षा उपकरण
सर्वोत्तम प्रथाओं और सुरक्षा पैटर्न के विरुद्ध स्वचालित रूप से अनुबंधों की जाँच करें।
3. शिक्षण मंच
Klever विकास सीखने वाले डेवलपर्स के लिए उदाहरण और स्पष्टीकरण प्रदान करें।
4. दस्तावेज़ीकरण जनरेटर
अनुबंध दस्तावेज़ीकरण को स्वचालित रूप से निकालें और व्यवस्थित करें।
प्रोजेक्ट विनिर्देश और उदाहरण
पूर्ण प्रोजेक्ट कार्यान्वयन उदाहरणों और विनिर्देशों के लिए, देखें:
- प्रोजेक्ट विनिर्देश टेम्पलेट - Klever स्मार्ट अनुबंध प्रोजेक्ट निर्दिष्ट करने के लिए एक भरने योग्य टेम्पलेट। AI सहायकों को MCP ज्ञान खोज, कार्य ट्रैकिंग और चरणबद्ध कार्यान्वयन के माध्यम से मार्गदर्शन करता है। इसमें KleverDice उदाहरण शामिल है।
प्रोजेक्ट आरंभीकरण
MCP सर्वर में एक शक्तिशाली प्रोजेक्ट आरंभीकरण उपकरण शामिल है जो सभी आवश्यक सहायक स्क्रिप्ट के साथ एक नया Klever स्मार्ट अनुबंध प्रोजेक्ट बनाता है।
init_klever_project उपकरण का उपयोग करना
MCP के माध्यम से कनेक्ट होने पर, init_klever_project उपकरण का उपयोग करें:
{
"name": "my-token-contract",
"template": "empty",
"noMove": false
}
पैरामीटर:
name(आवश्यक): आपके अनुबंध का नामtemplate(वैकल्पिक): उपयोग करने के लिए टेम्पलेट (डिफ़ॉल्ट: "empty")noMove(वैकल्पिक): यदि सत्य है, तो प्रोजेक्ट को उपनिर्देशिका में रखता है (डिफ़ॉल्ट: असत्य)
उत्पन्न सहायक स्क्रिप्ट
उपकरण scripts/ निर्देशिका में निम्नलिखित स्क्रिप्ट बनाता है:
- build.sh: स्मार्ट अनुबंध बनाता है
- deploy.sh: अनुबंध कलाकृतियों की ऑटो-डिटेक्शन के साथ Klever टेस्टनेट पर परिनियोजित करता है
- upgrade.sh: मौजूदा अनुबंध को अपग्रेड करता है (history.json से ऑटो-डिटेक्ट करता है)
- query.sh: उचित एन्कोडिंग/डिकोडिंग के साथ अनुबंध एंडपॉइंट क्वेरी करें
- test.sh: अनुबंध परीक्षण चलाएँ
- interact.sh: उपयोग उदाहरण और उपलब्ध कमांड दिखाता है
उदाहरण वर्कफ़्लो
-
प्रोजेक्ट आरंभ करें:
# Via MCP tool init_klever_project({"name": "my-contract"}) -
अनुबंध बनाएँ:
./scripts/build.sh -
टेस्टनेट पर परिनियोजित करें:
./scripts/deploy.sh -
अनुबंध क्वेरी करें:
./scripts/query.sh --endpoint getSum ./scripts/query.sh --endpoint getValue --arg myKey -
अनुबंध अपग्रेड करें:
./scripts/upgrade.sh
सभी परिनियोजन इतिहास आसान संदर्भ के लिए output/history.json में ट्रैक किया जाता है।
स्वचालित संदर्भ वृद्धि
MCP सर्वर प्रासंगिक Klever VM संदर्भ के साथ क्वेरीज़ को स्वचालित रूप से बढ़ा सकता है। यह सुनिश्चित करता है कि आपके MCP क्लाइंट के पास हमेशा सबसे प्रासंगिक जानकारी तक पहुँच हो।
संदर्भ वृद्धि का उपयोग करना
किसी भी क्वेरी में स्वचालित रूप से प्रासंगिक संदर्भ जोड़ने के लिए enhance_with_context उपकरण का उपयोग करें:
{
"tool": "enhance_with_context",
"arguments": {
"query": "How do I create a storage mapper?",
"autoInclude": true
}
}
यह करेगा:
- क्वेरी से प्रासंगिक कीवर्ड निकालें
- मिलान संदर्भों के लिए ज्ञान आधार खोजें
- शामिल संदर्भ के साथ एक उन्नत क्वेरी लौटाएँ
- जो पाया गया उसके बारे में मेटाडेटा प्रदान करें
एकीकरण पैटर्न
MCP क्लाइंट के लिए जो हमेशा पहले Klever संदर्भ की जाँच करना चाहते हैं:
// Always enhance Klever-related queries
if (query.match(/klever|kvm|smart contract|endpoint/i)) {
const enhanced = await callTool('enhance_with_context', { query });
// Use enhanced.enhancedQuery for processing
}
संदर्भ वृद्धि सुविधा व्यापक ज्ञान आधार से प्रासंगिक Klever VM ज्ञान के साथ क्वेरीज़ को स्वचालित रूप से समृद्ध करती है।
एकीकरण उदाहरण
VS Code एक्सटेंशन
// Query for token transfer examples
const response = await fetch('http://localhost:3000/api/context/query', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
query: 'transfer',
types: ['code_example'],
contractType: 'token'
})
});
CLI उपकरण
# Using curl to add context
curl -X POST http://localhost:3000/api/context \
-H "Content-Type: application/json" \
-d '{
"type": "security_tip",
"content": "Always check for zero address",
"metadata": {
"title": "Zero Address Check",
"tags": ["security", "validation"]
}
}'
योगदान
योगदान का स्वागत है! कृपया:
- रिपॉजिटरी को फोर्क करें
- एक फीचर ब्रांच बनाएं
- अपने बदलाव करें
- टेस्ट जोड़ें
- पुल रिक्वेस्ट सबमिट करें
लाइसेंस
MIT लाइसेंस - विवरण के लिए LICENSE फ़ाइल देखें
आभार
- Context7 by Upstash से प्रेरित
- Klever Blockchain के लिए बनाया गया
- Klever VM SDK (Rust) का उपयोग करता है