Appendix
MCP Client Script (Python)
import argparse
import asyncio
import json
from fastmcp import Client
from fastmcp.client.auth import BearerAuth
async def main():
parser = argparse.ArgumentParser(description="Generic MCP Test Client")
parser.add_argument("--mcp_server", required=True, help="URL (http/sse) or local server python script path(stdio)")
parser.add_argument("--mcp_auth_token", help="Optional bearer token for authentication")
subparsers = parser.add_subparsers(dest="action_cmd", required=True)
tool_parser = subparsers.add_parser("tools")
tool_parser.add_argument("--list", action="store_true")
tool_parser.add_argument("--tool_cmd")
tool_parser.add_argument("--tool_args", default="{}")
res_parser = subparsers.add_parser("resources")
res_parser.add_argument("--list", action="store_true")
res_parser.add_argument("--resource_uri")
prompt_parser = subparsers.add_parser("prompts")
prompt_parser.add_argument("--list", action="store_true")
prompt_parser.add_argument("--prompt_name")
prompt_parser.add_argument("--prompt_args", default="{}")
args = parser.parse_args()
if args.mcp_server.startswith(("http://", "https://")):
transport_type = "sse" if "/sse" in args.mcp_server else "http"
server_config = {
"transport": transport_type,
"url": args.mcp_server
}
if args.mcp_auth_token:
server_config["auth"] = BearerAuth(token=f"{args.mcp_auth_token}")
else:
server_config = {
"transport": "stdio",
"command": "node" if args.mcp_server.endswith(".js") else "python",
"args": [args.mcp_server]
}
config = {"mcpServers": {"target_server": server_config}}
client = Client(config)
async with client:
if args.action_cmd == "tools":
if args.list:
tools = await client.list_tools()
print(f"Available Tools: {tools}")
elif args.tool_cmd:
result = await client.call_tool(args.tool_cmd, json.loads(args.tool_args))
print(f"Tool Result: {result}")
elif args.action_cmd == "resources":
if args.list:
resources = await client.list_resources()
print(f"Available Resources: {resources}")
elif args.resource_uri:
print(await client.read_resource(args.resource_uri))
elif args.action_cmd == "prompts":
if args.list:
prompts = await client.list_prompts()
print(f"Available Prompts: {prompts}")
elif args.prompt_name:
messages = await client.get_prompt(args.prompt_name, json.loads(args.prompt_args))
print(messages)
if __name__ == "__main__":
asyncio.run(main())MCP File Server (HTTP) — Python
MCP File Server (STDIO) — Python
MCP Client Script — JavaScript
MCP File Server — JavaScript
MCP File Server (STDIO) — JavaScript
package.json - Javascript
Last updated