fix(mcp): prevent redundant MCP server discovery calls at runtime, use cached tool schema instead#2273
Merged
waleedlatif1 merged 3 commits intostagingfrom Dec 9, 2025
Merged
fix(mcp): prevent redundant MCP server discovery calls at runtime, use cached tool schema instead#2273waleedlatif1 merged 3 commits intostagingfrom
waleedlatif1 merged 3 commits intostagingfrom
Conversation
…e cached tool schema instead
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
Greptile OverviewGreptile SummaryThis PR implements a significant performance optimization by using cached MCP tool schemas at runtime instead of repeatedly calling discovery endpoints. The key changes include:
The implementation maintains backward compatibility with legacy tools while providing significant performance gains for new workflows. The cached schema approach reduces MCP server connections from 2+ per tool execution (discovery + execution) to just 1 (execution only). Confidence Score: 5/5
Important Files ChangedFile Analysis
Sequence DiagramsequenceDiagram
participant Agent as Agent Block
participant Handler as AgentBlockHandler
participant Execute as /api/mcp/tools/execute
participant Service as McpService
participant MCP as MCP Server
Note over Agent,Handler: New Optimized Flow (with cached schema)
Agent->>Handler: formatTools(mcpTools with schema)
Handler->>Handler: processMcpToolsBatched()
Handler->>Handler: Separate tools with/without schema
alt Tool has cached schema
Handler->>Handler: createMcpToolFromCachedSchema()
Note over Handler: No MCP server connection needed!
Handler-->>Agent: Return tool definition
else Tool missing schema (legacy)
Handler->>Execute: GET /api/mcp/tools/discover
Execute->>Service: discoverServerTools()
Service->>MCP: listTools() via client
MCP-->>Service: Tool schemas
Service-->>Execute: Tool schemas
Execute-->>Handler: Tool schemas
Handler->>Handler: createMcpToolFromDiscoveredData()
Handler-->>Agent: Return tool definition
end
Note over Agent,Execute: Runtime Tool Execution
Agent->>Execute: POST /api/mcp/tools/execute
Note over Execute: With toolSchema parameter
alt toolSchema provided (new)
Execute->>Execute: Use provided schema, skip discovery
Execute->>Service: executeTool()
else No toolSchema (legacy)
Execute->>Service: discoverServerTools()
Service->>MCP: listTools()
MCP-->>Service: Tool schemas
Service-->>Execute: Tool schemas
Execute->>Service: executeTool()
end
Service->>MCP: callTool()
MCP-->>Service: Tool result
Service-->>Execute: Tool result
Execute-->>Agent: Tool result
|
waleedlatif1
added a commit
that referenced
this pull request
Dec 10, 2025
… docs, mcp, autolayout improvements (#2286) * fix(mcp): prevent redundant MCP server discovery calls at runtime, use cached tool schema instead (#2273) * fix(mcp): prevent redundant MCP server discovery calls at runtime, use cached tool schema instead * added backfill, added loading state for tools in settings > mcp * fix tool inp * feat(rate-limiter): token bucket algorithm (#2270) * fix(ratelimit): make deployed chat rate limited * improvement(rate-limiter): use token bucket algo * update docs * fix * fix type * fix db rate limiter * address greptile comments * feat(i18n): update translations (#2275) Co-authored-by: icecrasher321 <icecrasher321@users.noreply.github.com> * fix(tools): updated kalshi and polymarket tools to accurately reflect outputs (#2274) * feat(i18n): update translations (#2276) Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com> * fix(autolayout): align by handle (#2277) * fix(autolayout): align by handle * use shared constants everywhere * cleanup * fix(copilot): fix custom tools (#2278) * Fix title custom tool * Checkpoitn (broken) * Fix custom tool flash * Edit workflow returns null fix * Works * Fix lint * fix(ime): prevent form submission during IME composition steps (#2279) * fix(ui): prevent form submission during IME composition steps * chore(gitignore): add IntelliJ IDE files to .gitignore --------- Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com> Co-authored-by: Waleed <walif6@gmail.com> Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com> * feat(ui): logs, kb, emcn (#2207) * feat(kb): emcn alignment; sidebar: popover primary; settings-modal: expand * feat: EMCN breadcrumb; improvement(KB): UI * fix: hydration error * improvement(KB): UI * feat: emcn modal sizing, KB tags; refactor: deleted old sidebar * feat(logs): UI * fix: add documents modal name * feat: logs, emcn, cursorrules; refactor: logs * feat: dashboard * feat: notifications; improvement: logs details * fixed random rectangle on canvas * fixed the name of the file to align * fix build --------- Co-authored-by: waleed <walif6@gmail.com> * fix(creds): glitch allowing multiple credentials in an integration (#2282) * improvement: custom tools modal, logs-details (#2283) * fix(docs): fix copy page button and header hook (#2284) * improvement(chat): add the ability to download files from the deployed chat (#2280) * added teams download and chat download file * Removed comments * removed comments * component structure and download all * removed comments * cleanup code * fix empty files case * small fix * fix(container): resize heuristic improvement (#2285) * estimate block height for resize based on subblocks * fix hydration error * make more conservative --------- Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com> Co-authored-by: icecrasher321 <icecrasher321@users.noreply.github.com> Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com> Co-authored-by: Siddharth Ganesan <33737564+Sg312@users.noreply.github.com> Co-authored-by: mosa <mosaxiv@gmail.com> Co-authored-by: Emir Karabeg <78010029+emir-karabeg@users.noreply.github.com> Co-authored-by: Adam Gough <77861281+aadamgough@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Type of Change
Testing
Tested manually
Checklist