You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix enhance title param, repair test.sh, pin dependencies
Three pre-existing issues found while testing #2:
enhance's `title` parameter never reached clients. FastMCP's schema
compressor treats the properties map as a schema node when it contains a
`type` key, then strips the sibling `title` as a JSON Schema annotation.
The parameter is now `job_title` and is still sent upstream as `title`,
so the Diffbot KG request is unchanged.
test.sh silently exited 0 no matter what. It posted to /mcp/, which now
307-redirects to /mcp, and curl was not following redirects, so every run
produced no output and looked like a pass. It now follows redirects, fails
when no session is returned or when the tool call comes back isError, and
takes URL/TOKEN overrides. Also adds the missing shebang.
Dependencies were unpinned within their major, and every push to main
rebuilds the image and redeploys, so an untested fastmcp or aiohttp
release could reach production on an unrelated commit. Both are pinned to
the patch level of the versions verified here. requires-python was also
wrong: both dependencies need 3.10 or newer, not 3.8.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Summary: A Diffbot MCP server with a variety of helpful web data handling tools for your agent or LLM pipeline.
5
+
Requires-Python: >=3.10
6
+
Description-Content-Type: text/markdown
7
+
License-File: LICENSE
8
+
Requires-Dist: fastmcp~=2.14.7
9
+
Requires-Dist: aiohttp~=3.14.3
10
+
Dynamic: license-file
11
+
12
+
# Diffbot MCP Server
13
+
A Diffbot MCP server with a variety of helpful web data handling tools for your agent or LLM pipeline.
14
+
15
+
**What is Diffbot?**
16
+
Diffbot is a small research company building AI that structure the web. Our products connect apps to the structured web automatically, like an API for all of the public web.
17
+
18
+
## Tools
19
+
20
+
#### 🧬 extract
21
+
**Web fetch tool alternative.** Conventional fetch tools return either 500k+ tokens of HTML or a markdown approximation of the page's content. Extract classifies the page it is fetching and extracts content into a meaningful and consistent JSON structure. Responses are optimized for minimal token usage while maintaining data fidelity. Powered by [Diffbot Extract API](https://docs.diffbot.com/docs/getting-started-with-diffbot-extract).
22
+
23
+
#### 🔎 search_web
24
+
**Web search tool that ranks accuracy, not popularity.** Built on Diffbot's first party web index. Ranking model heavily favors primary sources over secondary sources (e.g. press release > news piece on said press release). Returns markdown formatted content chunks for source citation. Optimized token management built-in.
25
+
26
+
#### 🪄 enhance
27
+
**Web lookup tool for organizations and people.** Unlike web search, `enhance` will return structured data from the Diffbot Knowledge Graph on an organization or person (by name, url, or other acceptable input). Helpful for verifying facts, market research, or sales intelligence workflows.
28
+
29
+
## Authentication
30
+
A free Diffbot token is required for tool use. [Get one here.](https://app.diffbot.com/get-started)
31
+
32
+
## Get Started
33
+
34
+
### Quick Start
35
+
36
+
The easiest way to get started is to connect your MCP client directly to the remote MCP server hosted by Diffbot.
You can now run the server with `python3 diffbot_mcp_server.py`, or skip this step if you will be setting this server up with an MCP client.
57
+
58
+
#### (Optional) Docker Install
59
+
60
+
Build the image
61
+
```bash
62
+
docker build -t diffbot-mcp .
63
+
```
64
+
65
+
### Setup with MCP Clients
66
+
67
+
To setup Claude Desktop, follow the [official installation guide](https://modelcontextprotocol.io/docs/develop/connect-local-servers) and use this example `claude_desktop_config.json` configuration (replace variables as needed).
68
+
69
+
This standard config works with most IDEs and environments.
This project is built and maintained by [@jeromechoo](https://github.com/jeromechoo). For support, file an issue and he'll get back to you as soon as he can. For faster answers, write to [sales@diffbot.com](mailto:sales@diffbot.com) 😜.
Copy file name to clipboardExpand all lines: diffbot_mcp_server.py
+7-3Lines changed: 7 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -95,7 +95,11 @@ async def enhance(
95
95
location: Annotated[Optional[str], "The location (e.g. Houston, Texas, United States) of the entity to look up. Do not specify this key unless a value is provided."] =None,
96
96
email: Annotated[Optional[List[str]], "The email(s) of the entity to look up. Can only be used with type 'Person'. Do not specify this key unless a value is provided."] =None,
97
97
employer: Annotated[Optional[str], "The employer name of the entity to look up. Can only be used with type 'Person'. Do not specify this key unless a value is provided."] =None,
98
-
title: Annotated[Optional[str], "The current position/title/role of the entity to look up. Can only be used with type 'Person'. Do not specify this key unless a value is provided."] =None,
98
+
# Named job_title rather than title: a parameter named "title" alongside one
99
+
# named "type" is stripped from the advertised tool schema, because the schema
100
+
# compressor reads the properties map as a schema node and treats the sibling
101
+
# "title" as the JSON Schema annotation. Sent upstream as "title" regardless.
102
+
job_title: Annotated[Optional[str], "The current position/title/role of the entity to look up. Can only be used with type 'Person'. Do not specify this key unless a value is provided."] =None,
99
103
school: Annotated[Optional[str], "Any previous educational institution associated with the entity to look up. Can only be used with type 'Person'. Do not specify this key unless a value is provided."] =None
0 commit comments