Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • Getting Started with AI for VLSI Engineers5
  • Just Enough AI: Models and Context15
  • Prompting13
  • Trust and Verification14
  • Using AI for Engineering Work17
  • Engineering Walkthroughs7
  • Practical Foundations for AI Workflows4
  • Engineering Data5
  • Retrieval-Augmented Generation6
  • Agents and Tool Use18
  • Agent Design8
  • MCP and Skills6
    • What MCP Is
    • Clients, Servers, and Capabilities
    • Connect Read-Only Tools
    • Permissions and Untrusted Content
    • Reusable Engineering Skills
    • One-Tool Server Extension
  • Multi-Agent Design6
  • Practical Capstone6
  • Tokens, Cost and Latency12
  • Agentic Workflows for Chip Teams18
  • Interview and Judgment10
  • AI Skills: Full Course Index
  • Working with AI Glossary
  • Working with AI Cheatsheet
Loading lesson

‹MCP and Skills
  1. Topics
  2. AI Skills for VLSI Engineers
  3. MCP and Skills
  4. Connect Read-Only Tools

MCP and Skills · Beginner

Connect Read-Only Tools

Walk through a complete, labelled MCP 2025-11-25 search exchange over an approved synthetic report snapshot.

On this page

    The problem: getting a bounded excerpt

    An STA beginner needs to answer: 'What does the training snapshot say about setup slack?' The desired output is a short summary with report identity and lines, not an attempted fix. For this paper walkthrough, assume a reviewed local report service has access only to an in-memory synthetic training-r1 fixture. Its sole tool searches those fixtures using literal text matching and returns at most three excerpts. No connection or model call is performed here.

    Before the first message

    In a real approved environment, first identify the host's supported transport, review the server launch entry or remote endpoint, and confirm the report boundary. Inspect where tool results and conversation history are stored or sent, since read-only data may still leave the server. Complete any required identity flow through the host's supported mechanism. For this synthetic local fixture there is no credential exchange. These are conceptual connection steps, not configuration to paste into a product.

    The trace below contains complete JSON-RPC message objects in order. Direction labels and blank lines are teaching annotations, not bytes sent on the transport. It uses the 2025-11-25 initialization sequence and tool discovery and invocation. Other revisions must follow their own lifecycle. The fictional implementation versions identify this exercise only.

    Synthetic trace: initialize and inspect

    plaintext
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SYNTHETIC TRACE - not captured traffic; no server was run
    
    Client -> Server
    {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"training-client","version":"0.1.0"}}}
    
    Server -> Client
    {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{}},"serverInfo":{"name":"training-reports","version":"0.1.0"}}}
    
    Client -> Server (notification: no response)
    {"jsonrpc":"2.0","method":"notifications/initialized"}
    
    Client -> Server
    {"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}
    
    Server -> Client
    {"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"search_reports","description":"Search approved synthetic training-r1 excerpts using literal text matching.","inputSchema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":80},"limit":{"type":"integer","minimum":1,"maximum":3}},"required":["query","limit"],"additionalProperties":false},"annotations":{"readOnlyHint":true}}]}}

    Inspect the returned name and argument bounds before choosing a call. The host policy for this exercise permits only search_reports against training-r1. The readOnlyHint is metadata to review, not enforcement. Because tools/list returned no nextCursor, this example has no additional discovery page. If pagination were present, an inspection should account for it. An unsupported returned protocol version would stop this walkthrough before tool invocation.

    Synthetic trace: request, result, and closure

    plaintext
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Client -> Server
    {"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_reports","arguments":{"query":"WNS","limit":1}}}
    
    Server -> Client
    {"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"SYNTHETIC training-r1 | sta-01 | slow-demo | core_clk | lines 12-14: WNS = -0.08 ns; violating endpoints = 3; detailed paths not included. Search truncated: false."}],"isError":false}}
    
    Host -> Engineer (worked answer, not an MCP message or model output)
    SYNTHETIC training-r1, sta-01, lines 12-14 reports setup WNS
    of -0.08 ns and three violating endpoints at slow-demo for core_clk.
    The excerpt does not identify a root cause or establish signoff.
    
    Transport closure: the client closes the local server's input stream
    and waits for process exit under its shutdown policy.
    There is no JSON-RPC shutdown method in this pinned lifecycle.

    Request IDs match each response to its request: initialization uses 1, discovery uses 2, and the actual search uses 3. The initialized notification has no ID and receives no response. Only request 3 searches reports. A text result is valid here; this tool advertises no structured output schema. The report identity and conditions are carried in the text so the worked answer can point back to evidence.

    Exercise: distinguish no evidence from a failure

    On paper, change the query to 'hold' with limit 1. Define the fixture's no-match response as a successful text result saying 'SYNTHETIC training-r1: zero matching excerpts; search truncated: false.' Separately consider an unavailable snapshot, which this exercise defines as a tool execution error with isError true. Write one appropriate user-facing sentence for each outcome, and explain why neither permits a claim that hold timing passed.

    Check yourself What are the expected checks?

    For zero matches, say no matching excerpt was found in the searched snapshot; this is not a hold analysis result. For unavailable data, say the search failed and the result is unknown. Match the response ID, inspect isError, preserve scope, and avoid repeatedly retrying a deterministic failure. The timeout and retry budget belong to the host's operating policy.

    Limitations

    A successful exchange establishes that a tool returned an excerpt, not that the fixture is complete or current. Literal matching may miss synonymous terms or reports stored elsewhere. An empty result is not evidence of a clean design. The walkthrough omits product configuration and HTTP authorization traffic because it specifies a local, credential-free synthetic fixture.

    Related topics

    • Up: MCP and Skills

    • Next lesson

    Previous

    115 / 173

    Next: Permissions and Untrusted Content

    Up next

    Up nextPermissions and Untrusted Content

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • What MCP Is
    • Reusable Engineering Skills
    • One-Tool Server Extension