About
PyMCP is a Python-based MCP server template built with FastMCP that includes working example tools and provides a complete foundation for developing new MCP servers. It comes pre-configured with testing, security scanning, and CI/CD workflows to accelerate server development. Key features of PyMCP: - Ready-to-use template structure for FastMCP-based server development in Python 3.12+ - Working example tools including greetings, password generation with complexity requirements, and web search via DuckDuckGo (DDGS) - Pre-configured development environment with pytest, CodeQL security analysis, and OpenSSF Scorecard integration - Inspired by the official TypeScript everything MCP server for consistency across language implementations
Tools 6
greetGreet the caller with a quintessential Hello World message.
generate_passwordGenerate a random password with specified length, optionally including special characters.
text_web_searchPerform a text web search using the provided query using DDGS.
permutationsCalculate the number of ways to choose k items from n items without repetition and with order.
pirate_summarySummarise the given text in a pirate style. This is an example of a tool that can use LLM sampling to generate a summary.
vonmises_randomGenerate a random number from the von Mises distribution. This is an example of a tool that uses elicitation to obtain the required parameter kappa (κ).
README
[](https://www.python.org/downloads/release/python-3120/) [](https://github.com/anirbanbasu/pymcp/actions/workflows/uv-pytest-coverage.yml) [](https://pypi.org/project/pymcp-template/#history) [](https://github.com/anirbanbasu/pymcp/actions/workflows/codeql.yml) [](https://scorecard.dev/viewer/?uri=github.com/anirbanbasu/pymcp)
Primarily to be used as a template repository for developing MCP servers with FastMCP in Python, PyMCP is somewhat inspired by the official everything MCP server in Typescript.
Components
The following components are available on this MCP server.
Tools
1. greet
- Greets the caller with a quintessential Hello World message.
- Input(s)
- name: _string_ (_optional_): The name to greet. Default value is none.
- Output(s)
- TextContent with a UTC time-stamped greeting.
2. generate_password
- Generates a random password with specified length, optionally including special characters and conforming to the complexity requirements of at least one lowercase letter, one uppercase letter, and two digits. If special characters are included, it will also contain at least one such character.
- Input(s)
- length: _integer_: The length of the generated password. The value must be an integer between 8 and 64, both inclusive.
- use_special_chars: _boolean_ (_optional_): A flag to indicate whether the password should include special characters. Default value is False.
- Output(s)
- TextContent with the generated password.
3. text_web_search
- Searches the web with a text query using the Dux Distributed Global Search (DDGS).
- Input(s)
- query: _string_: The search query to fetch results for. It should be a non-empty string.
- region: _string_ (_optional_): Two letter country code followed by a hyphen and then by two letter language code, e.g., uk-en or us-en. Default value is uk-en.
- max_results: _integer_ (_optional_): Optional maximum number of results to be fetched. Default value is 10.
- pages: _integer_ (_optional_): Optional number of pages to spread the results over. Default value is 1.
- Environment variable(s)
- DDGS_PROXY: _string_ (_optional_): Optional proxy server to use for egress web search requests.
- Output(s)
- TextContent with a list of dictionaries with search results.
4. permutations
- Calculates the number of ways to choose $k$ items from $n$ items without repetition and with order. If $k$ is not provided, it defaults to $n$.
- Input(s)
- n: _integer_: The number of items to choose from. This should be a non-zero, positive integer.
- k: _integer_ (_optional_): The number of items to choose. Default value is the value of n.
- Output(s)
- TextContent with number of ways to choose $k$ items from $n$, essentially ${}^{n}P_{k}$.
5. run_python_code
- Runs arbitrary Python code in a secure and fast interpreter using Pydantic Monty. Note that Pydantic Monty is experimental and Python language support is partial as of February 8, 2026.
- Input(s)
- code: _string_: The Python code to run.
- inputs: _dict[str, Any]_ (_optional_): A dictionary of input values for the Python code. Default value is None.
- script_name: _str_ (_optional_): The name of the script used in traceback and error messages. Default value is main.py.
- check_types: _bool_ (_optional_): A flag to indicate whether to check types. Default value is True.
- type_definitions: _str_ (_optional_): Type definitions to be used for type checking. Default value is None.
- Output(s)
- TextContent with the output, if any, of the Python code.
6. pirate_summary
- Summarises the given text in a pirate style. _This tool uses LLM client sampling. Hence, a sampling handler must exist on the client-side._
- Input(s)
- text: _string_: The text to summarise.
- Output(s)
- TextContent with the summary of text in pirate speak.
7. vonmises_random
- Generates a
Related MCP Servers
AI Research Assistant
hamid-vakilzadeh
AI Research Assistant provides comprehensive access to millions of academic papers through the Semantic Scholar and arXiv databases. This MCP server enables AI coding assistants to perform intelligent literature searches, citation network analysis, and paper content extraction without requiring an API key. Key features include: - Advanced paper search with multi-filter support by year ranges, citation thresholds, field of study, and publication type - Title matching with confidence scoring for finding specific papers - Batch operations supporting up to 500 papers per request - Citation analysis and network exploration for understanding research relationships - Full-text PDF extraction from arXiv and Wiley open-access content (Wiley TDM token required for institutional access) - Rate limits of 100 requests per 5 minutes with options to request higher limits through Semantic Scholar
Linkup
LinkupPlatform
Linkup is a real-time web search and content extraction service that enables AI assistants to search the web and retrieve information from trusted sources. It provides source-backed answers with citations, making it ideal for fact-checking, news gathering, and research tasks. Key features of Linkup: - Real-time web search using natural language queries to find current information, news, and data - Page fetching to extract and read content from any webpage URL - Search depth modes: Standard for direct-answer queries and Deep for complex research across multiple sources - Source-backed results with citations and context from relevant, trustworthy websites - JavaScript rendering support for accessing dynamic content on JavaScript-heavy pages
Saju Insights
hjsh200219
Saju Insights provides personalized Korean traditional Four Pillars of Destiny (Saju) fortune-telling based on birth data. It calculates destiny charts using the eight characters (four heavenly stems and four earthly branches) derived from birth year, month, day, and hour. Key capabilities include: - Birth chart calculation with automatic True Solar Time adjustment (Jintaeyangsi -30min correction) - Fortune analysis covering personality, career, wealth, health, and love prospects - Relationship compatibility analysis comparing two people's Saju charts - 10-year luck cycle (Daewon) predictions for long-term planning - Yongsin (favorable element) guidance on lucky colors, directions, and career paths - Lunar-solar calendar conversion supporting 1900-2200 with leap month handling - Daily fortune readings and seasonal power calculations - Multiple interpretation schools including Ziping, DTS, and modern methodologies