Searches the web and reads links
This is a Model Context Protocol (MCP) server project.
- Calls the Bing Search API with the provided query.
- Processes each URL from the search results:
- Gets the content of the page
- Converts it to Markdown using Markitdown
- Parses out links separately. Caches a unique hash to associate with each link.
- (Optional, on by default) Uses sampling to select the most important links to return.
- (Optional, on by default) Filters out the Markdown content to the most important parts.
- Returns the processed content and links as a LLM-friendly string.
- Takes a list of hashes (which originate from the
search
tool). - For each hash gets the corresponding URL from the local cache.
- Then does the same processing as
search
for each URL and returns a similar LLM-friendly string.
Simply run:
make
To create the virtual environment and install dependencies.
Create a .env
file based on .env.sample
and populate it with:
BING_SEARCH_API_KEY
ASSISTANT__AZURE_OPENAI_ENDPOINT
- This is necessary if you want to post process web content.
Use the VSCode launch configuration, or run manually:
Defaults to stdio transport:
uv run mcp-server-bing-search
For SSE transport:
uv run mcp-server-bing-search --transport sse --port 6030
The SSE URL is:
http://127.0.0.1:6030/sse
To use this MCP server in your setup, consider the following configuration:
{
"mcpServers": {
"mcp-server-bing-search": {
"command": "uv",
"args": ["run", "-m", "mcp_server_bing_search.start"]
}
}
}
{
"mcpServers": {
"mcp-server-bing-search": {
"command": "http://127.0.0.1:6030/sse",
"args": []
}
}
}