MCP Tools Reference for Context Agents
This guide documents the Model Context Protocol (MCP) tools required for the Context-Aware Agent system and provides usage examples for each.
MCP Tools Reference for Context Agents
Overview
This guide documents the Model Context Protocol (MCP) tools required for the Context-Aware Agent system and provides usage examples for each.
Required MCP Tools
1. ast-grep-mcp (Code Structure Analysis)
Purpose: Find exact code structures using AST (Abstract Syntax Tree) pattern matching.
Available Tools:
find_code: Simple pattern matching across codebasefind_code_by_rule: Complex YAML-based rule queriesdump_syntax_tree: Debug and understand code structuretest_match_code_rule: Test patterns before deployment
Core Usage Examples:
// Find a specific class
find_code({
pattern: "class UserController",
language: "csharp",
project_folder: "/path/to/project"
})
// Find all methods in a class
find_code({
pattern: "public $_ $METHOD_NAME($$$) { $$$ }",
language: "csharp",
project_folder: "backend/controllers"
})
// Find interface implementations
find_code({
pattern: "class $CLASS : IRepository<$TYPE>",
language: "csharp",
max_results: 10
})
// Find dependency injection patterns
find_code({
pattern: "private readonly $TYPE $_field;",
language: "csharp"
})
Advanced Pattern Matching:
// 1. Complex pattern with YAML rule for detailed analysis
find_code_by_rule({
yaml: `
id: find-service-constructors
language: csharp
rule:
pattern: |
public $NAME($$$PARAMS) : base($$$ARGS)
{
$$$BODY
}
inside:
pattern: class $CLASS : ServiceBase
kind: class_declaration
`,
project_folder: "backend/Services"
})
// 2. Pattern matching for architectural validation
find_code_by_rule({
yaml: `
id: validate-repository-pattern
language: csharp
rule:
pattern: |
class $REPO : IRepository<$ENTITY>
{
private readonly $CONTEXT _context;
public async Task<$ENTITY> GetByIdAsync($ID id)
{
$$$BODY
}
}
inside:
pattern: namespace $NAMESPACE.Repositories
kind: namespace_declaration
`,
max_results: 20
})
// 3. Debug complex patterns by examining syntax tree
dump_syntax_tree({
code: "public class UserService : IUserService { private readonly DbContext _context; }",
language: "csharp",
format: "ast"
})
Integration with GitHub MCP Workflow:
// After finding patterns on GitHub, validate and adapt to local codebase
async function adaptGitHubPatternToLocal(githubPattern, localProject) {
// 1. Test if GitHub pattern works locally
const testResult = test_match_code_rule({
code: githubPattern,
yaml: generateRuleFromPattern(githubPattern)
});
if (!testResult.matches) {
// 2. Find similar local patterns
const localPatterns = find_code({
pattern: adaptPatternToLocalSyntax(githubPattern),
language: "csharp",
project_folder: localProject
});
// 3. Analyze structural differences
const localSyntax = dump_syntax_tree({
code: localPatterns[0].code,
language: "csharp",
format: "ast"
});
return adaptPatternToProjectStandards(githubPattern, localSyntax);
}
return githubPattern;
}
Best Practices:
- Use
find_codefor simple pattern searches - Use
find_code_by_rulefor complex structural queries - Use
dump_syntax_treeto debug pattern matching issues - Use
test_match_code_rulebefore deploying complex patterns - Combine with GitHub MCP: find external patterns → validate with ast-grep → adapt to local codebase
- Specify
project_folderto limit search scope and improve performance - Use
max_resultsto avoid overwhelming context windows
Pattern Development Workflow:
- Discovery: Use GitHub MCP to find best practice patterns
- Validation: Use
test_match_code_ruleto test patterns locally - Adaptation: Use
dump_syntax_treeto understand local vs external differences - Implementation: Use
find_code_by_ruleto find all places needing updates - Verification: Use
find_codeto confirm changes were applied correctly
Language-Specific Patterns:
// C# Controller patterns
find_code({
pattern: "[Route(\"api/[controller]\")] public class $CONTROLLER : ControllerBase",
language: "csharp"
})
// Dependency injection patterns
find_code({
pattern: "public $CLASS($$$_PARAMS) { $$$_PARAMS.ForEach(param => _param = param; } }",
language: "csharp"
})
// Entity Framework patterns
find_code({
pattern: "public DbSet<$ENTITY> $ENTITIES { get; set; }",
language: "csharp"
})
// Async/await patterns
find_code({
pattern: "public async Task<$RETURN> $METHOD($$$PARAMS) { await $CALL; }",
language: "csharp"
})
2. semantic_search (Pattern Matching)
Purpose: Find similar code patterns and implementations across the codebase using semantic understanding.
Capabilities:
- Find similar implementations
- Identify architectural patterns
- Discover naming conventions
- Locate related functionality
- Search by concept, not exact syntax
Usage Examples:
// Find authentication implementations
semantic_search.query({
query: "authentication service implementation",
limit: 5
})
// Find repository pattern examples
semantic_search.query({
query: "repository pattern with Entity Framework",
file_types: [".cs"],
limit: 3
})
// Find API controller patterns
semantic_search.query({
query: "REST API controller with validation",
directory: "backend/controllers",
limit: 5
})
// Find dependency injection setup
semantic_search.query({
query: "dependency injection configuration startup",
limit: 3
})
Best Practices:
- Use descriptive, concept-based queries
- Limit results to avoid overwhelming context
- Focus on architectural patterns, not specific implementations
- Combine with ast-grep for precise extraction
3. github_mcp (External Best Practices)
Purpose: Search GitHub for high-quality code examples and best practices using your configured GitHub MCP server.
Available Tools:
search_repositories: Find repositories by topic, language, starssearch_code: Find specific code patterns across repositoriesget_file_contents: Retrieve complete file contents from repositories
Usage Examples:
// Search for XUnit testing repositories
search_repositories({
query: "XUnit .NET 8 testing patterns language:C# stars:>1000",
sort: "stars",
order: "desc",
per_page: 5
})
// Search for specific code patterns
search_code({
query: "IClassFixture Xunit language:C#",
sort: "indexed",
order: "desc",
per_page: 10
})
// Get complete file contents for detailed analysis
get_file_contents({
owner: "dotnet",
repo: "samples",
path: "core/testing/xunit-basic/UnitTest1.cs",
ref: "main"
})
Advanced Usage Patterns:
// 1. Repository-first approach: Find repos, then explore files
const repos = await search_repositories({
query: "ASP.NET Core Identity Clean Architecture language:C# stars:>500",
sort: "stars",
per_page: 3
});
for (const repo of repos) {
// Search for specific patterns within the repo
const codeResults = await search_code({
query: `repo:${repo.full_name} IIdentityService language:C#`,
sort: "indexed"
});
// Get complete implementation files
for (const result of codeResults) {
const fileContent = await get_file_contents({
owner: repo.owner.login,
repo: repo.name,
path: result.path
});
}
}
// 2. Code-first approach: Find patterns, then get context
const authServices = await search_code({
query: "class AuthenticationService : IAuthenticationService language:C#",
sort: "indexed",
per_page: 5
});
// 3. Technology-specific searches
const entityFrameworkPatterns = await search_repositories({
query: "Entity Framework Core repository pattern unit-of-work language:C# stars:>1000",
sort: "updated",
per_page: 5
});
Best Practices:
- Always filter by stars (>500 or >1000) for quality
- Use
sort: "updated"for recent best practices - Combine
search_repositories+search_codefor comprehensive analysis - Use
get_file_contentsfor complete implementations, not just snippets - Cache results immediately to mcp_memory with rich metadata
- Prefer
language:C#filter for .NET projects to reduce noise
Integration with ast-grep: After finding patterns with GitHub MCP, use ast-grep to:
- Find similar patterns in your local codebase
- Validate that external patterns match your project structure
- Adapt external patterns to your coding standards
Cost Considerations:
- GitHub API rate limits: 5,000 requests/hour (authenticated)
- Each search and file fetch counts against quota
- Always check mcp_memory first before GitHub searches
- Cache complete file contents to minimize future API calls
- Use
get_file_contentssparingly - prefer search results when possible
4. mcp_memory (Knowledge Graph & Memory Cache)
Purpose: Store and retrieve research findings as a knowledge graph to enable knowledge reuse and cost savings.
Available Tools:
search_nodes: Semantic search across stored knowledge graphcreate_entities: Store new knowledge entities (code patterns, best practices)create_relations: Create relationships between knowledge entitiesread_graph: Read the complete knowledge graph structureopen_nodes: Retrieve specific entities by nameadd_observations: Add new observations to existing entitiesdelete_entities,delete_relations,delete_observations: Manage knowledge graph
Core Usage Examples:
// Search for cached knowledge (primary method)
search_nodes({
query: "XUnit setup for .NET 8"
})
// Create comprehensive knowledge entity
create_entities({
entities: [{
name: "XUnit Setup for .NET 8",
entityType: "Technology Pattern",
observations: [
"Use IClassFixture for shared setup between tests",
"Implement IAsyncLifetime for async test initialization",
"Use CollectionFixtures for database integration tests",
"Configure test services in separate fixture classes"
]
}]
})
// Create relationships between patterns
create_relations({
relations: [{
from: "XUnit Setup for .NET 8",
to: "Entity Framework Core Testing",
relationType: "used_with"
}]
})
// Add new findings to existing knowledge
add_observations({
observations: [{
entityName: "XUnit Setup for .NET 8",
contents: [
"Use TheoryData for parameterized tests with complex objects",
"Implement CustomAttribute for test categorization"
]
}]
})
Advanced Usage Patterns:
// 1. Technology-specific searches with context
search_nodes({
query: "authentication patterns ASP.NET Core JWT"
})
// 2. Pattern relationship analysis
const searchResults = await search_nodes({ query: "repository pattern" });
const relatedNodes = searchResults.map(result =>
open_nodes({ names: [result.name] })
);
// 3. Complete knowledge graph read for analysis
const fullGraph = await read_graph();
const csharpPatterns = fullGraph.nodes.filter(node =>
node.observations.some(obs =>
obs.includes("C#") || obs.includes(".NET")
)
);
// 4. Pattern discovery and relationship mapping
async function discoverPatternRelationships(patternName) {
const entity = await open_nodes({ names: [patternName] });
const relatedSearch = await search_nodes({
query: `patterns related to ${patternName}`
});
// Create relationships if they don't exist
await create_relations({
relations: relatedSearch.map(related => ({
from: patternName,
to: related.name,
relationType: "similar_to"
}))
});
}
Knowledge Organization Strategy:
// 1. Store technology-specific patterns
create_entities({
entities: [{
name: "ASP.NET Core Dependency Injection",
entityType: "Architecture Pattern",
observations: [
"Use AddScoped for services with per-request lifetime",
"Use AddSingleton for application-wide services",
"Use AddTransient for short-lived services",
"Configure services in Program.cs or Startup.cs"
]
}]
})
// 2. Create implementation relationships
create_relations({
relations: [
{ from: "ASP.NET Core Dependency Injection", to: "Service Pattern", relationType: "enables" },
{ from: "Service Pattern", to: "Repository Pattern", relationType: "often_used_with" },
{ from: "Repository Pattern", to: "Entity Framework Core", relationType: "implements" }
]
})
// 3. Store code examples as observations
add_observations({
observations: [{
entityName: "Service Pattern",
contents: [
"public class UserService : IUserService { private readonly IRepository<User> _repository; }",
"Constructor injection preferred over property injection",
"Use interfaces for dependency inversion"
]
}]
})
Integration with Context Engineer:
The context engineer should:
- Always search first:
search_nodes()before any external research - Create rich entities: Use
create_entities()with comprehensive observations - Map relationships: Use
create_relations()to connect related patterns - Build knowledge graph: Continuously expand the organizational knowledge base
- Update usage: Track which patterns are most valuable through repeated access
Best Practices:
- Always search memory first before external APIs using
search_nodes() - Store knowledge as entities with descriptive names and types
- Create meaningful relationships between related concepts
- Include comprehensive observations (patterns, code snippets, sources)
- Use
add_observations()to enhance existing knowledge rather than creating duplicates - Query the knowledge graph to understand patterns before external research
- Build relationships to create a comprehensive knowledge network
Knowledge Accumulation Benefits:
- First task: Cache miss → External search → Create entities + relations
- Second task: Cache hit → Skip external search → 60% cost savings
- Fifth task: Rich graph traversal → Related pattern discovery → 80% cost savings
- Tenth+ task: Complete knowledge graph → Instant recommendations → 90% cost savings
Context Engineer Documentation: The context engineer writes context.md files directly to the filesystem, not returning content to the orchestrator. This ensures:
- Context files are created in the correct PRD directories
- File system permissions are properly handled
- Direct integration with the code agent workflow
- Immediate availability for implementation tasks
Integration Workflow
Enhanced Step-by-Step MCP Tool Usage
1. Task Received
↓
2. ast-grep-mcp: Find current code structures and patterns
↓
3. semantic_search: Find similar internal patterns
↓
4. mcp_memory.search: Check for cached knowledge
↓
[Found in cache?]
↓ NO ↓ YES
5a. GitHub MCP Research 5b. Use cached results
│ ↓
├─ 5a.1. search_repositories: Find quality repos
│ ↓
├─ 5a.2. search_code: Find specific patterns
│ ↓
├─ 5a.3. get_file_contents: Get complete examples
│ ↓
├─ 5a.4. ast-grep-mcp: Validate patterns locally
│ ↓
└─ 5a.5. ast-grep-mcp: Adapt to project structure
↓
6a. mcp_memory.store 6b. mcp_memory.update (last_used)
↓ ↓
7. Generate implementation plan
↓
8. Write context.md file
GitHub MCP + ast-grep Synergy Workflow
Phase 1: External Discovery (GitHub MCP)
1. search_repositories: "ASP.NET Core Clean Architecture stars:>1000"
↓
2. search_code: "IRepository pattern implementation language:C#"
↓
3. get_file_contents: Download complete implementations
Phase 2: Local Validation (ast-grep)
4. test_match_code_rule: Test if external patterns work locally
↓
5. find_code: Find similar existing patterns in codebase
↓
6. dump_syntax_tree: Analyze structural differences
Phase 3: Pattern Adaptation
7. find_code_by_rule: Locate all places needing updates
↓
8. Create context-specific implementation plan
Cost Optimization Strategy
First Run (Cold Start):
- ast-grep (internal analysis): ~0.2s (local)
- semantic_search: ~0.5s (local)
- mcp_memory: ~0.2s (cache miss)
- GitHub MCP (research): ~3-5s (external API)
- search_repositories: ~1s
- search_code: ~1-2s
- get_file_contents: ~1-2s
- ast-grep (validation): ~0.3s (local)
- Total: ~4-6 seconds
Subsequent Runs (Warm Cache):
- ast-grep (internal analysis): ~0.2s (local)
- semantic_search: ~0.5s (local)
- mcp_memory: ~0.2s (cache hit)
- GitHub MCP: SKIPPED
- ast-grep (validation): SKIPPED
- Total: ~0.9 seconds (85% faster)
Cache Effectiveness:
- 1st similar task: Full cost, full research
- 2nd similar task: ~60% cost reduction (cached external research)
- 5th similar task: ~80% cost reduction
- 10th+ similar task: ~90% cost reduction
Quality Assurance Workflow
Pattern Quality Validation:
- GitHub Quality Filters: stars:>1000, updated recently, language-specific
- ast-grep Validation: Test patterns in local context before implementation
- Syntax Analysis: Use
dump_syntax_treeto ensure compatibility - Pattern Adaptation: Modify external patterns to match project standards
Implementation Verification:
- Pre-implementation:
test_match_code_ruleto validate patterns - During implementation:
find_code_by_ruleto locate all instances - Post-implementation:
find_codeto verify changes applied correctly
Error Recovery Strategy
GitHub API Rate Limited:
- Fall back to cached mcp_memory results
- Use generic best practices from LLM knowledge
- Mark as "limited external research" in context file
ast-grep Pattern Fails:
- Simplify pattern syntax
- Use
dump_syntax_treeto debug - Fall back to basic text search
- Note pattern limitations in context
Memory Cache Miss:
- Proceed with full GitHub MCP research
- Cache results aggressively for future use
- Update knowledge base with new patterns
Authentication & Setup
ast-grep-mcp
- Setup: Install ast-grep CLI
- Config: No authentication required
- Limits: Local execution, no rate limits
semantic_search
- Setup: Configure with codebase index
- Config: May require initial indexing
- Limits: Local execution, no rate limits
github_mcp
- Setup: GitHub Personal Access Token required
- Config: Set GITHUB_TOKEN environment variable
- Limits: 5,000 requests/hour (authenticated)
mcp_memory
- Setup: Qdrant or compatible vector DB
- Config: Connection string and API key
- Limits: Depends on hosting plan
Troubleshooting
ast-grep returns no results
- Cause: Pattern syntax incorrect
- Solution: Simplify pattern, check language syntax
semantic_search returns too many results
- Cause: Query too broad
- Solution: Add more specific terms, limit by directory
github_mcp rate limit exceeded
- Cause: Too many API calls
- Solution: Use mcp_memory cache more aggressively
mcp_memory connection failed
- Cause: Vector DB unavailable
- Solution: Skip caching, proceed with external search
Next Steps
- See
RESEARCH_ORCHESTRATION_PROTOCOL.mdfor complete research workflow - See
CONTEXT_WORKFLOW_GUIDE.mdfor end-to-end process - See
context_template.mdfor output format
Related Documents
Datalevin MCP Server
`dtlv mcp` runs a Datalevin MCP server over `stdio`.
WAVS MCP Server
`wavs-mcp` is a [Model Context Protocol](https://modelcontextprotocol.io) server that exposes WAVS platform operations to AI clients over stdio. It lets Claude Desktop, Cursor, VS Code, and other MCP-compatible clients query a live WAVS node, scaffold and build WASM components, upload binaries, deploy services, and simulate triggers — all from natural language.
一次性多版本
注意 wails 应该和 ChYing 目录在一级,也就是 ls
Heti AI Ökoszisztéma Figyelő
title: "Heti AI Ökoszisztéma Figyelő"