@@ -7,8 +7,8 @@ schema_type: tutorial
77
88In this tutorial, you'll install the ToolHive command-line application and run
99your first MCP server. By the end, you'll have a working MCP server that can
10- fetch content from websites and be used by AI applications like GitHub Copilot
11- or Cursor.
10+ answer questions about ToolHive and be used by AI applications like GitHub
11+ Copilot or Cursor.
1212
1313## What you'll learn
1414
@@ -104,14 +104,19 @@ thv registry list
104104You'll see output similar to this:
105105
106106``` text
107- NAME DESCRIPTION TIER STARS PULLS
108- atlassian Model Context Protocol (MCP) server for Atlassian product... Community 2194 7789
109- fetch A Model Context Protocol server that provides web content... Community 56714 9078
110- github The GitHub MCP Server provides seamless integration with ... Official 16578 5000
111- notion Official Notion MCP server. Official 2358 1109
107+ NAME TYPE DESCRIPTION TIER STARS PULLS
108+ io.github.stacklok/atlassian container Connect to Atlassian products like Confluence, ... Community 5002
109+ io.github.stacklok/fetch container A Model Context Protocol server that provides ... Community 56714
110+ io.github.stacklok/github container The GitHub MCP Server provides seamless integr... Official 16578
111+ io.github.stacklok/notion container Official Notion MCP server. Official 2358
112+ io.github.stacklok/toolhive-doc-mcp container Search ToolHive docs for help with using and c... Official 3
113+ io.github.stacklok/toolhive-doc-mcp-remote remote Search ToolHive docs for help with using and c... Official 3
112114...
113115```
114116
117+ The ` TYPE ` column shows whether the server runs as a local ` container ` or is a
118+ hosted ` remote ` endpoint that ToolHive proxies to.
119+
115120This shows all the MCP servers available in the ToolHive registry.
116121
117122:::info[ What's happening?]
@@ -122,48 +127,38 @@ to help you find and launch servers.
122127
123128:::
124129
125- For this tutorial, you'll use the "fetch" server, which is a simple MCP server
126- that lets AI agents get the contents of a website . To learn more about the
127- server before running it, run:
130+ For this tutorial, you'll use the ` toolhive-doc-mcp ` server, which lets AI
131+ agents search the ToolHive documentation . To learn more about the server before
132+ running it, run:
128133
129134``` bash
130- thv registry info fetch
135+ thv registry info toolhive-doc-mcp
131136```
132137
133138This shows you detailed information about the server, including what tools it
134139provides and any configuration options.
135140
136- ## Step 3: Run the Fetch MCP server
141+ ## Step 3: Run the toolhive-doc-mcp server
137142
138- Now, run the Fetch server:
143+ Now, run the server:
139144
140145``` bash
141- thv run fetch
146+ thv run toolhive-doc-mcp
142147```
143148
144- ToolHive will pull the container image and start the server. You'll see output
145- similar to this:
149+ ToolHive pulls the container image and starts the server in the background.
150+ You'll see a log line similar to this:
146151
147152``` text
148- 8:41AM INF MCP server ghcr.io/stackloklabs/gofetch/server:latest is verified successfully
149- 8:41AM INF Image ghcr.io/stackloklabs/gofetch/server:latest has 'latest' tag, pulling to ensure we have the most recent version...
150- 8:41AM INF Pulling image: ghcr.io/stackloklabs/gofetch/server:latest
151- Pulling from stackloklabs/gofetch/server: latest
152- Digest: sha256:b9cbe3a8367f39e584d3fdd96d9c5046643c5f4798c3372b0c9049ece202cdef
153- Status: Image is up to date for ghcr.io/stackloklabs/gofetch/server:latest
154- 8:41AM INF Successfully pulled image: ghcr.io/stackloklabs/gofetch/server:latest
155- 8:41AM INF Using target port: 15266
156- 8:41AM INF Logging to: ~/Library/Application Support/toolhive/logs/fetch.log
157- 8:41AM INF MCP server is running in the background (PID: 16834)
158- 8:41AM INF Use 'thv stop fetch' to stop the server
153+ {"time":"2026-05-18T09:49:14-04:00","level":"INFO","msg":"logging to","path":"~/Library/Application Support/toolhive/logs/toolhive-doc-mcp.log"}
159154```
160155
156+ The full server logs are written to the file shown in the ` logging to ` line.
157+
161158:::info[ What's happening?]
162159
163160When you run an MCP server, ToolHive:
164161
165- - Verifies the MCP server image provenance (if attestation information is
166- available in the registry)
167162- Downloads the container image
168163- Sets up the container with the necessary security settings and starts it in
169164 the background
@@ -172,6 +167,17 @@ When you run an MCP server, ToolHive:
172167
173168:::
174169
170+ :::tip[ Prefer not to run a container?]
171+
172+ ToolHive also ships a hosted version of the docs server. Run
173+ ` thv run toolhive-doc-mcp-remote ` instead to connect to the hosted endpoint at
174+ ` https://toolhive-doc-mcp.stacklok.com/mcp ` without pulling an image. ToolHive
175+ sets up the same kind of proxy, so the rest of this tutorial works the same way,
176+ but commands that reference the workload name should use
177+ ` toolhive-doc-mcp-remote ` .
178+
179+ :::
180+
175181## Step 4: Verify the server is running
176182
177183Check that the server is running:
@@ -183,11 +189,12 @@ thv list
183189You should see output similar to this:
184190
185191``` text
186- NAME PACKAGE STATUS URL PORT TOOL TYPE CREATED AT
187- fetch ghcr.io/stackloklabs/gofetch/server:latest running http://127.0.0.1:15266 /mcp 15266 mcp 2025-07-10 08:41:56 -0400 EDT
192+ NAME PACKAGE STATUS URL PORT GROUP CREATED
193+ toolhive-doc-mcp ghcr.io/stackloklabs/toolhive-doc-mcp:v0.0.14-20260518 running http://127.0.0.1:19767 /mcp 19767 default 2026-05-18 09:49:14 -0400 EDT
188194```
189195
190- This confirms that the fetch server is running and available on port 15266.
196+ This confirms that the server is running. ToolHive picks a free local port at
197+ startup, so your port number will be different.
191198
192199:::info[ What's happening?]
193200
@@ -237,22 +244,22 @@ that you run.
237244## Step 6: Use the MCP server with your AI client
238245
239246If you completed Step 5, you can now use the MCP server with your AI client
240- application. Open your supported client (VS Code, Cursor, etc.) and ask the AI
241- to fetch content from a website . Note that you might need to restart your client
242- for the changes to take effect.
247+ application. Open your supported client (VS Code, Cursor, etc.) and ask the AI a
248+ question about ToolHive . Note that you might need to restart your client for the
249+ changes to take effect.
243250
244- For example, try asking: "Can you fetch the content from https://toolhive.dev
245- and summarize it for me ?"
251+ For example, try asking: "What is a Virtual MCP Server and how do I use it with
252+ ToolHive ?"
246253
247- The AI should be able to use the Fetch MCP server to retrieve the content and
248- provide a summary .
254+ The AI calls the ` query_docs ` tool to search the ToolHive documentation and uses
255+ the results to compose an answer .
249256
250257:::info[ What's happening?]
251258
252- When you ask the AI to fetch content, it detects that it needs external data. It
253- discovers the fetch tool provided by your MCP server, calls the tool with the
254- URL you specified, receives the webpage content, and then processes that content
255- to create a summary .
259+ When you ask a question about ToolHive, the AI client discovers the ` query_docs `
260+ and ` get_chunk ` tools your MCP server exposes , calls them to search the official
261+ ToolHive documentation, then uses the returned passages to construct a grounded
262+ answer instead of relying on its training data alone .
256263
257264:::
258265
@@ -261,13 +268,13 @@ to create a summary.
261268When you're finished using the server, you can stop it:
262269
263270``` bash
264- thv stop fetch
271+ thv stop toolhive-doc-mcp
265272```
266273
267274If you want to remove it completely:
268275
269276``` bash
270- thv rm fetch
277+ thv rm toolhive-doc-mcp
271278```
272279
273280:::info[ What's happening?]
@@ -324,9 +331,12 @@ the client, port conflicts, etc.).
324331
325332A few quick checks specific to this tutorial:
326333
327- - Confirm Docker, Podman, or Colima is running before ` thv run fetch ` .
328- - If port 15266 is already in use, pass a specific port with ` --proxy-port ` , for
329- example ` thv run --proxy-port 8081 fetch ` .
334+ - Confirm Docker, Podman, or Colima is running before ` thv run toolhive-doc-mcp `
335+ (or use the ` toolhive-doc-mcp-remote ` variant, which doesn't need a container
336+ runtime).
337+ - ToolHive picks a free local port for the proxy at startup. If you need a
338+ specific port, pass ` --proxy-port ` , for example
339+ ` thv run --proxy-port 8081 toolhive-doc-mcp ` .
330340- After running ` thv client setup ` , restart your AI client so it picks up the
331341 new configuration.
332342
0 commit comments