mcp-server-demo
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-demowhat's the weather in Tokyo?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server Demo (Python)
Quickstart (local run)
Create and activate a virtual environment.
python -m venv .venv
source .venv/bin/activateInstall Python dependencies.
pip install -U pip
pip install -r requirements.txt
pip install -e .Set up environment variables.
cp .env.example .envFill in your OPENAI_API_KEY and keep MCP_DEMO_DB_PATH=demo.db. If you want to use file tools, set MCP_FILE_OPS_ROOT to a local folder path that the server is allowed to manage.
You will fill out the MCP_SERVER_URL in a later step
If you plan to expose your local MCP server publicly, make sure ngrok is installed
sudo snap install ngrokand your account is set up and authenticated first. You can set up an account for free. Once set up, add token using terminalngrok config add-authtoken <AUTHTOKEN>You can find the token onhttps://dashboard.ngrok.com/get-started/your-authtokenStart the MCP server (HTTP transport).
MCP_TRANSPORT=streamable-http MCP_HOST=0.0.0.0 MCP_PORT=8000 MCP_PATH=/mcp mcp-server-demoIn a new terminal, start ngrok.
ngrok http 8000Once you have ngrok running, you need to update MCP_SERVER_URL in your .env file
use the address from 'Forwarding'. Your .env will now look like MCP_SERVER_URL=<Full forwarding Address>/mcp
(Optional) In another terminal, run MCP Inspector.
npx @modelcontextprotocol/inspectorIt should open up a web browser. In the left hand panel update Command to be mcp-server-demo
Press connect. You can select "tools" in the top menu to test the available tools and see history and notifications at the bottom of the page
(Optional) Launch the Streamlit client.
streamlit run web_client.pyA from-scratch local MCP server with tools for weather, SQLite reads, and local file operations:
weather(city)→ current weather via wttr.inquery_db(sql)→ read-only SQLite SELECT querymake_directory(path)→ create directories insideMCP_FILE_OPS_ROOTmove_file(source_path, destination_path)→ move files insideMCP_FILE_OPS_ROOTmove_files_by_glob(source_dir, pattern, destination_dir)→ move many files in one call (e.g.,*.txt)list_files(path=".")→ list files in a folder insideMCP_FILE_OPS_ROOTlist_directories(path=".")→ list directories in a folder insideMCP_FILE_OPS_ROOTread_file(path)→ read text files insideMCP_FILE_OPS_ROOTinspect_file(path, preview_chars=4000, include_base64=False)→ metadata + preview for text/csv/image filesanalyze_image_with_openai(path, prompt, model='gpt-4.1-mini')→ send image to OpenAI vision-capable model
Related MCP server: Swiss Meteo MCP
Notes
Default local MCP endpoint is:
http://127.0.0.1:8000/mcpThe server creates
demo.dbautomatically with sample rows.npxrequires Node.js/npm installed locally.streamlitis included inrequirements.txt.
OpenAI API integration option
Ensure
.envincludes your key and MCP server URL.Start server in HTTP mode.
Run:
python client_openai_api.pyTool behavior
weather(city: str)
Returns JSON summary fields including temperature, feels-like, humidity, wind, and short conditions.
query_db(sql: str)
Allows only
SELECT ...queries.Returns rows as JSON.
Rejects non-SELECT SQL for safety in this starter demo.
Project files
server.py— FastMCP server + tool definitions.client_openai_api.py— simple OpenAI API call that can invoke MCP tools.web_client.py— Streamlit chat client.pyproject.toml— package metadata + script entrypoint.requirements.txt— pinned runtime dependencies for local setup.
File operation tools
All file operations are constrained to
MCP_FILE_OPS_ROOT.The server rejects paths that try to escape that root.
MCP_FILE_OPS_ROOTdirectories are created automatically if they do not exist.
Available Tools
10 toolsanalyze_image_with_openaiC
Analyze an image file with an OpenAI vision-capable model.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| prompt | Yes | ||
| model | No | gpt-4.1-mini |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the high-level action without disclosing any behavioral traits (e.g., file size limits, authentication needs, side effects). The existence of an output schema is not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence, but it is under-specified. While it avoids fluff, it sacrifices necessary detail, making it minimally adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters with no descriptions and no annotations, the description is insufficient. It does not cover parameter semantics, output, or usage context, leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to the parameters 'path', 'prompt', or 'model'. It does not explain their purpose, format, or constraints, leaving the agent to rely solely on parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes an image file with an OpenAI vision-capable model, specifying the verb and resource. However, it does not differentiate from sibling tools like inspect_file, which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lacks context about prerequisites, suitable scenarios, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_fileC
Return file metadata and content preview for text/csv/image workflows.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| preview_chars | No | ||
| include_base64 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It omits details about metadata fields, preview truncation, handling of non-text files, or effects of parameters like include_base64. The behavioral traits are insufficiently transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it sacrifices essential detail about parameters and behavioral context. It is neither verbose nor well-structured for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and no annotations, the description is largely incomplete. It fails to convey how the tool works in various workflows (e.g., image vs. csv), what metadata is returned, or how preview_chars affects output. The presence of an output schema does not excuse the lack of high-level context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description does not explain any parameter's meaning beyond the schema. Terms like path, preview_chars, and include_base64 are left undefined, forcing reliance on parameter names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'return', the resource 'file metadata and content preview', and the context 'for text/csv/image workflows'. It effectively distinguishes from sibling tools like read_file (full content) and list_files (names).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use inspect_file versus alternatives such as read_file or analyze_image_with_openai. There are no examples or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoriesC
List directories directly inside a folder within MCP_FILE_OPS_ROOT.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states it lists directories directly inside a folder (non-recursive) and within MCP_FILE_OPS_ROOT. However, it omits details like handling of hidden directories, symlinks, error cases, permissions, or return structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It is front-loaded and direct, though it could be slightly expanded to include key behavioral details without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and available output schema, the description lacks completeness. It does not mention edge cases, path interpretation (relative/absolute), error handling, or how the tool integrates with sibling tools like list_files. The scope is noted but additional context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has one parameter (path) with 0% description coverage. The description adds no additional meaning about the parameter's format, constraints, or default behavior, leaving the agent to infer from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists directories directly inside a folder, and scopes it to MCP_FILE_OPS_ROOT. The verb 'List' and resource 'directories' are specific, but it does not distinguish from sibling list_files, though the naming implies the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like list_files or inspect_file. No mention of prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesB
List files directly inside a folder within MCP_FILE_OPS_ROOT.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It mentions 'directly inside a folder' implying non-recursive listing, but fails to disclose behavior for invalid paths, permissions, or any side effects (though none expected).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. However, it could incorporate more detail without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, list operation) and existence of an output schema, the description provides the core functionality but omits edge cases like listing a file path or special folder names. It is minimally adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'path' with a default of '.', and 0% schema description coverage. The description adds minimal meaning beyond 'folder path', not specifying format, restrictions, or relationship to MCP_FILE_OPS_ROOT.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'files directly inside a folder within MCP_FILE_OPS_ROOT', distinguishing it from siblings like 'list_directories' which lists directories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'list_directories' or 'read_file'. There is no mention of when not to use it or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_directoryC
Create a directory inside MCP_FILE_OPS_ROOT.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only states the basic action but lacks details on side effects, permissions, return value, or error conditions. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no waste, but it is too minimal to be highly valuable. It could be slightly expanded without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and a simple tool, the description should at least explain what the path means, whether it creates parent directories, and what the output schema contains. It falls short.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no meaning beyond the schema for the single parameter 'path'. With 0% schema description coverage, the user gets no help on expected format, constraints, or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a directory') and the resource ('inside MCP_FILE_OPS_ROOT'). It is specific and distinguishes from sibling tools like list_directories or move_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. No mention of prerequisites, such as whether parent directories need to exist or if the path should be absolute/relative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_fileC
Move a file from source_path to destination_path inside MCP_FILE_OPS_ROOT.
| Name | Required | Description | Default |
|---|---|---|---|
| source_path | Yes | ||
| destination_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states 'move' but does not disclose whether overwrite occurs, permission changes, or error handling (e.g., if destination exists).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence efficiently conveys core purpose. Could be slightly more structured (e.g., separate line for behavior), but overall concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple (2 params, no nested objects). Description covers basic action but lacks safety info (overwrite behavior) and output details. Adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description adds no parameter-level details beyond the field names, which are already self-evident from the tool name. For a simple tool, this is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'move', resource 'file', and specifies the scope 'inside MCP_FILE_OPS_ROOT'. This distinguishes it from sibling tools like 'move_files_by_glob'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. No prerequisites (e.g., source must exist, destination must not exist) are mentioned, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_files_by_globC
Move all files matching a glob pattern from source_dir into destination_dir.
| Name | Required | Description | Default |
|---|---|---|---|
| source_dir | Yes | ||
| pattern | Yes | ||
| destination_dir | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states basic operation. It does not disclose important behavior like conflict handling, directory creation, glob syntax, or partial move risks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single efficient sentence, no unnecessary words. Could include slightly more detail without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 3 parameters and no annotations, the description omits behavior like overwrite policy, return value (despite output schema existing), and prerequisite checks. Incomplete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage, and the description merely names the parameters without adding constraints, formats, or examples. 'source_dir', 'pattern', 'destination_dir' are not explained beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (move), the resource (files matching a glob pattern), and the source/destination. It effectively distinguishes from sibling 'move_file' which handles single files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'move_file' or other file operations. No scenarios or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_dbA
Run a read-only SELECT query against local SQLite demo.db.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses read-only behavior and the SQL query nature. It does not detail error handling or query restrictions, but the core behavioral trait is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that directly states the tool's function with no unnecessary words or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the basic purpose and the output schema exists, it lacks details on SQL restrictions, parameter specifics, and usage context. Adequate for a simple tool but gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain the 'sql' parameter beyond the schema's type string. It fails to specify valid SQL syntax, allowed statements, or constraints like single-statement limitation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it runs a read-only SELECT query against a specific local SQLite database, distinguishing it from sibling tools focused on file operations, weather, or image analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions 'read-only SELECT query', implying it should not be used for writes. However, it does not provide explicit when-to-use or when-not-to-use guidance relative to alternatives, though siblings are unrelated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileC
Read a UTF-8 text file inside MCP_FILE_OPS_ROOT.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so full burden falls on description. It only states 'read' without disclosing behavior on non-UTF-8 files, missing files, or permissions. Significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded, and contains no redundancy. However, it is overly terse, sacrificing completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (not shown here), the description needn't detail returns, but it lacks information on error conditions, encoding specifics, or performance. Adequate for a simple tool but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It only notes the file is inside MCP_FILE_OPS_ROOT but does not clarify path format, relative vs absolute, or allowed special characters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (read), the resource (UTF-8 text file), and the scope (inside MCP_FILE_OPS_ROOT). It distinguishes from sibling tools like inspect_file and list_files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as inspect_file or list_files. Agent receives no context about appropriate use cases or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
weatherB
Return current weather for a city using wttr.in.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It only states the basic function, omitting details like error handling, data freshness, rate limits, or reliance on an external API.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence of 10 words, very concise. However, it may be too brief given the lack of other documentation; a slightly longer description could improve clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description is minimally adequate. However, it fails to provide usage guidelines or behavioral context, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'city' has no schema description (0% coverage) and the description adds no extra meaning, such as acceptable formats, examples, or whether coordinates are accepted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns current weather for a city using a specific service (wttr.in). It distinguishes itself from sibling tools which handle files and databases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool or alternatives. While no other weather tools exist, the description lacks any context about prerequisites or appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.1.0- First observed
analyze_image_with_openai - First observed
inspect_file - First observed
list_directories - First observed
list_files - First observed
make_directory - First observed
move_file - First observed
move_files_by_glob - First observed
query_db - First observed
read_file - First observed
weather
TDQS
Scored across 10 tools
Most tools have distinct purposes, but there is some overlap between inspect_file and read_file (both provide file content), and move_file vs move_files_by_glob are similar in name and action.
Majority follow verb_noun pattern with underscores, but 'weather' is a lone noun and 'analyze_image_with_openai' is verbose and breaks the pattern.
10 tools is a reasonable number, but the server covers multiple unrelated domains (files, DB, weather, image), making it feel a bit scattered.
File operations lack delete/copy, DB only has read-only query, weather and image analysis are single-tool services. The surface is incomplete for any single domain.
Maintenance
Related MCP Connectors
An MCP server for weather information by @kulybaba
An MCP server for weather information by @kulybaba
Related MCP Servers
- FlicenseBqualityDmaintenanceA demonstration server showcasing MCP capabilities with basic tools including addition calculations and weather API integration for fetching city weather data.2-
- FlicenseCqualityDmaintenanceAn experimental MCP server that provides weather information tools, including temperature lookup via wttr.io, along with note-taking capabilities for learning MCP server development with GitHub Copilot.3-
- FlicenseNot gradedqualityDmaintenanceA demo MCP server that provides AI assistants access to live US weather data via the free National Weather Service API, offering forecast and alert tools without requiring an API key.-
- FlicenseNot gradedqualityDmaintenanceA lightweight MCP server providing tools for adding integers, getting current time, and fetching weather forecasts via wttr.in.-